=0?l:u;r.length&&(a=[o,s])}return a}});var bU=y((XFe,yU)=>{var mge=sU(),pU=fU();yU.exports=yge;var dU="\0SLASH"+Math.random()+"\0",hU="\0OPEN"+Math.random()+"\0",UC="\0CLOSE"+Math.random()+"\0",mU="\0COMMA"+Math.random()+"\0",gU="\0PERIOD"+Math.random()+"\0";function WC(i){return parseInt(i,10)==i?parseInt(i,10):i.charCodeAt(0)}function gge(i){return i.split("\\\\").join(dU).split("\\{").join(hU).split("\\}").join(UC).split("\\,").join(mU).split("\\.").join(gU)}function vge(i){return i.split(dU).join("\\").split(hU).join("{").split(UC).join("}").split(mU).join(",").split(gU).join(".")}function vU(i){if(!i)return[""];var e=[],t=pU("{","}",i);if(!t)return i.split(",");var r=t.pre,n=t.body,o=t.post,s=r.split(",");s[s.length-1]+="{"+n+"}";var a=vU(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function yge(i){return i?(i.substr(0,2)==="{}"&&(i="\\{\\}"+i.substr(2)),Zu(gge(i),!0).map(vge)):[]}function bge(i){return"{"+i+"}"}function wge(i){return/^-?0\d/.test(i)}function Dge(i,e){return i<=e}function xge(i,e){return i>=e}function Zu(i,e){var t=[],r=pU("{","}",i);if(!r||/\$$/.test(r.pre))return[i];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),s=n||o,a=r.body.indexOf(",")>=0;if(!s&&!a)return r.post.match(/,.*\}/)?(i=r.pre+"{"+r.body+UC+r.post,Zu(i)):[i];var l;if(s)l=r.body.split(/\.\./);else if(l=vU(r.body),l.length===1&&(l=Zu(l[0],!1).map(bge),l.length===1)){var c=r.post.length?Zu(r.post,!1):[""];return c.map(function(F){return r.pre+l[0]+F})}var u=r.pre,c=r.post.length?Zu(r.post,!1):[""],f;if(s){var p=WC(l[0]),d=WC(l[1]),h=Math.max(l[0].length,l[1].length),m=l.length==3?Math.abs(WC(l[2])):1,w=Dge,v=d0){var A=new Array(P+1).join("0");x<0?S="-"+A+S.slice(1):S=A+S}}f.push(S)}}else f=mge(l,function(q){return Zu(q,!1)});for(var R=0;R{EU.exports=rn;rn.Minimatch=ar;var pd={sep:"/"};try{pd=require("path")}catch(i){}var HC=rn.GLOBSTAR=ar.GLOBSTAR={},Sge=bU(),wU={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},zC="[^/]",GC=zC+"*?",Cge="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Ege="(?:(?!(?:\\/|^)\\.).)*?",DU=_ge("().*{}+?[]^$\\!");function _ge(i){return i.split("").reduce(function(e,t){return e[t]=!0,e},{})}var xU=/\/+/;rn.filter=Tge;function Tge(i,e){return e=e||{},function(t,r,n){return rn(t,i,e)}}function SU(i,e){i=i||{},e=e||{};var t={};return Object.keys(e).forEach(function(r){t[r]=e[r]}),Object.keys(i).forEach(function(r){t[r]=i[r]}),t}rn.defaults=function(i){if(!i||!Object.keys(i).length)return rn;var e=rn,t=function(n,o,s){return e.minimatch(n,o,SU(i,s))};return t.Minimatch=function(n,o){return new e.Minimatch(n,SU(i,o))},t};ar.defaults=function(i){return!i||!Object.keys(i).length?ar:rn.defaults(i).Minimatch};function rn(i,e,t){if(typeof e!="string")throw new TypeError("glob pattern string required");return t||(t={}),!t.nocomment&&e.charAt(0)==="#"?!1:e.trim()===""?i==="":new ar(e,t).match(i)}function ar(i,e){if(!(this instanceof ar))return new ar(i,e);if(typeof i!="string")throw new TypeError("glob pattern string required");e||(e={}),i=i.trim(),pd.sep!=="/"&&(i=i.split(pd.sep).join("/")),this.options=e,this.set=[],this.pattern=i,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}ar.prototype.debug=function(){};ar.prototype.make=Pge;function Pge(){if(!this._made){var i=this.pattern,e=this.options;if(!e.nocomment&&i.charAt(0)==="#"){this.comment=!0;return}if(!i){this.empty=!0;return}this.parseNegate();var t=this.globSet=this.braceExpand();e.debug&&(this.debug=console.error),this.debug(this.pattern,t),t=this.globParts=t.map(function(r){return r.split(xU)}),this.debug(this.pattern,t),t=t.map(function(r,n,o){return r.map(this.parse,this)},this),this.debug(this.pattern,t),t=t.filter(function(r){return r.indexOf(!1)===-1}),this.debug(this.pattern,t),this.set=t}}ar.prototype.parseNegate=Rge;function Rge(){var i=this.pattern,e=!1,t=this.options,r=0;if(!t.nonegate){for(var n=0,o=i.length;n1024*64)throw new TypeError("pattern is too long");var t=this.options;if(!t.noglobstar&&i==="**")return HC;if(i==="")return"";var r="",n=!!t.nocase,o=!1,s=[],a=[],l,u=!1,c=-1,f=-1,p=i.charAt(0)==="."?"":t.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",d=this;function h(){if(l){switch(l){case"*":r+=GC,n=!0;break;case"?":r+=zC,n=!0;break;default:r+="\\"+l;break}d.debug("clearStateChar %j %j",l,r),l=!1}}for(var m=0,w=i.length,v;m-1;M--){var L=a[M],q=r.slice(0,L.reStart),F=r.slice(L.reStart,L.reEnd-8),O=r.slice(L.reEnd-8,L.reEnd),U=r.slice(L.reEnd);O+=U;var X=q.split("(").length-1,de=U;for(m=0;m=0&&(n=i[o],!n);o--);for(o=0;o>> no match, partial?`,i,c,e,f),c===s))}var d;if(typeof l=="string"?(r.nocase?d=u.toLowerCase()===l.toLowerCase():d=u===l,this.debug("string match",l,u,d)):(d=u.match(l),this.debug("pattern match",l,u,d)),!d)return!1}if(n===s&&o===a)return!0;if(n===s)return t;if(o===a){var h=n===s-1&&i[n]==="";return h}throw new Error("wtf?")};function Oge(i){return i.replace(/\\(.)/g,"$1")}function Age(i){return i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});async function $t(i){let e=null;try{e=await nn.default.stat(i)}catch(t){}return e}function TU(i,e){return new Promise((t,r)=>{nn.default.rename(i,e,n=>{if(n)return r(n);t()})})}function dd(i,e,t,r=!1,n=!0){let o=VC.default.homedir(),s=hd(i);if(pt(s,o,!0))return null;if(n&&t&&pt(t,s,!0)&&Rs(t,e))return t;let a=s.split(Ri.default.sep);if(r){for(;a.length>0;){let l=a.join(Ri.default.sep);if(l==o)break;if(l!=o&&Rs(l,e))return l;a.pop()}return null}else{let l=[a.shift()];for(let u of a){l.push(u);let c=l.join(Ri.default.sep);if(c!=o&&Rs(c,e))return c}return null}}function Rs(i,e){try{let t=nn.default.readdirSync(i);for(let r of e)if(r.includes("*")?_U.default.match(t,r,{nobrace:!0,noext:!0,nocomment:!0,nonegate:!0,dot:!0}).length!==0:t.includes(r))return!0}catch(t){}return!1}function Qu(i,e){let t=Ri.default.parse(e).root,r=Array.isArray(i)?i:[i];for(;e&&e!==t;){if(Rs(e,r))for(let o of r){let s=Ri.default.join(e,o);if(nn.default.existsSync(s))return s}e=Ri.default.dirname(e)}return null}function ec(i,e){return new Promise((t,r)=>{nn.default.readFile(i,e,(n,o)=>{n&&r(n),t(o)})})}function PU(i){let e,t=0;return new Promise((r,n)=>{nn.default.createReadStream(i).on("error",o=>n(o)).on("data",o=>{for(e=0;er(t))})}function RU(i,e,t){if(!nn.default.existsSync(i))return Promise.reject(new Error(`file does not exist: ${i}`));let r=[],n=KC.default.createInterface({input:nn.default.createReadStream(i,{encoding:"utf8"}),crlfDelay:Infinity,terminal:!1}),o=0;return new Promise((s,a)=>{n.on("line",l=>{o==0&&l.startsWith("\uFEFF")&&(l=l.slice(1)),o>=e&&o<=t&&r.push(l),o==t&&n.close(),o=o+1}),n.on("close",()=>{s(r)}),n.on("error",a)})}function kU(i,e){if(!nn.default.existsSync(i))return Promise.reject(new Error(`file does not exist: ${i}`));let t=KC.default.createInterface({input:nn.default.createReadStream(i,{encoding:"utf8"}),crlfDelay:Infinity,terminal:!1}),r=0;return new Promise((n,o)=>{t.on("line",s=>{if(r==e){r==0&&s.startsWith("\uFEFF")&&(s=s.slice(1)),t.close(),n(s);return}r=r+1}),t.on("error",o)})}async function IU(i,e){await nn.default.writeFile(i,e,{encoding:"utf8"})}function wv(i){return i.startsWith("file:")}function pt(i,e,t=!1){let r=hd(Ri.default.resolve(Ri.default.normalize(i))),n=hd(Ri.default.resolve(Ri.default.normalize(e)));return r=="//"&&(r="/"),r==n?!!t:r.endsWith(Ri.default.sep)?n.startsWith(r):n.startsWith(r)&&n[r.length]==Ri.default.sep}function hd(i){return VC.default.platform()!="win32"||i[1]!=":"?i:i[0].toUpperCase()+i.slice(1)}var Lge,nn,Mge,VC,Ri,KC,qge,_U,QFe,Vt=I(()=>{Lge=E(require("child_process")),nn=E(bn()),Mge=E(require("net")),VC=E(require("os")),Ri=E(require("path")),KC=E(require("readline")),qge=E(require("util")),_U=E(Ps()),QFe=W()("util-fs")});function XC(i,e){if(e){if(i&&i.hasOwnProperty(e))return i[e];let t=e.split("."),r=i;for(let n=0;r&&n{JC=E(require("os")),ks=E(require("fs")),Fn=E(require("path")),YC=E(G());Ze();Pi();Gr();ye();nU();jC();BC();Yi();Vt();Nge=W()("configurations");Is=class{constructor(e,t){this.userConfigFile=e;this._proxy=t;this._errorItems=[];this._folderConfigurations=new Map;this._onError=new YC.Emitter;this._onChange=new YC.Emitter;this.disposables=[];this.onError=this._onError.event;this.onDidChange=this._onChange.event;let r=this.parseContentFromFile(e),n={defaults:rU(),user:r,workspace:{contents:{}}};this._configuration=Is.parse(n),this.watchFile(e,Nt.User);let o=Fn.default.join(process.cwd(),`.vim/${Tn}`);o!=e&&ks.default.existsSync(o)&&this.addFolderFile(o)}parseContentFromFile(e){if(!e)return{contents:{}};let t=j.file(e).toString();this._errorItems=this._errorItems.filter(n=>n.location.uri!=t);let r=Qj(e,n=>{this._errorItems.push(...n)});return this._onError.fire(this._errorItems),r}get errorItems(){return this._errorItems}get foldConfigurations(){return this._folderConfigurations}extendsDefaults(e){let{defaults:t}=this._configuration,{contents:r}=t;r=Oo(r),Object.keys(e).forEach(o=>{fd(r,o,e[o],s=>{Nge.error(s)})});let n={defaults:{contents:r},user:this._configuration.user,workspace:this._configuration.workspace};this._configuration=Is.parse(n)}updateUserConfig(e){if(!e||Object.keys(e).length==0)return;let{user:t}=this._configuration,r=t.clone();Object.keys(e).forEach(n=>{let o=e[n];if(o===void 0)r.removeValue(n);else if(zt(o))for(let s of Object.keys(o))r.setValue(`${n}.${s}`,o[s]);else r.setValue(n,o)}),this.changeConfiguration(Nt.User,r)}get defaults(){return this._configuration.defaults}get user(){return this._configuration.user}get workspace(){return this._configuration.workspace}addFolderFile(e){let{_folderConfigurations:t}=this;if(t.has(e)||Fn.default.resolve(e,"../..")==JC.default.homedir())return;let r=this.parseContentFromFile(e);this.watchFile(e,Nt.Workspace),this.changeConfiguration(Nt.Workspace,r,e)}watchFile(e,t){if(!ks.default.existsSync(e)||global.hasOwnProperty("__TEST__"))return;let r=Au(e,()=>{let n=this.parseContentFromFile(e);this.changeConfiguration(t,n,e)});this.disposables.push(r)}changeConfiguration(e,t,r){let{defaults:n,user:o,workspace:s}=this._configuration,{workspaceConfigFile:a}=this,l={defaults:e==Nt.Global?t:n,user:e==Nt.User?t:o,workspace:e==Nt.Workspace?t:s},u=Is.parse(l),c=iU(this._configuration.getValue(),u.getValue());e==Nt.Workspace&&r&&(this._folderConfigurations.set(r,new li(t.contents)),this.workspaceConfigFile=r),c.length!=0&&(this._configuration=u,this._onChange.fire({affectsConfiguration:(f,p)=>{if(!p||e!=Nt.Workspace)return c.includes(f);let d=j.parse(p);if(d.scheme!=="file")return c.includes(f);let h=d.fsPath,m=a?Fn.default.resolve(a,"../.."):"";return r&&!pt(m,h,!0)&&!pt(Fn.default.resolve(r,"../.."),h)?!1:c.includes(f)}}))}setFolderConfiguration(e){let t=j.parse(e);if(t.scheme!="file")return;let r=t.fsPath;for(let[n,o]of this.foldConfigurations){let s=Fn.default.resolve(n,"../..");if(pt(s,r,!0)&&this.workspaceConfigFile!=n){this.changeConfiguration(Nt.Workspace,o,n);break}}}hasFolderConfiguration(e){let{folders:t}=this;return t.findIndex(r=>pt(r,e,!0))!==-1}getConfigFile(e){return e==Nt.Global?null:e==Nt.User?this.userConfigFile:this.workspaceConfigFile}get folders(){let e=[],{_folderConfigurations:t}=this;for(let r of t.keys())e.push(Fn.default.resolve(r,"../.."));return e}get configuration(){return this._configuration}getConfiguration(e,t){let r;if(t){let{defaults:s,user:a}=this._configuration;r=new yv(s,a,this.getFolderConfiguration(t))}else r=this._configuration;let n=Object.freeze(XC(r.getValue(null),e)),o={has(s){return typeof XC(n,s)!="undefined"},get:(s,a)=>{let l=XC(n,s);return l==null?a:l},update:(s,a,l=!1)=>{let u=e?`${e}.${s}`:s,c=l?Nt.User:Nt.Workspace,f=c==Nt.User?this.user.clone():this.workspace.clone();if(a==null?f.removeValue(u):f.setValue(u,a),c==Nt.Workspace&&!this.workspaceConfigFile&&this._proxy){let p=this.workspaceConfigFile=this._proxy.workspaceConfigFile;if(!ks.default.existsSync(p)){let d=Fn.default.dirname(p);ks.default.existsSync(d)||ks.default.mkdirSync(d),ks.default.writeFileSync(p,"{}",{encoding:"utf8"})}}this.changeConfiguration(c,f,c==Nt.Workspace?this.workspaceConfigFile:this.userConfigFile),this._proxy&&!global.hasOwnProperty("__TEST__")&&(a==null?this._proxy.$removeConfigurationOption(c,u):this._proxy.$updateConfigurationOption(c,u,a))},inspect:s=>{s=e?`${e}.${s}`:s;let a=this._configuration.inspect(s);if(a)return{key:s,defaultValue:a.default,globalValue:a.user,workspaceValue:a.workspace}}};return Object.defineProperty(o,"has",{enumerable:!1}),Object.defineProperty(o,"get",{enumerable:!1}),Object.defineProperty(o,"update",{enumerable:!1}),Object.defineProperty(o,"inspect",{enumerable:!1}),typeof n=="object"&&AS(o,n,!1),N2(o)}getFolderConfiguration(e){let t=j.parse(e);if(t.scheme!="file")return new li;let r=t.fsPath;for(let[n,o]of this.foldConfigurations){let s=Fn.default.resolve(n,"../..");if(pt(s,r,!0))return o}return new li}checkFolderConfiguration(e){let t=j.parse(e);if(t.scheme!="file")return;let r=Fn.default.dirname(t.fsPath);if(this.hasFolderConfiguration(r))this.setFolderConfiguration(e);else{let n=Qu(".vim",r);if(n&&n!=JC.default.homedir()){let o=Fn.default.join(n,Tn);ks.default.existsSync(o)&&this.addFolderFile(o)}}}static parse(e){let t=new li(e.defaults.contents),r=new li(e.user.contents),n=new li(e.workspace.contents);return new yv(t,r,n,new li)}dispose(){J(this.disposables)}}});var ZC,QC,SOe,Dv,OU=I(()=>{ZC=E(require("fs"));ud();QC=E(require("path"));Ze();ye();SOe=W()("configuration-shape"),Dv=class{constructor(e){this.workspace=e}get nvim(){return this.workspace.nvim}async modifyConfiguration(e,t,r){let{nvim:n,workspace:o}=this,s=o.getConfigFile(e);if(!s)return;let a={tabSize:2,insertSpaces:!0},l=ZC.default.readFileSync(s,"utf8");r=r==null?void 0:r;let u=Yj(l,[t],r,{formattingOptions:a});l=Xj(l,u),ZC.default.writeFileSync(s,l,"utf8"),o.getDocument(j.file(s).toString())&&n.command("checktime",!0)}get workspaceConfigFile(){let e=QC.default.join(this.workspace.root,".vim");return QC.default.join(e,Tn)}$updateConfigurationOption(e,t,r){this.modifyConfiguration(e,t,r).logError()}$removeConfigurationOption(e,t){this.modifyConfiguration(e,t).logError()}}});var ki,eE,tc,tE=I(()=>{ki=E(bn()),eE=E(require("path")),tc=class{constructor(e){this.filepath=e}fetch(e){let t=this.load();if(!e)return t;let r=e.split(".");for(let n of r){if(typeof t[n]=="undefined")return;t=t[n]}return t}exists(e){let t=this.load(),r=e.split(".");for(let n of r){if(typeof t[n]=="undefined")return!1;t=t[n]}return!0}delete(e){let t=this.load(),r=t,n=e.split("."),o=n.length;for(let s=0;s0){let p=l;for(let d=0;d{xv=E(Ju());Ct();TOe=W()("util-diff")});var ROe,on,md,qU=I(()=>{ROe=W()("model-chars"),on=class{constructor(e,t){this.start=e,this.end=t||e}static fromKeywordOption(e){let t=e.split(","),r=[];for(let n of t)if(n=="@")r.push(new on(65,90)),r.push(new on(97,122));else if(n=="@-@")r.push(new on(64));else if(/^([A-Za-z])-([A-Za-z])$/.test(n)){let o=n.match(/^([A-Za-z])-([A-Za-z])$/);r.push(new on(o[1].charCodeAt(0),o[2].charCodeAt(0)))}else if(/^\d+-\d+$/.test(n)){let o=n.match(/^(\d+)-(\d+)$/);r.push(new on(Number(o[1]),Number(o[2])))}else if(/^\d+$/.test(n))r.push(new on(Number(n)));else{let o=n.charCodeAt(0);r.some(s=>s.contains(o))||r.push(new on(o))}return r}contains(e){return e>=this.start&&e<=this.end}},md=class{constructor(e){this.ranges=[];e&&(this.ranges=on.fromKeywordOption(e))}addKeyword(e){let t=e.charCodeAt(0),{ranges:r}=this;r.some(n=>n.contains(t))||r.push(new on(t))}clone(){let e=new md;return e.ranges=this.ranges.slice(),e}setKeywordOption(e){this.ranges=on.fromKeywordOption(e)}matchKeywords(e,t=3){let r=e.length;if(r==0)return[];let n=new Set,o="",s=0;for(let a=0;a=t&&s<48&&n.add(o),o="",s=0}return s!=0&&n.add(o),Array.from(n)}isKeywordCode(e){return e>255?!0:e<33?!1:this.ranges.some(t=>t.contains(e))}isKeywordChar(e){let{ranges:t}=this,r=e.charCodeAt(0);return r>255?!0:r<33?!1:t.some(n=>n.contains(r))}isKeyword(e){let{ranges:t}=this;for(let r=0,n=e.length;r255)return!1;if(!t.some(s=>s.contains(o)))return!1}return!0}}});function $ge(i,e,t=0){let r=e?[t]:[];for(let n=0;n{iE=class{constructor(e,t,r,n,o){this.uri=e;this.languageId=t;this.version=r;this.lines=n;this.eol=o}get _content(){return this.lines.join(`
-`)+(this.eol?`
-`:"")}get lineCount(){return this.lines.length+(this.eol?1:0)}getText(e){if(e){let t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,n=t.length;if(n===0)return{line:0,character:e};for(;re?n=s:r=s+1}let o=r-1;return{line:o,character:e-t[o]}}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],n=e.line+1{nE=E(zr()),On=E(G());Za();Ze();je();rE();ye();_s();Gr();Ap();Ct();qU();NU();$U=W()("model-document"),rc=class{constructor(e,t,r){this.buffer=e;this.env=t;this.maxFileSize=r;this.isIgnored=!1;this.mutex=new kr;this._version=1;this.size=0;this.eol=!0;this.lines=[];this.syncLines=[];this._attached=!1;this._previewwindow=!1;this._winid=-1;this._words=[];this._onDocumentChange=new On.Emitter;this._onDocumentDetach=new On.Emitter;this.disposables=[];this.onDocumentChange=this._onDocumentChange.event;this.onDocumentDetach=this._onDocumentDetach.event;this.fireContentChanges=(0,nE.default)(()=>{this._fireContentChanges()},100),this.fetchContent=(0,nE.default)(()=>{this._fetchContent().logError()},100)}get content(){return this.syncLines.join(`
-`)+(this.eol?`
-`:"")}get version(){return this._version}get bufnr(){return this.buffer.id}get filetype(){return this._filetype}get uri(){return this._uri}get shouldAttach(){let{buftype:e,maxFileSize:t}=this;return this.getVar("enabled",!0)?this.uri.endsWith("%5BCommand%20Line%5D")?!0:this.size==-2||t&&this.size>t?!1:e==""||e=="acwrite":!1}get isCommandLine(){return this.uri&&this.uri.endsWith("%5BCommand%20Line%5D")}get enabled(){return this.getVar("enabled",!0)}get words(){return this._words}convertFiletype(e){let t=this.env.filetypeMap;return e=="javascript.jsx"?"javascriptreact":e=="typescript.jsx"||e=="typescript.tsx"?"typescriptreact":t[e]||e}get changedtick(){return this._changedtick}get schema(){return j.parse(this.uri).scheme}get lineCount(){return this.lines.length}get winid(){return this._winid}get previewwindow(){return this._previewwindow}async init(e,t){this.nvim=e;let r=await e.call("coc#util#get_bufoptions",[this.bufnr,this.maxFileSize]);if(r==null)return!1;let n=this.buftype=r.buftype;if(this._previewwindow=r.previewwindow,this._winid=r.winid,this.size=typeof r.size=="number"?r.size:0,this.variables=r.variables||{},this._changedtick=r.changedtick,this.eol=r.eol==1,this._uri=Tg(r.fullpath,this.bufnr,n,this.env.isCygwin),t.isCancellationRequested)return!1;if(this.shouldAttach){if(this.lines=r.lines,this.syncLines=this.lines,!await this.attach())return!1;this._attached=!0}return this._filetype=this.convertFiletype(r.filetype),this.setIskeyword(r.iskeyword),t.isCancellationRequested?(this.detach(),!1):!0}async attach(){return await this.buffer.attach(!0)?(this.buffer.listen("lines",this.onChange.bind(this),this.disposables),this.buffer.listen("detach",async t=>{this._onDocumentDetach.fire(t.id)},this.disposables),!0):!1}async onChange(e,t,r,n,o){e.id!==this.bufnr||!this._attached||t==null||this.mutex.busy||t>this._changedtick&&(this._changedtick=t,this.lines=[...this.lines.slice(0,r),...o,...this.lines.slice(n)],this.fireContentChanges())}async checkDocument(){let{buffer:e}=this,t=await this.mutex.acquire();this.fireContentChanges.clear(),this._changedtick=await e.changedtick,this.lines=await e.lines,this._fireContentChanges()&&await nt(30),t()}get dirty(){return this.lines===this.syncLines?!1:!rt(this.lines,this.syncLines)}_fireContentChanges(){let{cursor:e}=N,{textDocument:t}=this;try{let r=null;e&&e.bufnr==this.bufnr&&(r=this.getEndOffset(e.lnum,e.col,e.insert));let n=this.getDocumentContent(),o=LU(t.getText(),n,r);if(o==null)return;let s=t.positionAt(o.start),a=t.positionAt(o.end),l=t.getText(On.Range.create(s,a));this._version=this._version+1,this.syncLines=this.lines;let u=[{range:{start:s,end:a},rangeLength:o.end-o.start,text:o.newText}];return this._onDocumentChange.fire({bufnr:this.bufnr,original:l,textDocument:{version:this.version,uri:this.uri},contentChanges:u}),this._words=this.chars.matchKeywords(n),!0}catch(r){$U.error(r.message)}return!1}async applyEdits(e){if(!Array.isArray(arguments[0])&&Array.isArray(arguments[1])&&(e=arguments[1]),e.length==0)return;let t=this.getDocumentContent(),r=tr.create(this.uri,this.filetype,1,t),n=tr.applyEdits(r,e);if(Io&&(n=n.replace(/\r\n/g,`
-`)),t!==n){let o=(this.eol&&n.endsWith(`
-`)?n.slice(0,-1):n).split(`
-`),s=AU(this.lines,o),a=await this.mutex.acquire();try{let l=await this.nvim.call("coc#util#set_lines",[this.bufnr,s.replacement,s.start,s.end]);this._changedtick=l.changedtick,this.lines=o,this.fireContentChanges.clear(),this._fireContentChanges(),rt(o,l.lines)||process.nextTick(()=>{this.lines=l.lines,this.fireContentChanges.clear(),this._fireContentChanges()}),a()}catch(l){$U.error("Error on applyEdits: ",l),a()}}}async changeLines(e){let t=[],r=this.lines.slice();for(let[o,s]of e)r[o]!=s&&(t.push([o,s]),r[o]=s);if(!t.length)return;let n=await this.mutex.acquire();try{let o=await this.nvim.call("coc#util#change_lines",[this.bufnr,t]);o!=null&&(this.lines=r,this._changedtick=o.changedtick,this.fireContentChanges.clear(),this._fireContentChanges(),rt(r,o.lines)||process.nextTick(()=>{this.lines=o.lines,this.fireContentChanges.clear(),this._fireContentChanges()})),n()}catch(o){n()}}forceSync(){this.mutex.busy||(this.fireContentChanges.clear(),this._fireContentChanges())}getOffset(e,t){return this.textDocument.offsetAt({line:e-1,character:t})}isWord(e){return this.chars.isKeyword(e)}getMoreWords(){let e=[],{words:t,chars:r}=this;if(!r.isKeywordChar("-"))return e;for(let n of t)if(n=n.replace(/^-+/,""),n.includes("-")){let o=n.split("-");for(let s of o)s.length>2&&!e.includes(s)&&!t.includes(s)&&e.push(s)}return e}getWordRangeAtPosition(e,t,r=!0){let n=this.chars.clone();if(t&&t.length)for(let l of t)n.addKeyword(l);let o=this.getline(e.line,r);if(o.length==0||e.character>=o.length||!n.isKeywordChar(o[e.character]))return null;let s=e.character,a=e.character+1;if(!n.isKeywordChar(o[s]))return On.Range.create(e,{line:e.line,character:e.character+1});for(;s>=0;){let l=o[s-1];if(!l||!n.isKeyword(l))break;s=s-1}for(;a<=o.length;){let l=o[a];if(!l||!n.isKeywordChar(l))break;a=a+1}return On.Range.create(e.line,s,e.line,a)}get textDocument(){let{version:e,filetype:t,uri:r}=this;return new iE(r,t,e,this.syncLines,this.eol)}async _fetchContent(){if(!this.env.isVim||!this._attached)return;let{nvim:e,bufnr:t,changedtick:r}=this,n=await this.mutex.acquire(),o=await e.call("coc#util#get_buf_lines",[t,r]);o&&o.changedtick>=this._changedtick&&(this._changedtick=o.changedtick,this.lines=o.lines,this.fireContentChanges.clear(),this._fireContentChanges()),n()}async patchChange(e){if(!!this._attached)if(this.env.isVim)if(e){let t=await this.nvim.call("coc#util#get_changeinfo",[]);if(t.changedtick0&&!u&&o==e&&t.push(On.Range.create(r.positionAt(s-o.length),r.positionAt(s))),u||(o="")}return t}fixStartcol(e,t){let r=this.getline(e.line);if(!r)return null;let{character:n}=e,o=r.slice(0,n),s=me(o),{chars:a}=this;for(let l=o.length-1;l>=0;l--){let u=o[l];if(u==" "||!a.isKeywordChar(u)&&!t.includes(u))break;s=s-me(u)}return s}getline(e,t=!0){return t?this.lines[e]||"":this.syncLines[e]||""}getLines(e,t){return this.lines.slice(e,t)}getDocumentContent(){let e=this.lines.join(`
-`);return this.eol?e+`
-`:e}getVar(e,t){let r=this.variables[`coc_${e}`];return r===void 0?t:r}getPosition(e,t){let r=this.getline(e-1);if(!r||t==0)return{line:e-1,character:0};let n=er(r,0,t-1);return{line:e-1,character:n.length}}getEndOffset(e,t,r){let n=0,o=this.lines.length;for(let s=e-1;s3e4?this.lines.slice(0,3e4):this.lines;this._words=this.chars.matchKeywords(n.join(`
-`))}get attached(){return this._attached}detach(){this._attached=!1,J(this.disposables),this.disposables=[],this.fetchContent.clear(),this.fireContentChanges.clear(),this._onDocumentChange.dispose(),this._onDocumentDetach.dispose()}getLocalifyBonus(e,t){let r=new Map,{chars:n}=this,o=Math.max(0,e.line-100),s=Math.min(this.lineCount,e.line+100),a=this.lines.slice(o,s).join(`
-`);e=On.Position.create(e.line-o,e.character),t=On.Position.create(t.line-o,t.character);let l=tr.create(this.uri,this.filetype,1,a),u=l.offsetAt(e),c=a.length,f=c-l.offsetAt(t),p=0,d=!1;for(let h=0;h1){let w=a.slice(p,h);r.set(w,h/u)}d=m}p=c-f,d=!1;for(let h=p;h1){let w=h==c-1?h+1:h,v=a.slice(p,w),D=r.get(v)||0;r.set(v,Math.max(D,(c-h+(w-p))/f))}d=m}return r}}});function Sv(i,e){let t=[[],[]];for(let r of i)e(r)?t[0].push(r):t[1].push(r);return t}function BU(i,e){let t=i.length,r=[];for(let n=0;ni.indexOf(r)===n);let t=Object.create(null);return i.filter(r=>{let n=e(r);return t[n]?!1:(t[n]=!0,!0)})}var gd=I(()=>{});var vd,jU,ic,UU,nc,sE=I(()=>{vd=E(G());Ze();jU=E(Ps()),ic=E(require("path"));ye();gd();UU=W()("filesystem-watcher"),nc=class{constructor(e,t,r,n,o){this.globPattern=t;this.ignoreCreateEvents=r;this.ignoreChangeEvents=n;this.ignoreDeleteEvents=o;this._onDidCreate=new vd.Emitter;this._onDidChange=new vd.Emitter;this._onDidDelete=new vd.Emitter;this._onDidRename=new vd.Emitter;this.onDidCreate=this._onDidCreate.event;this.onDidChange=this._onDidChange.event;this.onDidDelete=this._onDidDelete.event;this.onDidRename=this._onDidRename.event;this.disposables=[];!e||e.then(s=>{if(s)return this.listen(s)}).catch(s=>{UU.error("watchman initialize failed"),UU.error(s.stack)})}async listen(e){let{globPattern:t,ignoreCreateEvents:r,ignoreChangeEvents:n,ignoreDeleteEvents:o}=this,s=await e.subscribe(t,a=>{let{root:l,files:u}=a;u=u.filter(c=>c.type=="f"&&(0,jU.default)(c.name,t,{dot:!0}));for(let c of u){let f=j.file(ic.default.join(l,c.name));c.exists?c.new===!0?r||this._onDidCreate.fire(f):n||this._onDidChange.fire(f):o||this._onDidDelete.fire(f)}if(u.length==2&&!u[0].exists&&u[1].exists){let c=u[0],f=u[1];c.size==f.size&&this._onDidRename.fire({oldUri:j.file(ic.default.join(l,c.name)),newUri:j.file(ic.default.join(l,f.name))})}if(u.length>=2){let[c,f]=Sv(u,p=>p.exists===!1);if(c.length==f.length)for(let p of c){let d=f.find(h=>h.size==p.size&&h.mtime_ms==p.mtime_ms);d&&this._onDidRename.fire({oldUri:j.file(ic.default.join(l,p.name)),newUri:j.file(ic.default.join(l,d.name))})}}});return this.disposables.push(s),s}dispose(){J(this.disposables)}}});var aE,Fs,Os,Ev=I(()=>{aE=E(require("path")),Fs=E(bn()),Os=class{constructor(e,t){this.name=e;this.file=aE.default.join(t||process.env.COC_DATA_HOME,e)}async load(){let e=aE.default.dirname(this.file);try{Fs.default.mkdirpSync(e),Fs.default.existsSync(this.file)||Fs.default.writeFileSync(this.file,"","utf8");let t=await Fs.default.readFile(this.file,"utf8");return t=t.trim(),t.length?t.trim().split(`
-`):[]}catch(t){return[]}}async add(e){let t=await this.load(),r=t.indexOf(e);r!==-1&&t.splice(r,1),t.unshift(e),Fs.default.writeFileSync(this.file,t.join(`
-`),"utf8")}async remove(e){let t=await this.load(),r=t.indexOf(e);r!==-1&&(t.splice(r,1),Fs.default.writeFileSync(this.file,t.join(`
-`),"utf8"))}async clean(){try{await Fs.default.unlink(this.file)}catch(e){}}}});function lE(i,e,t){let r=t.value;if(typeof r!="function")return;let n="$"+e;t.value=function(...o){return this.hasOwnProperty(n)?Promise.resolve(this[n]):new Promise((s,a)=>{Promise.resolve(r.apply(this,o)).then(l=>{this[n]=l,s(l)},l=>{a(l)})})}}var rAe,WU=I(()=>{rAe=W()("util-decorator")});var oc,HU,uE,aAe,sc,zU=I(()=>{oc=E(require("path")),HU=E(require("fs"));ye();Vt();WU();uE=E(Zg()),aAe=W()("model-resolver"),sc=class{get nodeFolder(){return Lp("npm")?Kn("npm --loglevel silent root -g",{},3e3).then(e=>(0,uE.default)(e).trim()):Promise.resolve("")}get yarnFolder(){return Lp("yarnpkg")?Kn("yarnpkg global dir",{},3e3).then(e=>{let t=oc.default.join((0,uE.default)(e).trim(),"node_modules");return HU.default.existsSync(t)?t:""}):Promise.resolve("")}async resolveModule(e){let t=await this.nodeFolder,r=await this.yarnFolder;if(r){let n=await $t(oc.default.join(r,e,"package.json"));if(n&&n.isFile())return oc.default.join(r,e)}if(t){let n=await $t(oc.default.join(t,e,"package.json"));if(n&&n.isFile())return oc.default.join(t,e)}return null}};wD([lE],sc.prototype,"nodeFolder",1),wD([lE],sc.prototype,"yarnFolder",1)});var _v,Tv,GU=I(()=>{je();_v=E(G());ye();Tv=class{constructor(e,t){this.nvim=e;this.id=t;this.disposables=[];this._onExit=new _v.Emitter;this._onStderr=new _v.Emitter;this._onStdout=new _v.Emitter;this.onExit=this._onExit.event;this.onStdout=this._onStdout.event;this.onStderr=this._onStderr.event;N.on("TaskExit",(o,s)=>{o==this.id&&this._onExit.fire(s)},null,this.disposables),N.on("TaskStderr",(o,s)=>{o==this.id&&this._onStderr.fire(s)},null,this.disposables);let r=[],n;N.on("TaskStdout",(o,s)=>{o==this.id&&(n&&clearTimeout(n),r.push(...s),n=setTimeout(()=>{this._onStdout.fire(r),r=[]},100))},null,this.disposables)}async start(e){let{nvim:t}=this;return await t.call("coc#task#start",[this.id,e])}async stop(){let{nvim:e}=this;await e.call("coc#task#stop",[this.id])}get running(){let{nvim:e}=this;return e.call("coc#task#running",[this.id])}dispose(){let{nvim:e}=this;e.call("coc#task#stop",[this.id],!0),this._onStdout.dispose(),this._onStderr.dispose(),this._onExit.dispose(),J(this.disposables)}}});var hAe,Pv,VU=I(()=>{hAe=W()("model-terminal"),Pv=class{constructor(e,t,r,n){this.cmd=e;this.args=t;this.nvim=r;this._name=n;this.pid=0}async start(e,t){let{nvim:r}=this,n=[this.cmd,...this.args],[o,s]=await r.call("coc#terminal#start",[n,e,t||{}]);this.bufnr=o,this.pid=s}get name(){return this._name||this.cmd}get processId(){return Promise.resolve(this.pid)}sendText(e,t=!0){!this.bufnr||this.nvim.call("coc#terminal#send",[this.bufnr,e,t],!0)}async show(e){let{bufnr:t,nvim:r}=this;if(!t)return;let[n,o,s]=await r.eval(`[bufloaded(${t}),bufwinid(${t}),win_getid()]`);return n?(s==o||(r.pauseNotification(),o==-1?(r.command(`below ${t}sb`,!0),r.command("resize 8",!0),r.call("coc#util#do_autocmd",["CocTerminalOpen"],!0)):r.call("win_gotoid",[o],!0),r.command("normal! G",!0),e&&r.command("wincmd p",!0),await r.resumeNotification()),!0):!1}async hide(){let{bufnr:e,nvim:t}=this;if(!e)return;let r=await t.call("bufwinnr",e);r!=-1&&await t.command(`${r}close!`)}dispose(){let{bufnr:e,nvim:t}=this;!e||t.call("coc#terminal#close",[e],!0)}}});var Rv,KU=I(()=>{ye();Rv=class{constructor(e,t){this._create=e;this.workspace=t;this.disposables=[];this.itemsMap=new Map;let{disposables:r}=this;for(let n of t.documents)this.create(n);t.onDidOpenTextDocument(n=>{let o=t.getDocument(n.bufnr);o&&this.create(o)},null,r),t.onDidChangeTextDocument(n=>{this.onChange(n)},null,r),t.onDidCloseTextDocument(n=>{this.delete(n.bufnr)},null,r)}get items(){return Array.from(this.itemsMap.values()).map(e=>e.item)}getItem(e){var r;if(typeof e=="number")return(r=this.itemsMap.get(e))==null?void 0:r.item;let t=Array.from(this.itemsMap.values()).find(n=>n.uri==e);return t?t.item:void 0}create(e){if(!e||e.isCommandLine||!e.attached)return;let t=this.itemsMap.get(e.bufnr);t&&t.item.dispose();let r=this._create(e);r&&this.itemsMap.set(e.bufnr,{uri:e.uri,item:r})}onChange(e){let t=this.itemsMap.get(e.bufnr);t&&typeof t.item.onChange=="function"&&t.item.onChange(e)}delete(e){let t=this.itemsMap.get(e);t&&(this.itemsMap.delete(e),t.item.dispose())}reset(){for(let e of this.itemsMap.values())e.item.dispose();this.itemsMap.clear()}dispose(){J(this.disposables);for(let e of this.itemsMap.values())e.item.dispose();this.itemsMap.clear()}}});function ac(i,e,t){if(Array.isArray(i)){let r=0;for(let n of i){let o=ac(n,e,t);if(o===10)return o;o>r&&(r=o)}return r}else{if(typeof i=="string")return i==="*"?5:i===t?10:0;if(i){let r=j.parse(e),{language:n,pattern:o,scheme:s}=i,a=0;if(s)if(s===r.scheme)a=5;else if(s==="*")a=3;else return 0;if(n)if(n===t)a=10;else if(n==="*")a=Math.max(a,5);else return 0;if(o){let l=Io||kS,u=l?o.toLowerCase():o,c=l?r.fsPath.toLowerCase():r.fsPath;if(u===c||(0,JU.default)(c,u,{dot:!0}))a=5;else return 0}return a}else return 0}}var JU,cE=I(()=>{JU=E(Ps());Ze();Ap()});var ZU=y((DAe,XU)=>{var fE=4294967296,YU=[];for(var yd=0;yd<256;yd++)YU[yd]=(yd>15?"":"0")+yd.toString(16);var bd=XU.exports=function(i,e){i instanceof Buffer?(this.buffer=i,this.offset=e||0):Object.prototype.toString.call(i)=="[object Uint8Array]"?(this.buffer=new Buffer(i),this.offset=e||0):(this.buffer=this.buffer||new Buffer(8),this.offset=0,this.setValue.apply(this,arguments))};bd.MAX_INT=Math.pow(2,53);bd.MIN_INT=-Math.pow(2,53);bd.prototype={constructor:bd,_2scomp:function(){for(var i=this.buffer,e=this.offset,t=1,r=e+7;r>=e;r--){var n=(i[r]^255)+t;i[r]=n&255,t=n>>8}},setValue:function(i,e){var t=!1;if(arguments.length==1)if(typeof i=="number"){if(t=i<0,i=Math.abs(i),e=i%fE,i=i/fE,i>fE)throw new RangeError(i+" is outside Int64 range");i=i|0}else if(typeof i=="string")i=(i+"").replace(/^0x/,""),e=i.substr(-8),i=i.length>8?i.substr(0,i.length-8):"",i=parseInt(i,16),e=parseInt(e,16);else throw new Error(i+" must be a Number or String");for(var r=this.buffer,n=this.offset,o=7;o>=0;o--)r[n+o]=e&255,e=o==4?i:e>>>8;t&&this._2scomp()},toNumber:function(i){for(var e=this.buffer,t=this.offset,r=e[t]&128,n=0,o=1,s=7,a=1;s>=0;s--,a*=256){var l=e[t+s];r&&(l=(l^255)+o,o=l>>8,l=l&255),n+=l*a}return!i&&n>=bd.MAX_INT?r?-Infinity:Infinity:r?-n:n},valueOf:function(){return this.toNumber(!1)},toString:function(i){return this.valueOf().toString(i||10)},toOctetString:function(i){for(var e=new Array(8),t=this.buffer,r=this.offset,n=0;n<8;n++)e[n]=YU[t[r+n]];return e.join(i||"")},toBuffer:function(i){if(i&&this.offset===0)return this.buffer;var e=new Buffer(8);return this.buffer.copy(e,0,this.offset,this.offset+8),e},copy:function(i,e){this.buffer.copy(i,e||0,this.offset,this.offset+8)},compare:function(i){if((this.buffer[this.offset]&128)!=(i.buffer[i.offset]&128))return i.buffer[i.offset]-this.buffer[this.offset];for(var e=0;e<8;e++)if(this.buffer[this.offset+e]!==i.buffer[i.offset+e])return this.buffer[this.offset+e]-i.buffer[i.offset+e];return 0},equals:function(i){return this.compare(i)===0},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}});var uW=y(Dd=>{var QU=require("events").EventEmitter,Bge=require("util"),jge=require("os"),xAe=require("assert"),wd=ZU(),As=jge.endianness()=="BE";function eW(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function lr(i){this.buf=Buffer.alloc(eW(i||8192)),this.readOffset=0,this.writeOffset=0}Dd.Accumulator=lr;lr.prototype.writeAvail=function(){return this.buf.length-this.writeOffset};lr.prototype.readAvail=function(){return this.writeOffset-this.readOffset};lr.prototype.reserve=function(i){if(!(i0&&(this.buf.copy(this.buf,0,this.readOffset,this.writeOffset),this.writeOffset-=this.readOffset,this.readOffset=0),!(i0)this.assertReadableSize(i);else if(i<0&&this.readOffset+i<0)throw new Error("advance with negative offset "+i+" would seek off the start of the buffer");this.readOffset+=i};lr.prototype.writeByte=function(i){this.reserve(1),this.buf.writeInt8(i,this.writeOffset),++this.writeOffset};lr.prototype.writeInt=function(i,e){switch(this.reserve(e),e){case 1:this.buf.writeInt8(i,this.writeOffset);break;case 2:As?this.buf.writeInt16BE(i,this.writeOffset):this.buf.writeInt16LE(i,this.writeOffset);break;case 4:As?this.buf.writeInt32BE(i,this.writeOffset):this.buf.writeInt32LE(i,this.writeOffset);break;default:throw new Error("unsupported integer size "+e)}this.writeOffset+=e};lr.prototype.writeDouble=function(i){this.reserve(8),As?this.buf.writeDoubleBE(i,this.writeOffset):this.buf.writeDoubleLE(i,this.writeOffset),this.writeOffset+=8};var pE=0,dE=1,hE=2,mE=3,gE=4,kv=5,Iv=6,tW=7,rW=8,iW=9,nW=10,oW=11,Uge=12,vE=0,sW=1,Wge=127,Hge=32767,zge=2147483647;function ui(){QU.call(this),this.buf=new lr,this.state=vE}Bge.inherits(ui,QU);Dd.BunserBuf=ui;ui.prototype.append=function(i,e){if(e)return this.buf.append(i),this.process(e);try{this.buf.append(i)}catch(t){this.emit("error",t);return}this.processLater()};ui.prototype.processLater=function(){var i=this;process.nextTick(function(){try{i.process(!1)}catch(e){i.emit("error",e)}})};ui.prototype.process=function(i){if(this.state==vE){if(this.buf.readAvail()<2)return;if(this.expectCode(0),this.expectCode(1),this.pduLen=this.decodeInt(!0),this.pduLen===!1){this.buf.readAdvance(-2);return}this.buf.reserve(this.pduLen),this.state=sW}if(this.state==sW){if(this.buf.readAvail()0&&this.processLater()};ui.prototype.raise=function(i){throw new Error(i+", in Buffer of length "+this.buf.buf.length+" ("+this.buf.readAvail()+" readable) at offset "+this.buf.readOffset+" buffer: "+JSON.stringify(this.buf.buf.slice(this.buf.readOffset,this.buf.readOffset+32).toJSON()))};ui.prototype.expectCode=function(i){var e=this.buf.readInt(1);e!=i&&this.raise("expected bser opcode "+i+" but got "+e)};ui.prototype.decodeAny=function(){var i=this.buf.peekInt(1);switch(i){case mE:case gE:case kv:case Iv:return this.decodeInt();case tW:return this.buf.readAdvance(1),this.buf.readDouble();case rW:return this.buf.readAdvance(1),!0;case iW:return this.buf.readAdvance(1),!1;case nW:return this.buf.readAdvance(1),null;case hE:return this.decodeString();case pE:return this.decodeArray();case dE:return this.decodeObject();case oW:return this.decodeTemplate();default:this.raise("unhandled bser opcode "+i)}};ui.prototype.decodeArray=function(){this.expectCode(pE);for(var i=this.decodeInt(),e=[],t=0;t{"use strict";var Kge=require("net"),cW=require("events").EventEmitter,Jge=require("util"),Yge=require("child_process"),fW=uW(),pW=["subscription","log"];function Lo(i){var e=this;cW.call(this),this.watchmanBinaryPath="watchman",i&&i.watchmanBinaryPath&&(this.watchmanBinaryPath=i.watchmanBinaryPath.trim()),this.commands=[]}Jge.inherits(Lo,cW);mW.exports.Client=Lo;Lo.prototype.sendNextCommand=function(){this.currentCommand||(this.currentCommand=this.commands.shift(),!!this.currentCommand&&this.socket.write(fW.dumpToBuffer(this.currentCommand.cmd)))};Lo.prototype.cancelCommands=function(i){var e=new Error(i),t=this.commands;this.commands=[],this.currentCommand&&(t.unshift(this.currentCommand),this.currentCommand=null),t.forEach(function(r){r.cb(e)})};Lo.prototype.connect=function(){var i=this;function e(l){i.bunser=new fW.BunserBuf,i.bunser.on("value",function(u){for(var c=!1,f=0;f=0:!1}Lo.prototype._synthesizeCapabilityCheck=function(i,e,t){i.capabilities={};var r=i.version;return e.forEach(function(n){i.capabilities[n]=hW(r,n)}),t.forEach(function(n){var o=hW(r,n);i.capabilities[n]=o,o||(i.error="client required capability `"+n+"` is not supported by this server")}),i};Lo.prototype.capabilityCheck=function(i,e){var t=i.optional||[],r=i.required||[],n=this;this.command(["version",{optional:t,required:r}],function(o,s){if(o){e(o);return}if(!("capabilities"in s)&&(s=n._synthesizeCapabilityCheck(s,t,r),s.error)){o=new Error(s.error),o.watchmanResponse=s,e(o);return}e(null,s)})};Lo.prototype.end=function(){this.cancelCommands("The client was ended"),this.socket&&(this.socket.end(),this.socket=null),this.bunser=null}});function Qge(i){return!(i=="/"||i=="/tmp"||i=="/private/tmp"||i.toLowerCase()===yE.default.homedir().toLowerCase()||Av.default.parse(i).base==i||i.startsWith("/tmp/")||i.startsWith("/private/tmp/")||pt(yE.default.tmpdir(),i,!0))}var vW,yE,Av,yW,bW,Lv,Zge,bE,An,Mv=I(()=>{vW=E(gW()),yE=E(require("os")),Av=E(require("path"));it();yW=E(G()),bW=E(Ps());Vt();Lv=W()("watchman"),Zge=["relative_root","cmd-watch-project","wildmatch","field-new"],bE=new Map,An=class{constructor(e,t){this.channel=t;this._disposed=!1;this.client=new vW.default.Client({watchmanBinaryPath:e}),this.client.setMaxListeners(300)}checkCapability(){let{client:e}=this;return new Promise((t,r)=>{e.capabilityCheck({optional:[],required:Zge},(n,o)=>{if(n)return r(n);let{capabilities:s}=o;for(let a of Object.keys(s))if(!s[a])return t(!1);t(!0)})})}async watchProject(e){try{let t=await this.command(["watch-project",e]),{watch:r,warning:n,relative_path:o}=t;n&&Lv.warn(n),this.watch=r,this.relative_path=o,Lv.info(`watchman watching project: ${e}`),this.appendOutput(`watchman watching project: ${e}`)}catch(t){return Lv.error(t),!1}return!0}command(e){return new Promise((t,r)=>{this.client.command(e,(n,o)=>{if(n)return r(n);t(o)})})}async subscribe(e,t){let{watch:r,relative_path:n}=this;if(!r)return this.appendOutput(`watchman not watching: ${r}`,"Error"),null;let{clock:o}=await this.command(["clock",r]),s=Ao(),a={expression:["allof",["match","**/*","wholename"]],fields:["name","size","new","exists","type","mtime_ms","ctime_ms"],since:o},l=r;n&&(a.relative_root=n,l=Av.default.join(r,n));let{subscribe:u}=await this.command(["subscribe",r,s,a]);return global.hasOwnProperty("__TEST__")&&(global.subscribe=u),this.appendOutput(`subscribing "${e}" in ${l}`),this.client.on("subscription",c=>{if(!c||c.subscription!=s)return;let{files:f}=c;if(!f||(f=f.filter(d=>d.type=="f"&&(0,bW.default)(d.name,e,{dot:!0})),!f.length))return;let p=Object.assign({},c);this.relative_path&&(p.root=Av.default.resolve(c.root,this.relative_path)),this.appendOutput(`file change detected: ${JSON.stringify(p,null,2)}`),t(p)}),yW.Disposable.create(()=>this.unsubscribe(u))}unsubscribe(e){if(this._disposed)return Promise.resolve();let{watch:t}=this;if(!!t)return this.appendOutput(`unsubscribe "${e}" in: ${t}`),this.command(["unsubscribe",t,e]).catch(r=>{Lv.error(r)})}dispose(){this._disposed||(this._disposed=!0,this.client.removeAllListeners(),this.client.end())}appendOutput(e,t="Info"){this.channel&&this.channel.appendLine(`[${t} - ${new Date().toLocaleTimeString()}] ${e}`)}static dispose(){for(let e of bE.values())e.then(t=>{t.dispose()},t=>{})}static createClient(e,t,r){if(!Qge(t))return null;let n=bE.get(t);if(n)return n;let o=new Promise(async(s,a)=>{try{let l=new An(e,r);if(!await l.checkCapability()||!await l.watchProject(t))return s(null);s(l)}catch(l){a(l)}});return bE.set(t,o),o}}});var qv,wE=I(()=>{qv="0.0.80"});var wW,DW,Kt,Ln,Ne,oe,xW,SW,xd,Nv,tve,CW,b,ie=I(()=>{wW=E(Mj()),DW=E(Ju()),Kt=E(bn()),Ln=E(require("os")),Ne=E(require("path"));it();oe=E(G());Ze();xW=E(Op());yC();FU();OU();je();tE();oE();sE();Ev();zU();GU();VU();KU();Pi();gd();Vt();ye();cE();Kr();Ct();Mv();Te();wE();SW=8,xd=W()("workspace"),Nv=2e3,tve=["showMessage","runTerminalCommand","openTerminal","showQuickpick","menuPick","openLocalConfig","showPrompt","createStatusBarItem","createOutputChannel","showOutputChannel","requestInput","echoLines","getCursorPosition","moveTo","getOffset"],CW=class{constructor(){this.keymaps=new Map;this.resolver=new sc;this.rootPatterns=new Map;this._workspaceFolders=[];this._insertMode=!1;this._cwd=process.cwd();this._initialized=!1;this._attached=!1;this.buffers=new Map;this.autocmdMaxId=0;this.autocmds=new Map;this.terminals=new Map;this.creatingSources=new Map;this.schemeProviderMap=new Map;this.namespaceMap=new Map;this.disposables=[];this.watchedOptions=new Set;this._dynAutocmd=!1;this._disposed=!1;this._onDidOpenDocument=new oe.Emitter;this._onDidCloseDocument=new oe.Emitter;this._onDidChangeDocument=new oe.Emitter;this._onWillSaveDocument=new oe.Emitter;this._onDidSaveDocument=new oe.Emitter;this._onDidChangeWorkspaceFolders=new oe.Emitter;this._onDidChangeConfiguration=new oe.Emitter;this._onDidWorkspaceInitialized=new oe.Emitter;this._onDidOpenTerminal=new oe.Emitter;this._onDidCloseTerminal=new oe.Emitter;this._onDidRuntimePathChange=new oe.Emitter;this.onDidCloseTerminal=this._onDidCloseTerminal.event;this.onDidOpenTerminal=this._onDidOpenTerminal.event;this.onDidChangeWorkspaceFolders=this._onDidChangeWorkspaceFolders.event;this.onDidOpenTextDocument=this._onDidOpenDocument.event;this.onDidCloseTextDocument=this._onDidCloseDocument.event;this.onDidChangeTextDocument=this._onDidChangeDocument.event;this.onWillSaveTextDocument=this._onWillSaveDocument.event;this.onDidSaveTextDocument=this._onDidSaveDocument.event;this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;this.onDidWorkspaceInitialized=this._onDidWorkspaceInitialized.event;this.onDidRuntimePathChange=this._onDidRuntimePathChange.event;this._onDidCreateFiles=new oe.Emitter;this._onDidRenameFiles=new oe.Emitter;this._onDidDeleteFiles=new oe.Emitter;this._onWillCreateFiles=new oe.Emitter;this._onWillRenameFiles=new oe.Emitter;this._onWillDeleteFiles=new oe.Emitter;this.onDidCreateFiles=this._onDidCreateFiles.event;this.onDidRenameFiles=this._onDidRenameFiles.event;this.onDidDeleteFiles=this._onDidDeleteFiles.event;this.onWillCreateFiles=this._onWillCreateFiles.event;this.onWillRenameFiles=this._onWillRenameFiles.event;this.onWillDeleteFiles=this._onWillDeleteFiles.event;this.version=qv,this.configurations=this.createConfigurations();let e=process.cwd();e!=Ln.default.homedir()&&Rs(e,[".vim"])&&this._workspaceFolders.push({uri:j.file(e).toString(),name:Ne.default.basename(e)})}async init(){let{nvim:e}=this;for(let o of tve)Object.defineProperty(this,o,{get:()=>(...s)=>T[o].apply(T,s)});this._env=await e.call("coc#util#vim_info"),this._env.apiversion!=SW&&(console.error(`API version ${this._env.apiversion} is not ${SW}, please build coc.nvim by 'yarn install' after pull source code.`),process.exit()),this._insertMode=this._env.mode.startsWith("insert");let r=this.getConfiguration("coc.preferences").get("maxFileSize","10MB");this.maxFileSize=wW.default.parse(r),this._env.workspaceFolders&&Array.isArray(this._env.workspaceFolders)&&(this._workspaceFolders=this._env.workspaceFolders.map(o=>({uri:j.file(o).toString(),name:Ne.default.dirname(o)}))),this.configurations.updateUserConfig(this._env.config),N.on(["InsertEnter","CursorMovedI"],()=>{this._insertMode=!0},null,this.disposables),N.on(["InsertLeave","CursorMoved"],()=>{this._insertMode=!1},null,this.disposables);let n=async o=>{let s=this.getDocument(o);s&&s.forceSync()};N.on("InsertLeave",n,null,this.disposables),N.on("CursorHold",n,null,this.disposables),N.on("BufEnter",this.onBufEnter,this,this.disposables),N.on("CursorMoved",this.checkCurrentBuffer,this,this.disposables),N.on("CursorMovedI",this.checkCurrentBuffer,this,this.disposables),N.on("DirChanged",this.onDirChanged,this,this.disposables),N.on("BufCreate",this.onBufCreate,this,this.disposables),N.on("BufUnload",this.onBufUnload,this,this.disposables),N.on("TermOpen",this.onBufCreate,this,this.disposables),N.on("TermClose",this.onBufUnload,this,this.disposables),N.on("BufWritePost",this.onBufWritePost,this,this.disposables),N.on("BufWritePre",this.onBufWritePre,this,this.disposables),N.on("FileType",this.onFileTypeChange,this,this.disposables),N.on("CursorHold",this.checkCurrentBuffer,this,this.disposables),N.on("TextChanged",this.checkBuffer,this,this.disposables),N.on("BufReadCmd",this.onBufReadCmd,this,this.disposables),N.on("VimResized",(o,s)=>{Object.assign(this._env,{columns:o,lines:s})},null,this.disposables),await this.attach(),this.attachChangedEvents(),this.configurations.onDidChange(o=>{this._onDidChangeConfiguration.fire(o)},null,this.disposables),this.watchOption("runtimepath",(o,s)=>{let a=(0,DW.default)(o,s);for(let[l,u]of a)if(l==1){let c=u.replace(/,$/,"").split(",");this._onDidRuntimePathChange.fire(c)}this._env.runtimepath=s},this.disposables),this.watchGlobal("coc_sources_disable_map",async(o,s)=>{this.env.disabledSources=s}),this.disposables.push(this.registerTextDocumentContentProvider("output",Ya.getProvider(e)))}getConfigFile(e){return this.configurations.getConfigFile(e)}registerAutocmd(e){this.autocmdMaxId+=1;let t=this.autocmdMaxId;return this.autocmds.set(t,e),this.setupDynamicAutocmd(),oe.Disposable.create(()=>{this.autocmds.delete(t),this.setupDynamicAutocmd()})}watchOption(e,t,r){let n=this.watchedOptions.has(e);n||(this.watchedOptions.add(e),this.setupDynamicAutocmd());let o=N.on("OptionSet",async(s,a,l)=>{s==e&&t&&await Promise.resolve(t(a,l))});r&&r.push(oe.Disposable.create(()=>{o.dispose(),!n&&(this.watchedOptions.delete(e),this.setupDynamicAutocmd())}))}watchGlobal(e,t,r){let{nvim:n}=this;n.call("coc#_watch",e,!0);let o=N.on("GlobalChange",async(s,a,l)=>{s==e&&t&&await Promise.resolve(t(a,l))});r&&r.push(oe.Disposable.create(()=>{o.dispose(),n.call("coc#_unwatch",e,!0)}))}get cwd(){return this._cwd}get env(){return this._env}get root(){return this._root||this.cwd}get rootPath(){return this.root}get workspaceFolders(){return this._workspaceFolders}get uri(){let{bufnr:e}=this;if(e){let t=this.getDocument(e);if(t&&t.schema=="file")return t.uri}return null}get workspaceFolder(){let{rootPath:e}=this;return e==Ln.default.homedir()?null:{uri:j.file(e).toString(),name:Ne.default.basename(e)}}get textDocuments(){let e=[];for(let t of this.buffers.values())e.push(t.textDocument);return e}get documents(){return Array.from(this.buffers.values())}createNameSpace(e=""){return this.namespaceMap.has(e)?this.namespaceMap.get(e):(Nv=Nv+1,this.namespaceMap.set(e,Nv),Nv)}get channelNames(){return Ya.names}get pluginRoot(){return Ne.default.dirname(__dirname)}get isVim(){return this._env.isVim}get isNvim(){return!this._env.isVim}get completeOpt(){return this._env.completeOpt}get initialized(){return this._initialized}get ready(){return this._initialized?Promise.resolve():new Promise(e=>{let t=this.onDidWorkspaceInitialized(()=>{t.dispose(),e()})})}get filetypes(){let e=new Set;for(let t of this.documents)e.add(t.filetype);return e}match(e,t){return ac(e,t.uri,t.languageId)}async findUp(e){let{cwd:t}=this,r=await this.nvim.call("expand","%:p");r=Ne.default.normalize(r);let n=r&&Ne.default.isAbsolute(r);if(n&&!pt(t,r,!0))return Qu(e,Ne.default.dirname(r));let o=Qu(e,t);return o&&o!=Ln.default.homedir()?o:n?Qu(e,Ne.default.dirname(r)):null}async resolveRootFolder(e,t){let{cwd:r}=this;if(e.scheme!="file")return r;let n=Ne.default.normalize(e.fsPath),o=Ne.default.dirname(n);return dd(o,t)||o}createFileSystemWatcher(e,t,r,n){let o=global.hasOwnProperty("__TEST__")?null:this.getWatchmanPath(),s=o?T.createOutputChannel("watchman"):null,a=o?An.createClient(o,this.root,s):Promise.resolve(null);return new nc(a,e,!!t,!!r,!!n)}getWatchmanPath(){let t=this.getConfiguration("coc.preferences").get("watchmanPath","watchman");try{return xW.default.sync(t)}catch(r){return null}}getConfiguration(e,t){return this.configurations.getConfiguration(e,t)}getDocument(e){if(typeof e=="number")return this.buffers.get(e);let t=Ou.isWindows||Ou.isMacintosh;e=j.parse(e).toString();for(let r of this.buffers.values())if(!!r&&(r.uri===e||Ne.default.resolve(r.uri)===Ne.default.resolve(e)||t&&r.uri.toLowerCase()===e.toLowerCase()))return r;return null}async applyEdit(e){let{nvim:t}=this,{documentChanges:r,changes:n}=e,[o,s]=await t.eval('[bufnr("%"),coc#util#cursor()]'),a=this.getDocument(o),l=a?a.uri:null,u=null,c=[],f=0,p=this.getConfiguration("coc.preferences"),d=!global.hasOwnProperty("__TEST__")&&p.get("promptWorkspaceEdit",!0),h=p.get("listOfWorkspaceEdit","quickfix");try{if(r&&r.length){let m=this.getChangedUris(r);if(f=m.length,d){let v=m.reduce((D,x)=>D+(this.getDocument(x)==null?1:0),0);if(v&&!await T.showPrompt(`${v} documents on disk would be loaded for change, confirm?`))return}let w=new Map;for(let v of r)if(oe.TextDocumentEdit.is(v)){let{textDocument:D,edits:x}=v,S=await this.loadFile(D.uri);D.uri==l&&(u=x),await S.applyEdits(x);for(let P of x)c.push({uri:S.uri,range:P.range})}else if(oe.CreateFile.is(v)){let D=j.parse(v.uri).fsPath;await this.createFile(D,v.options)}else oe.RenameFile.is(v)?(w.set(v.oldUri,v.newUri),await this.renameFile(j.parse(v.oldUri).fsPath,j.parse(v.newUri).fsPath,v.options)):oe.DeleteFile.is(v)&&await this.deleteFile(j.parse(v.uri).fsPath,v.options);w.size&&c.forEach(v=>{let D=w.get(v.uri);D&&(v.uri=D)})}else if(n){let m=Object.keys(n),w=m.filter(v=>this.getDocument(v)==null);if(w.length){if(d&&!await T.showPrompt(`${w.length} documents on disk would be loaded for change, confirm?`))return;await this.loadFiles(w)}for(let v of Object.keys(n)){let D=this.getDocument(v);j.parse(v).toString()==v&&(u=n[v]);let x=n[v];for(let S of x)c.push({uri:D.uri,range:S.range});await D.applyEdits(x)}f=m.length}if(u){let m=Vu({line:s[0],character:s[1]},u);m&&await T.moveTo({line:s[0]+m.line,character:s[1]+m.character})}if(c.length){let m=await Promise.all(c.map(v=>this.getQuickfixItem(v))),w=c.every(v=>v.uri==l);h=="quickfix"?(await this.nvim.call("setqflist",[m]),w||T.showMessage(`changed ${f} buffers, use :wa to save changes to disk and :copen to open quickfix list`,"more")):h=="location"&&(await t.setVar("coc_jump_locations",m),w||T.showMessage(`changed ${f} buffers, use :wa to save changes to disk and :CocList location to manage changed locations`,"more"))}}catch(m){return xd.error(m),T.showMessage(`Error on applyEdits: ${m.message}`,"error"),!1}return await nt(50),!0}async getQuickfixItem(e,t,r="",n){oe.LocationLink.is(e)&&(e=oe.Location.create(e.targetUri,e.targetRange));let o=this.getDocument(e.uri),{uri:s,range:a}=e,{line:l,character:u}=a.start,c=j.parse(s),f=o?o.bufnr:-1;!t&&c.scheme=="file"&&(t=await this.getLine(s,l),u=Ci(t,u));let p={uri:s,filename:c.scheme=="file"?c.fsPath:s,lnum:l+1,col:u+1,text:t||"",range:a};return n&&(p.module=n),r&&(p.type=r),f!=-1&&(p.bufnr=f),p}createMru(e){return new Os(e)}async getSelectedRange(e,t){let{nvim:r}=this;if(e==="line"){let c=await r.call("line",["."]);return t.getline(c-1).length?oe.Range.create(c-1,0,c,0):null}if(e==="cursor"){let[c,f]=await r.eval("coc#util#cursor()");return oe.Range.create(c,f,c,f)}if(!["v","V","char","line",""].includes(e))throw new Error(`Mode '${e}' not supported`);let n=["v","V",""].includes(e),[,o,s]=await r.call("getpos",n?"'<":"'["),[,a,l]=await r.call("getpos",n?"'>":"']"),u=oe.Range.create(t.getPosition(o,s),t.getPosition(a,l));return(e=="v"||e=="")&&(u.end.character=u.end.character+1),u}async selectRange(e){let{nvim:t}=this,{start:r,end:n}=e,[o,s,a]=await t.eval("[bufnr('%'), &virtualedit, &selection]"),l=this.getDocument(o);if(!l||!l.attached)return;let u=l.getline(r.line),c=u?me(u.slice(0,r.character)):0,f=l.getline(n.line),p=f?me(f.slice(0,n.character)):0,d="",h=!1;d+="v",p=await t.eval(`virtcol([${n.line+1}, ${p}])`),a=="inclusive"?n.character==0?d+=`${n.line}G`:d+=`${n.line+1}G${p}|`:a=="old"?d+=`${n.line+1}G${p}|`:d+=`${n.line+1}G${p+1}|`,c=await t.eval(`virtcol([${r.line+1}, ${c}])`),d+=`o${r.line+1}G${c+1}|o`,t.pauseNotification(),s!="onemore"&&(h=!0,t.setOption("virtualedit","onemore",!0)),t.command(`noa call cursor(${r.line+1},${c+(d=="a"?0:1)})`,!0),t.command(`normal! ${d}`,!0),h&&t.setOption("virtualedit",s,!0),this.isVim&&t.command("redraw",!0),await t.resumeNotification()}async showLocations(e){let t=await Promise.all(e.map(o=>this.getQuickfixItem(o))),{nvim:r}=this;if(this.getConfiguration("coc.preferences").get("useQuickfixForLocations",!1)){let o=await r.getVar("coc_quickfix_open_command");typeof o!="string"&&(o=t.length<10?`copen ${t.length}`:"copen"),r.pauseNotification(),r.call("setqflist",[t],!0),r.command(o,!0),r.resumeNotification(!1,!0)}else await r.setVar("coc_jump_locations",t),this.env.locationlist?r.command("CocList --normal --auto-preview location",!0):r.call("coc#util#do_autocmd",["CocLocationsChange"],!0)}async getLine(e,t){let r=this.getDocument(e);if(r)return r.getline(t)||"";if(!e.startsWith("file:"))return"";let n=j.parse(e).fsPath;return Kt.default.existsSync(n)?await kU(n,t):""}getWorkspaceFolder(e){this.workspaceFolders.sort((r,n)=>n.uri.length-r.uri.length);let t=j.parse(e).fsPath;return this.workspaceFolders.find(r=>pt(j.parse(r.uri).fsPath,t,!0))}async readFile(e){let t=this.getDocument(e);if(t)return await t.patchChange(),t.content;let r=j.parse(e);return r.scheme!="file"?"":(await this.nvim.call("readfile",[r.fsPath])).join(`
-`)+`
-`}get document(){return new Promise((e,t)=>{this.nvim.buffer.then(r=>{let n=r.id;if(this.bufnr=n,this.buffers.has(n)){e(this.buffers.get(n));return}this.onBufCreate(n).catch(t);let o=this.onDidOpenTextDocument(s=>{o.dispose(),e(this.getDocument(s.uri))})},t)})}async getCurrentState(){let e=await this.document,t=await T.getCursorPosition();return{document:e.textDocument,position:t}}async getFormatOptions(e){let t;e&&(t=this.getDocument(e));let r=t?t.bufnr:0,[n,o]=await this.nvim.call("coc#util#get_format_opts",[r]);return{tabSize:n,insertSpaces:o==1}}async jumpTo(e,t,r){let n=this.getConfiguration("coc.preferences"),o=r||n.get("jumpCommand","edit"),{nvim:s}=this,a=this.getDocument(e),l=a?a.bufnr:-1;if(l!=-1&&o=="edit"){if(s.pauseNotification(),s.command("silent! normal! m'",!0),s.command(`buffer ${l}`,!0),t){let u=a.getline(t.line),c=me(u.slice(0,t.character))+1;s.call("cursor",[t.line+1,c],!0)}this.isVim&&s.command("redraw",!0),await s.resumeNotification()}else{let{fsPath:u,scheme:c}=j.parse(e),f=t==null?null:[t.line,t.character];if(c=="file"){let p=hd(Ne.default.normalize(u));await this.nvim.call("coc#util#jump",[o,p,f])}else Ln.default.platform()=="win32"&&(e=e.replace(/\/?/,"?")),await this.nvim.call("coc#util#jump",[o,e,f])}}async createFile(e,t={}){let r=await $t(e);if(r&&!t.overwrite&&!t.ignoreIfExists){T.showMessage(`${e} already exists!`,"error");return}if(!r||t.overwrite)if(e.endsWith("/"))try{e=this.expand(e),await Kt.default.mkdirp(e)}catch(n){T.showMessage(`Can't create ${e}: ${n.message}`,"error")}else{let n=j.file(e).toString();if(this.getDocument(n))return;Kt.default.existsSync(Ne.default.dirname(e))||Kt.default.mkdirpSync(Ne.default.dirname(e)),Kt.default.writeFileSync(e,"","utf8"),await this.loadFile(n)}}async loadFile(e){let t=this.getDocument(e);if(t)return t;let{nvim:r}=this,n=e.startsWith("file")?j.parse(e).fsPath:e;return r.call("coc#util#open_files",[[n]],!0),await new Promise((o,s)=>{let a=this.onDidOpenTextDocument(u=>{let c=j.parse(u.uri).fsPath;(u.uri==e||c==n)&&(clearTimeout(l),a.dispose(),o(this.getDocument(e)))}),l=setTimeout(()=>{a.dispose(),s(new Error(`Create document ${e} timeout after 1s.`))},1e3)})}async loadFiles(e){if(e=e.filter(n=>this.getDocument(n)==null),!(!e.length||!(await this.nvim.call("coc#util#open_files",[e.map(n=>j.parse(n).fsPath)])).filter(n=>this.getDocument(n)==null).length))return new Promise((n,o)=>{let s=setTimeout(()=>{a.dispose(),o(new Error("Create document timeout after 2s."))},2e3),a=this.onDidOpenTextDocument(()=>{e.every(l=>this.getDocument(l)!=null)&&(clearTimeout(s),a.dispose(),n())})})}async renameFile(e,t,r={}){let{overwrite:n,ignoreIfExists:o}=r,{nvim:s}=this;try{let a=await $t(t);if(a&&!n&&!o)throw new Error(`${t} already exists`);if(!a||n){let l=j.file(e).toString(),u=j.file(t).toString(),c=this.getDocument(l);if(c!=null){let f=c.bufnr==this.bufnr,p=this.getDocument(u);p&&await this.nvim.command(`silent ${p.bufnr}bwipeout!`);let d=c.getDocumentContent();if(await Kt.default.writeFile(t,d,"utf8"),!f)await s.call("coc#util#open_files",[[t]]),await s.command(`silent ${c.bufnr}bwipeout!`);else{let h=await s.call("winsaveview");s.pauseNotification(),s.call("coc#util#open_file",["keepalt edit",t],!0),s.command(`silent ${c.bufnr}bwipeout!`,!0),s.call("winrestview",[h],!0),await s.resumeNotification()}await Kt.default.unlink(e)}else await TU(e,t)}}catch(a){T.showMessage(`Rename error: ${a.message}`,"error")}}async deleteFile(e,t={}){let{ignoreIfNotExists:r,recursive:n}=t,o=await $t(e.replace(/\/$/,"")),s=o&&o.isDirectory();if(e.endsWith("/")&&!s){T.showMessage(`${e} is not directory`,"error");return}if(!o&&!r){T.showMessage(`${e} not exists`,"error");return}if(o!=null){if(s&&!n){T.showMessage("Can't remove directory, recursive not set","error");return}try{if(s&&n?await Kt.default.remove(e):s?await Kt.default.rmdir(e):await Kt.default.unlink(e),!s){let a=j.file(e).toString(),l=this.getDocument(a);l&&await this.nvim.command(`silent! bwipeout! ${l.bufnr}`)}}catch(a){T.showMessage(`Error on delete ${e}: ${a.message}`,"error")}}}async openResource(e){let{nvim:t}=this;if(e.startsWith("http")){await t.call("coc#util#open_url",e);return}let r=await t.getOption("wildignore");await t.setOption("wildignore",""),await this.jumpTo(e),await t.setOption("wildignore",r)}async resolveModule(e){return await this.resolver.resolveModule(e)}async runCommand(e,t,r){return t=t||this.cwd,Kn(e,{cwd:t},r)}expand(e){if(!e)return e;if(e.startsWith("~")&&(e=Ln.default.homedir()+e.slice(1)),e.includes("$")){let t=this.getDocument(this.bufnr),r=t?j.parse(t.uri).fsPath:"";e=e.replace(/\$\{(.*?)\}/g,(n,o)=>{if(o.startsWith("env:")){let s=o.split(":")[1];return s?process.env[s]:""}switch(o){case"workspace":case"workspaceRoot":case"workspaceFolder":return this.root;case"workspaceFolderBasename":return Ne.default.dirname(this.root);case"cwd":return this.cwd;case"file":return r;case"fileDirname":return r?Ne.default.dirname(r):"";case"fileExtname":return r?Ne.default.extname(r):"";case"fileBasename":return r?Ne.default.basename(r):"";case"fileBasenameNoExtension":{let s=r?Ne.default.basename(r):"";return s?s.slice(0,s.length-Ne.default.extname(s).length):""}default:return n}}),e=e.replace(/\$[\w]+/g,n=>n=="$HOME"?Ln.default.homedir():process.env[n.slice(1)]||n)}return e}async createTerminal(e){let t=e.shellPath,r=e.shellArgs;t||(t=await this.nvim.getOption("shell"));let n=new Pv(t,r||[],this.nvim,e.name);return await n.start(e.cwd||this.cwd,e.env),this.terminals.set(n.bufnr,n),this._onDidOpenTerminal.fire(n),n}async callAsync(e,t){return this.isNvim?await this.nvim.call(e,t):await this.nvim.callAsync("coc#util#with_callback",[e,t])}registerTextDocumentContentProvider(e,t){this.schemeProviderMap.set(e,t),this.setupDynamicAutocmd();let r=[];return t.onDidChange&&t.onDidChange(async n=>{let o=this.getDocument(n.toString());if(o){let{buffer:s}=o,a=new oe.CancellationTokenSource,l=await Promise.resolve(t.provideTextDocumentContent(n,a.token));await s.setLines(l.split(/\r?\n/),{start:0,end:-1,strictIndexing:!1})}},null,r),oe.Disposable.create(()=>{this.schemeProviderMap.delete(e),J(r),this.setupDynamicAutocmd()})}registerKeymap(e,t,r,n={}){if(!t)throw new Error(`Invalid key ${t} of registerKeymap`);if(this.keymaps.has(t))throw new Error(`${t} already exists.`);n=Object.assign({sync:!0,cancel:!0,silent:!0,repeat:!1},n);let{nvim:o}=this;this.keymaps.set(t,[r,!!n.repeat]);let s=n.sync?"request":"notify",a=n.silent?"":"";for(let l of e)if(l=="i")o.command(`inoremap ${a} (coc-${t}) coc#_insert_key('${s}', '${t}', ${n.cancel?1:0})`,!0);else{let u=OS(l);o.command(`${l}noremap ${a} (coc-${t}) :${u}call coc#rpc#${s}('doKeymap', ['${t}'])`,!0)}return oe.Disposable.create(()=>{this.keymaps.delete(t);for(let l of e)o.command(`${l}unmap (coc-${t})`,!0)})}registerExprKeymap(e,t,r,n=!1){if(!t)return;let o=`${e}${global.Buffer.from(t).toString("base64")}${n?"1":"0"}`,{nvim:s}=this;return this.keymaps.set(o,[r,!1]),e=="i"?s.command(`inoremap ${n?"":""} ${t} coc#_insert_key('request', '${o}')`,!0):s.command(`${e}noremap ${n?"":""} ${t} coc#rpc#request('doKeymap', ['${o}'])`,!0),oe.Disposable.create(()=>{this.keymaps.delete(o),s.command(`${e}unmap ${n?"":""} ${t}`,!0)})}registerLocalKeymap(e,t,r,n=!1){let o=Ao(),{nvim:s}=this;this.keymaps.set(o,[r,!1]);let a=this.nvim.createBuffer(this.bufnr),l=n?"notify":"request",u=OS(e),c=t.startsWith("<")&&t.endsWith(">")?`{${t.slice(1,-1)}}`:t;if(this.isNvim&&!global.hasOwnProperty("__TEST__"))a.notify("nvim_buf_set_keymap",[e,t,`:${u}call coc#rpc#${l}('doKeymap', ['${o}', '', '${c}'])`,{silent:!0,nowait:!0}]);else{let f=`${e}noremap ${t} :${u}call coc#rpc#${l}('doKeymap', ['${o}', '', '${c}'])`;s.command(f,!0)}return oe.Disposable.create(()=>{this.keymaps.delete(o),s.call("coc#compat#buf_del_keymap",[a.id,e,t],!0)})}createDatabase(e){let t;global.hasOwnProperty("__TEST__")?(t=Ne.default.join(Ln.default.tmpdir(),`coc-${process.pid}`),Kt.default.mkdirpSync(t)):t=Ne.default.dirname(this.env.extensionRoot);let r=Ne.default.join(t,e+".json");return new tc(r)}createTask(e){return new Tv(this.nvim,e)}registerBufferSync(e){return new Rv(e,this)}setupDynamicAutocmd(e=!1){if(!e&&!this._dynAutocmd)return;this._dynAutocmd=!0;let t=this.schemeProviderMap.keys(),r=[];for(let o of t)r.push(`autocmd BufReadCmd,FileReadCmd,SourceCmd ${o}:/* call coc#rpc#request('CocAutocmd', ['BufReadCmd','${o}', expand('')])`);for(let[o,s]of this.autocmds.entries()){let a=s.arglist&&s.arglist.length?", "+s.arglist.join(", "):"",l=Array.isArray(s.event)?s.event.join(","):s.event,u=s.pattern!=null?s.pattern:"*";/\buser\b/i.test(l)&&(u=""),r.push(`autocmd ${l} ${u} call coc#rpc#${s.request?"request":"notify"}('doAutocmd', [${o}${a}])`)}for(let o of this.watchedOptions)r.push(`autocmd OptionSet ${o} call coc#rpc#notify('OptionSet',[expand(''), v:option_old, v:option_new])`);let n=`
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __defProps = Object.defineProperties;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getOwnPropSymbols = Object.getOwnPropertySymbols;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __propIsEnum = Object.prototype.propertyIsEnumerable;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __spreadValues = (a, b) => {
+ for (var prop in b || (b = {}))
+ if (__hasOwnProp.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ if (__getOwnPropSymbols)
+ for (var prop of __getOwnPropSymbols(b)) {
+ if (__propIsEnum.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ }
+ return a;
+};
+var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
+var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
+var __esm = (fn, res) => function __init() {
+ return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
+};
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __export = (target, all) => {
+ __markAsModule(target);
+ for (var name2 in all)
+ __defProp(target, name2, { get: all[name2], enumerable: true });
+};
+var __reExport = (target, module2, desc) => {
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
+ for (let key of __getOwnPropNames(module2))
+ if (!__hasOwnProp.call(target, key) && key !== "default")
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+ }
+ return target;
+};
+var __toModule = (module2) => {
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
+};
+var __decorateClass = (decorators, target, key, kind) => {
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
+ if (decorator = decorators[i])
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
+ if (kind && result)
+ __defProp(target, key, result);
+ return result;
+};
+
+// node_modules/ms/index.js
+var require_ms = __commonJS({
+ "node_modules/ms/index.js"(exports2, module2) {
+ var s = 1e3;
+ var m = s * 60;
+ var h = m * 60;
+ var d = h * 24;
+ var w = d * 7;
+ var y = d * 365.25;
+ module2.exports = function(val, options) {
+ options = options || {};
+ var type = typeof val;
+ if (type === "string" && val.length > 0) {
+ return parse5(val);
+ } else if (type === "number" && isFinite(val)) {
+ return options.long ? fmtLong(val) : fmtShort(val);
+ }
+ throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
+ };
+ function parse5(str) {
+ str = String(str);
+ if (str.length > 100) {
+ return;
+ }
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
+ if (!match) {
+ return;
+ }
+ var n = parseFloat(match[1]);
+ var type = (match[2] || "ms").toLowerCase();
+ switch (type) {
+ case "years":
+ case "year":
+ case "yrs":
+ case "yr":
+ case "y":
+ return n * y;
+ case "weeks":
+ case "week":
+ case "w":
+ return n * w;
+ case "days":
+ case "day":
+ case "d":
+ return n * d;
+ case "hours":
+ case "hour":
+ case "hrs":
+ case "hr":
+ case "h":
+ return n * h;
+ case "minutes":
+ case "minute":
+ case "mins":
+ case "min":
+ case "m":
+ return n * m;
+ case "seconds":
+ case "second":
+ case "secs":
+ case "sec":
+ case "s":
+ return n * s;
+ case "milliseconds":
+ case "millisecond":
+ case "msecs":
+ case "msec":
+ case "ms":
+ return n;
+ default:
+ return void 0;
+ }
+ }
+ function fmtShort(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return Math.round(ms / d) + "d";
+ }
+ if (msAbs >= h) {
+ return Math.round(ms / h) + "h";
+ }
+ if (msAbs >= m) {
+ return Math.round(ms / m) + "m";
+ }
+ if (msAbs >= s) {
+ return Math.round(ms / s) + "s";
+ }
+ return ms + "ms";
+ }
+ function fmtLong(ms) {
+ var msAbs = Math.abs(ms);
+ if (msAbs >= d) {
+ return plural(ms, msAbs, d, "day");
+ }
+ if (msAbs >= h) {
+ return plural(ms, msAbs, h, "hour");
+ }
+ if (msAbs >= m) {
+ return plural(ms, msAbs, m, "minute");
+ }
+ if (msAbs >= s) {
+ return plural(ms, msAbs, s, "second");
+ }
+ return ms + " ms";
+ }
+ function plural(ms, msAbs, n, name2) {
+ var isPlural = msAbs >= n * 1.5;
+ return Math.round(ms / n) + " " + name2 + (isPlural ? "s" : "");
+ }
+ }
+});
+
+// node_modules/debug/src/common.js
+var require_common = __commonJS({
+ "node_modules/debug/src/common.js"(exports2, module2) {
+ function setup(env) {
+ createDebug.debug = createDebug;
+ createDebug.default = createDebug;
+ createDebug.coerce = coerce;
+ createDebug.disable = disable;
+ createDebug.enable = enable;
+ createDebug.enabled = enabled;
+ createDebug.humanize = require_ms();
+ createDebug.destroy = destroy;
+ Object.keys(env).forEach((key) => {
+ createDebug[key] = env[key];
+ });
+ createDebug.names = [];
+ createDebug.skips = [];
+ createDebug.formatters = {};
+ function selectColor(namespace) {
+ let hash = 0;
+ for (let i = 0; i < namespace.length; i++) {
+ hash = (hash << 5) - hash + namespace.charCodeAt(i);
+ hash |= 0;
+ }
+ return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
+ }
+ createDebug.selectColor = selectColor;
+ function createDebug(namespace) {
+ let prevTime;
+ let enableOverride = null;
+ let namespacesCache;
+ let enabledCache;
+ function debug(...args) {
+ if (!debug.enabled) {
+ return;
+ }
+ const self2 = debug;
+ const curr = Number(new Date());
+ const ms = curr - (prevTime || curr);
+ self2.diff = ms;
+ self2.prev = prevTime;
+ self2.curr = curr;
+ prevTime = curr;
+ args[0] = createDebug.coerce(args[0]);
+ if (typeof args[0] !== "string") {
+ args.unshift("%O");
+ }
+ let index = 0;
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format2) => {
+ if (match === "%%") {
+ return "%";
+ }
+ index++;
+ const formatter2 = createDebug.formatters[format2];
+ if (typeof formatter2 === "function") {
+ const val = args[index];
+ match = formatter2.call(self2, val);
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+ createDebug.formatArgs.call(self2, args);
+ const logFn = self2.log || createDebug.log;
+ logFn.apply(self2, args);
+ }
+ debug.namespace = namespace;
+ debug.useColors = createDebug.useColors();
+ debug.color = createDebug.selectColor(namespace);
+ debug.extend = extend;
+ debug.destroy = createDebug.destroy;
+ Object.defineProperty(debug, "enabled", {
+ enumerable: true,
+ configurable: false,
+ get: () => {
+ if (enableOverride !== null) {
+ return enableOverride;
+ }
+ if (namespacesCache !== createDebug.namespaces) {
+ namespacesCache = createDebug.namespaces;
+ enabledCache = createDebug.enabled(namespace);
+ }
+ return enabledCache;
+ },
+ set: (v) => {
+ enableOverride = v;
+ }
+ });
+ if (typeof createDebug.init === "function") {
+ createDebug.init(debug);
+ }
+ return debug;
+ }
+ function extend(namespace, delimiter) {
+ const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
+ newDebug.log = this.log;
+ return newDebug;
+ }
+ function enable(namespaces) {
+ createDebug.save(namespaces);
+ createDebug.namespaces = namespaces;
+ createDebug.names = [];
+ createDebug.skips = [];
+ let i;
+ const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
+ const len = split.length;
+ for (i = 0; i < len; i++) {
+ if (!split[i]) {
+ continue;
+ }
+ namespaces = split[i].replace(/\*/g, ".*?");
+ if (namespaces[0] === "-") {
+ createDebug.skips.push(new RegExp("^" + namespaces.substr(1) + "$"));
+ } else {
+ createDebug.names.push(new RegExp("^" + namespaces + "$"));
+ }
+ }
+ }
+ function disable() {
+ const namespaces = [
+ ...createDebug.names.map(toNamespace),
+ ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
+ ].join(",");
+ createDebug.enable("");
+ return namespaces;
+ }
+ function enabled(name2) {
+ if (name2[name2.length - 1] === "*") {
+ return true;
+ }
+ let i;
+ let len;
+ for (i = 0, len = createDebug.skips.length; i < len; i++) {
+ if (createDebug.skips[i].test(name2)) {
+ return false;
+ }
+ }
+ for (i = 0, len = createDebug.names.length; i < len; i++) {
+ if (createDebug.names[i].test(name2)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function toNamespace(regexp) {
+ return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
+ }
+ function coerce(val) {
+ if (val instanceof Error) {
+ return val.stack || val.message;
+ }
+ return val;
+ }
+ function destroy() {
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
+ }
+ createDebug.enable(createDebug.load());
+ return createDebug;
+ }
+ module2.exports = setup;
+ }
+});
+
+// node_modules/debug/src/browser.js
+var require_browser = __commonJS({
+ "node_modules/debug/src/browser.js"(exports2, module2) {
+ exports2.formatArgs = formatArgs;
+ exports2.save = save;
+ exports2.load = load;
+ exports2.useColors = useColors;
+ exports2.storage = localstorage();
+ exports2.destroy = (() => {
+ let warned = false;
+ return () => {
+ if (!warned) {
+ warned = true;
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
+ }
+ };
+ })();
+ exports2.colors = [
+ "#0000CC",
+ "#0000FF",
+ "#0033CC",
+ "#0033FF",
+ "#0066CC",
+ "#0066FF",
+ "#0099CC",
+ "#0099FF",
+ "#00CC00",
+ "#00CC33",
+ "#00CC66",
+ "#00CC99",
+ "#00CCCC",
+ "#00CCFF",
+ "#3300CC",
+ "#3300FF",
+ "#3333CC",
+ "#3333FF",
+ "#3366CC",
+ "#3366FF",
+ "#3399CC",
+ "#3399FF",
+ "#33CC00",
+ "#33CC33",
+ "#33CC66",
+ "#33CC99",
+ "#33CCCC",
+ "#33CCFF",
+ "#6600CC",
+ "#6600FF",
+ "#6633CC",
+ "#6633FF",
+ "#66CC00",
+ "#66CC33",
+ "#9900CC",
+ "#9900FF",
+ "#9933CC",
+ "#9933FF",
+ "#99CC00",
+ "#99CC33",
+ "#CC0000",
+ "#CC0033",
+ "#CC0066",
+ "#CC0099",
+ "#CC00CC",
+ "#CC00FF",
+ "#CC3300",
+ "#CC3333",
+ "#CC3366",
+ "#CC3399",
+ "#CC33CC",
+ "#CC33FF",
+ "#CC6600",
+ "#CC6633",
+ "#CC9900",
+ "#CC9933",
+ "#CCCC00",
+ "#CCCC33",
+ "#FF0000",
+ "#FF0033",
+ "#FF0066",
+ "#FF0099",
+ "#FF00CC",
+ "#FF00FF",
+ "#FF3300",
+ "#FF3333",
+ "#FF3366",
+ "#FF3399",
+ "#FF33CC",
+ "#FF33FF",
+ "#FF6600",
+ "#FF6633",
+ "#FF9900",
+ "#FF9933",
+ "#FFCC00",
+ "#FFCC33"
+ ];
+ function useColors() {
+ if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
+ return true;
+ }
+ if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
+ return false;
+ }
+ return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
+ }
+ function formatArgs(args) {
+ args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
+ if (!this.useColors) {
+ return;
+ }
+ const c = "color: " + this.color;
+ args.splice(1, 0, c, "color: inherit");
+ let index = 0;
+ let lastC = 0;
+ args[0].replace(/%[a-zA-Z%]/g, (match) => {
+ if (match === "%%") {
+ return;
+ }
+ index++;
+ if (match === "%c") {
+ lastC = index;
+ }
+ });
+ args.splice(lastC, 0, c);
+ }
+ exports2.log = console.debug || console.log || (() => {
+ });
+ function save(namespaces) {
+ try {
+ if (namespaces) {
+ exports2.storage.setItem("debug", namespaces);
+ } else {
+ exports2.storage.removeItem("debug");
+ }
+ } catch (error) {
+ }
+ }
+ function load() {
+ let r;
+ try {
+ r = exports2.storage.getItem("debug");
+ } catch (error) {
+ }
+ if (!r && typeof process !== "undefined" && "env" in process) {
+ r = process.env.DEBUG;
+ }
+ return r;
+ }
+ function localstorage() {
+ try {
+ return localStorage;
+ } catch (error) {
+ }
+ }
+ module2.exports = require_common()(exports2);
+ var { formatters } = module2.exports;
+ formatters.j = function(v) {
+ try {
+ return JSON.stringify(v);
+ } catch (error) {
+ return "[UnexpectedJSONParseError]: " + error.message;
+ }
+ };
+ }
+});
+
+// node_modules/has-flag/index.js
+var require_has_flag = __commonJS({
+ "node_modules/has-flag/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = (flag, argv = process.argv) => {
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
+ const position = argv.indexOf(prefix + flag);
+ const terminatorPosition = argv.indexOf("--");
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
+ };
+ }
+});
+
+// node_modules/supports-color/index.js
+var require_supports_color = __commonJS({
+ "node_modules/supports-color/index.js"(exports2, module2) {
+ "use strict";
+ var os10 = require("os");
+ var tty = require("tty");
+ var hasFlag = require_has_flag();
+ var { env } = process;
+ var forceColor;
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
+ forceColor = 0;
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
+ forceColor = 1;
+ }
+ if ("FORCE_COLOR" in env) {
+ if (env.FORCE_COLOR === "true") {
+ forceColor = 1;
+ } else if (env.FORCE_COLOR === "false") {
+ forceColor = 0;
+ } else {
+ forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
+ }
+ }
+ function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+ }
+ function supportsColor(haveStream, streamIsTTY) {
+ if (forceColor === 0) {
+ return 0;
+ }
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
+ return 3;
+ }
+ if (hasFlag("color=256")) {
+ return 2;
+ }
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
+ return 0;
+ }
+ const min = forceColor || 0;
+ if (env.TERM === "dumb") {
+ return min;
+ }
+ if (process.platform === "win32") {
+ const osRelease = os10.release().split(".");
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+ return 1;
+ }
+ if ("CI" in env) {
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
+ return 1;
+ }
+ return min;
+ }
+ if ("TEAMCITY_VERSION" in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
+ }
+ if (env.COLORTERM === "truecolor") {
+ return 3;
+ }
+ if ("TERM_PROGRAM" in env) {
+ const version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
+ switch (env.TERM_PROGRAM) {
+ case "iTerm.app":
+ return version2 >= 3 ? 3 : 2;
+ case "Apple_Terminal":
+ return 2;
+ }
+ }
+ if (/-256(color)?$/i.test(env.TERM)) {
+ return 2;
+ }
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
+ return 1;
+ }
+ if ("COLORTERM" in env) {
+ return 1;
+ }
+ return min;
+ }
+ function getSupportLevel(stream) {
+ const level = supportsColor(stream, stream && stream.isTTY);
+ return translateLevel(level);
+ }
+ module2.exports = {
+ supportsColor: getSupportLevel,
+ stdout: translateLevel(supportsColor(true, tty.isatty(1))),
+ stderr: translateLevel(supportsColor(true, tty.isatty(2)))
+ };
+ }
+});
+
+// node_modules/debug/src/node.js
+var require_node = __commonJS({
+ "node_modules/debug/src/node.js"(exports2, module2) {
+ var tty = require("tty");
+ var util4 = require("util");
+ exports2.init = init;
+ exports2.log = log;
+ exports2.formatArgs = formatArgs;
+ exports2.save = save;
+ exports2.load = load;
+ exports2.useColors = useColors;
+ exports2.destroy = util4.deprecate(() => {
+ }, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
+ exports2.colors = [6, 2, 3, 4, 5, 1];
+ try {
+ const supportsColor = require_supports_color();
+ if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
+ exports2.colors = [
+ 20,
+ 21,
+ 26,
+ 27,
+ 32,
+ 33,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 56,
+ 57,
+ 62,
+ 63,
+ 68,
+ 69,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 92,
+ 93,
+ 98,
+ 99,
+ 112,
+ 113,
+ 128,
+ 129,
+ 134,
+ 135,
+ 148,
+ 149,
+ 160,
+ 161,
+ 162,
+ 163,
+ 164,
+ 165,
+ 166,
+ 167,
+ 168,
+ 169,
+ 170,
+ 171,
+ 172,
+ 173,
+ 178,
+ 179,
+ 184,
+ 185,
+ 196,
+ 197,
+ 198,
+ 199,
+ 200,
+ 201,
+ 202,
+ 203,
+ 204,
+ 205,
+ 206,
+ 207,
+ 208,
+ 209,
+ 214,
+ 215,
+ 220,
+ 221
+ ];
+ }
+ } catch (error) {
+ }
+ exports2.inspectOpts = Object.keys(process.env).filter((key) => {
+ return /^debug_/i.test(key);
+ }).reduce((obj, key) => {
+ const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => {
+ return k.toUpperCase();
+ });
+ let val = process.env[key];
+ if (/^(yes|on|true|enabled)$/i.test(val)) {
+ val = true;
+ } else if (/^(no|off|false|disabled)$/i.test(val)) {
+ val = false;
+ } else if (val === "null") {
+ val = null;
+ } else {
+ val = Number(val);
+ }
+ obj[prop] = val;
+ return obj;
+ }, {});
+ function useColors() {
+ return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd);
+ }
+ function formatArgs(args) {
+ const { namespace: name2, useColors: useColors2 } = this;
+ if (useColors2) {
+ const c = this.color;
+ const colorCode = "[3" + (c < 8 ? c : "8;5;" + c);
+ const prefix = ` ${colorCode};1m${name2} [0m`;
+ args[0] = prefix + args[0].split("\n").join("\n" + prefix);
+ args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "[0m");
+ } else {
+ args[0] = getDate() + name2 + " " + args[0];
+ }
+ }
+ function getDate() {
+ if (exports2.inspectOpts.hideDate) {
+ return "";
+ }
+ return new Date().toISOString() + " ";
+ }
+ function log(...args) {
+ return process.stderr.write(util4.format(...args) + "\n");
+ }
+ function save(namespaces) {
+ if (namespaces) {
+ process.env.DEBUG = namespaces;
+ } else {
+ delete process.env.DEBUG;
+ }
+ }
+ function load() {
+ return process.env.DEBUG;
+ }
+ function init(debug) {
+ debug.inspectOpts = {};
+ const keys = Object.keys(exports2.inspectOpts);
+ for (let i = 0; i < keys.length; i++) {
+ debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
+ }
+ }
+ module2.exports = require_common()(exports2);
+ var { formatters } = module2.exports;
+ formatters.o = function(v) {
+ this.inspectOpts.colors = this.useColors;
+ return util4.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" ");
+ };
+ formatters.O = function(v) {
+ this.inspectOpts.colors = this.useColors;
+ return util4.inspect(v, this.inspectOpts);
+ };
+ }
+});
+
+// node_modules/debug/src/index.js
+var require_src = __commonJS({
+ "node_modules/debug/src/index.js"(exports2, module2) {
+ if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
+ module2.exports = require_browser();
+ } else {
+ module2.exports = require_node();
+ }
+ }
+});
+
+// node_modules/rfdc/index.js
+var require_rfdc = __commonJS({
+ "node_modules/rfdc/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = rfdc;
+ function copyBuffer(cur) {
+ if (cur instanceof Buffer) {
+ return Buffer.from(cur);
+ }
+ return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);
+ }
+ function rfdc(opts) {
+ opts = opts || {};
+ if (opts.circles)
+ return rfdcCircles(opts);
+ return opts.proto ? cloneProto : clone;
+ function cloneArray(a, fn) {
+ var keys = Object.keys(a);
+ var a2 = new Array(keys.length);
+ for (var i = 0; i < keys.length; i++) {
+ var k = keys[i];
+ var cur = a[k];
+ if (typeof cur !== "object" || cur === null) {
+ a2[k] = cur;
+ } else if (cur instanceof Date) {
+ a2[k] = new Date(cur);
+ } else if (ArrayBuffer.isView(cur)) {
+ a2[k] = copyBuffer(cur);
+ } else {
+ a2[k] = fn(cur);
+ }
+ }
+ return a2;
+ }
+ function clone(o) {
+ if (typeof o !== "object" || o === null)
+ return o;
+ if (o instanceof Date)
+ return new Date(o);
+ if (Array.isArray(o))
+ return cloneArray(o, clone);
+ if (o instanceof Map)
+ return new Map(cloneArray(Array.from(o), clone));
+ if (o instanceof Set)
+ return new Set(cloneArray(Array.from(o), clone));
+ var o2 = {};
+ for (var k in o) {
+ if (Object.hasOwnProperty.call(o, k) === false)
+ continue;
+ var cur = o[k];
+ if (typeof cur !== "object" || cur === null) {
+ o2[k] = cur;
+ } else if (cur instanceof Date) {
+ o2[k] = new Date(cur);
+ } else if (cur instanceof Map) {
+ o2[k] = new Map(cloneArray(Array.from(cur), clone));
+ } else if (cur instanceof Set) {
+ o2[k] = new Set(cloneArray(Array.from(cur), clone));
+ } else if (ArrayBuffer.isView(cur)) {
+ o2[k] = copyBuffer(cur);
+ } else {
+ o2[k] = clone(cur);
+ }
+ }
+ return o2;
+ }
+ function cloneProto(o) {
+ if (typeof o !== "object" || o === null)
+ return o;
+ if (o instanceof Date)
+ return new Date(o);
+ if (Array.isArray(o))
+ return cloneArray(o, cloneProto);
+ if (o instanceof Map)
+ return new Map(cloneArray(Array.from(o), cloneProto));
+ if (o instanceof Set)
+ return new Set(cloneArray(Array.from(o), cloneProto));
+ var o2 = {};
+ for (var k in o) {
+ var cur = o[k];
+ if (typeof cur !== "object" || cur === null) {
+ o2[k] = cur;
+ } else if (cur instanceof Date) {
+ o2[k] = new Date(cur);
+ } else if (cur instanceof Map) {
+ o2[k] = new Map(cloneArray(Array.from(cur), cloneProto));
+ } else if (cur instanceof Set) {
+ o2[k] = new Set(cloneArray(Array.from(cur), cloneProto));
+ } else if (ArrayBuffer.isView(cur)) {
+ o2[k] = copyBuffer(cur);
+ } else {
+ o2[k] = cloneProto(cur);
+ }
+ }
+ return o2;
+ }
+ }
+ function rfdcCircles(opts) {
+ var refs = [];
+ var refsNew = [];
+ return opts.proto ? cloneProto : clone;
+ function cloneArray(a, fn) {
+ var keys = Object.keys(a);
+ var a2 = new Array(keys.length);
+ for (var i = 0; i < keys.length; i++) {
+ var k = keys[i];
+ var cur = a[k];
+ if (typeof cur !== "object" || cur === null) {
+ a2[k] = cur;
+ } else if (cur instanceof Date) {
+ a2[k] = new Date(cur);
+ } else if (ArrayBuffer.isView(cur)) {
+ a2[k] = copyBuffer(cur);
+ } else {
+ var index = refs.indexOf(cur);
+ if (index !== -1) {
+ a2[k] = refsNew[index];
+ } else {
+ a2[k] = fn(cur);
+ }
+ }
+ }
+ return a2;
+ }
+ function clone(o) {
+ if (typeof o !== "object" || o === null)
+ return o;
+ if (o instanceof Date)
+ return new Date(o);
+ if (Array.isArray(o))
+ return cloneArray(o, clone);
+ if (o instanceof Map)
+ return new Map(cloneArray(Array.from(o), clone));
+ if (o instanceof Set)
+ return new Set(cloneArray(Array.from(o), clone));
+ var o2 = {};
+ refs.push(o);
+ refsNew.push(o2);
+ for (var k in o) {
+ if (Object.hasOwnProperty.call(o, k) === false)
+ continue;
+ var cur = o[k];
+ if (typeof cur !== "object" || cur === null) {
+ o2[k] = cur;
+ } else if (cur instanceof Date) {
+ o2[k] = new Date(cur);
+ } else if (cur instanceof Map) {
+ o2[k] = new Map(cloneArray(Array.from(cur), clone));
+ } else if (cur instanceof Set) {
+ o2[k] = new Set(cloneArray(Array.from(cur), clone));
+ } else if (ArrayBuffer.isView(cur)) {
+ o2[k] = copyBuffer(cur);
+ } else {
+ var i = refs.indexOf(cur);
+ if (i !== -1) {
+ o2[k] = refsNew[i];
+ } else {
+ o2[k] = clone(cur);
+ }
+ }
+ }
+ refs.pop();
+ refsNew.pop();
+ return o2;
+ }
+ function cloneProto(o) {
+ if (typeof o !== "object" || o === null)
+ return o;
+ if (o instanceof Date)
+ return new Date(o);
+ if (Array.isArray(o))
+ return cloneArray(o, cloneProto);
+ if (o instanceof Map)
+ return new Map(cloneArray(Array.from(o), cloneProto));
+ if (o instanceof Set)
+ return new Set(cloneArray(Array.from(o), cloneProto));
+ var o2 = {};
+ refs.push(o);
+ refsNew.push(o2);
+ for (var k in o) {
+ var cur = o[k];
+ if (typeof cur !== "object" || cur === null) {
+ o2[k] = cur;
+ } else if (cur instanceof Date) {
+ o2[k] = new Date(cur);
+ } else if (cur instanceof Map) {
+ o2[k] = new Map(cloneArray(Array.from(cur), cloneProto));
+ } else if (cur instanceof Set) {
+ o2[k] = new Set(cloneArray(Array.from(cur), cloneProto));
+ } else if (ArrayBuffer.isView(cur)) {
+ o2[k] = copyBuffer(cur);
+ } else {
+ var i = refs.indexOf(cur);
+ if (i !== -1) {
+ o2[k] = refsNew[i];
+ } else {
+ o2[k] = cloneProto(cur);
+ }
+ }
+ }
+ refs.pop();
+ refsNew.pop();
+ return o2;
+ }
+ }
+ }
+});
+
+// node_modules/log4js/lib/configuration.js
+var require_configuration = __commonJS({
+ "node_modules/log4js/lib/configuration.js"(exports2, module2) {
+ var util4 = require("util");
+ var debug = require_src()("log4js:configuration");
+ var preProcessingListeners = [];
+ var listeners = [];
+ var not = (thing) => !thing;
+ var anObject = (thing) => thing && typeof thing === "object" && !Array.isArray(thing);
+ var validIdentifier = (thing) => /^[A-Za-z][A-Za-z0-9_]*$/g.test(thing);
+ var anInteger = (thing) => thing && typeof thing === "number" && Number.isInteger(thing);
+ var addListener = (fn) => {
+ listeners.push(fn);
+ debug(`Added listener, now ${listeners.length} listeners`);
+ };
+ var addPreProcessingListener = (fn) => {
+ preProcessingListeners.push(fn);
+ debug(`Added pre-processing listener, now ${preProcessingListeners.length} listeners`);
+ };
+ var throwExceptionIf = (config, checks, message) => {
+ const tests = Array.isArray(checks) ? checks : [checks];
+ tests.forEach((test) => {
+ if (test) {
+ throw new Error(`Problem with log4js configuration: (${util4.inspect(config, { depth: 5 })}) - ${message}`);
+ }
+ });
+ };
+ var configure = (candidate) => {
+ debug("New configuration to be validated: ", candidate);
+ throwExceptionIf(candidate, not(anObject(candidate)), "must be an object.");
+ debug(`Calling pre-processing listeners (${preProcessingListeners.length})`);
+ preProcessingListeners.forEach((listener) => listener(candidate));
+ debug("Configuration pre-processing finished.");
+ debug(`Calling configuration listeners (${listeners.length})`);
+ listeners.forEach((listener) => listener(candidate));
+ debug("Configuration finished.");
+ };
+ module2.exports = {
+ configure,
+ addListener,
+ addPreProcessingListener,
+ throwExceptionIf,
+ anObject,
+ anInteger,
+ validIdentifier,
+ not
+ };
+ }
+});
+
+// node_modules/date-format/lib/index.js
+var require_lib = __commonJS({
+ "node_modules/date-format/lib/index.js"(exports2, module2) {
+ "use strict";
+ function padWithZeros(vNumber, width) {
+ var numAsString = vNumber.toString();
+ while (numAsString.length < width) {
+ numAsString = "0" + numAsString;
+ }
+ return numAsString;
+ }
+ function addZero(vNumber) {
+ return padWithZeros(vNumber, 2);
+ }
+ function offset(timezoneOffset) {
+ var os10 = Math.abs(timezoneOffset);
+ var h = String(Math.floor(os10 / 60));
+ var m = String(os10 % 60);
+ if (h.length === 1) {
+ h = "0" + h;
+ }
+ if (m.length === 1) {
+ m = "0" + m;
+ }
+ return timezoneOffset < 0 ? "+" + h + m : "-" + h + m;
+ }
+ function asString(format2, date) {
+ if (typeof format2 !== "string") {
+ date = format2;
+ format2 = module2.exports.ISO8601_FORMAT;
+ }
+ if (!date) {
+ date = module2.exports.now();
+ }
+ var vDay = addZero(date.getDate());
+ var vMonth = addZero(date.getMonth() + 1);
+ var vYearLong = addZero(date.getFullYear());
+ var vYearShort = addZero(vYearLong.substring(2, 4));
+ var vYear = format2.indexOf("yyyy") > -1 ? vYearLong : vYearShort;
+ var vHour = addZero(date.getHours());
+ var vMinute = addZero(date.getMinutes());
+ var vSecond = addZero(date.getSeconds());
+ var vMillisecond = padWithZeros(date.getMilliseconds(), 3);
+ var vTimeZone = offset(date.getTimezoneOffset());
+ var formatted = format2.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear).replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond).replace(/SSS/g, vMillisecond).replace(/O/g, vTimeZone);
+ return formatted;
+ }
+ function setDatePart(date, part, value, local) {
+ date["set" + (local ? "" : "UTC") + part](value);
+ }
+ function extractDateParts(pattern, str, missingValuesDate) {
+ var local = pattern.indexOf("O") < 0;
+ var matchers = [
+ {
+ pattern: /y{1,4}/,
+ regexp: "\\d{1,4}",
+ fn: function(date2, value) {
+ setDatePart(date2, "FullYear", value, local);
+ }
+ },
+ {
+ pattern: /MM/,
+ regexp: "\\d{1,2}",
+ fn: function(date2, value) {
+ setDatePart(date2, "Month", value - 1, local);
+ }
+ },
+ {
+ pattern: /dd/,
+ regexp: "\\d{1,2}",
+ fn: function(date2, value) {
+ setDatePart(date2, "Date", value, local);
+ }
+ },
+ {
+ pattern: /hh/,
+ regexp: "\\d{1,2}",
+ fn: function(date2, value) {
+ setDatePart(date2, "Hours", value, local);
+ }
+ },
+ {
+ pattern: /mm/,
+ regexp: "\\d\\d",
+ fn: function(date2, value) {
+ setDatePart(date2, "Minutes", value, local);
+ }
+ },
+ {
+ pattern: /ss/,
+ regexp: "\\d\\d",
+ fn: function(date2, value) {
+ setDatePart(date2, "Seconds", value, local);
+ }
+ },
+ {
+ pattern: /SSS/,
+ regexp: "\\d\\d\\d",
+ fn: function(date2, value) {
+ setDatePart(date2, "Milliseconds", value, local);
+ }
+ },
+ {
+ pattern: /O/,
+ regexp: "[+-]\\d{3,4}|Z",
+ fn: function(date2, value) {
+ if (value === "Z") {
+ value = 0;
+ }
+ var offset2 = Math.abs(value);
+ var timezoneOffset = (value > 0 ? -1 : 1) * (offset2 % 100 + Math.floor(offset2 / 100) * 60);
+ date2.setUTCMinutes(date2.getUTCMinutes() + timezoneOffset);
+ }
+ }
+ ];
+ var parsedPattern = matchers.reduce(function(p, m) {
+ if (m.pattern.test(p.regexp)) {
+ m.index = p.regexp.match(m.pattern).index;
+ p.regexp = p.regexp.replace(m.pattern, "(" + m.regexp + ")");
+ } else {
+ m.index = -1;
+ }
+ return p;
+ }, { regexp: pattern, index: [] });
+ var dateFns = matchers.filter(function(m) {
+ return m.index > -1;
+ });
+ dateFns.sort(function(a, b) {
+ return a.index - b.index;
+ });
+ var matcher = new RegExp(parsedPattern.regexp);
+ var matches = matcher.exec(str);
+ if (matches) {
+ var date = missingValuesDate || module2.exports.now();
+ dateFns.forEach(function(f, i) {
+ f.fn(date, matches[i + 1]);
+ });
+ return date;
+ }
+ throw new Error("String '" + str + "' could not be parsed as '" + pattern + "'");
+ }
+ function parse5(pattern, str, missingValuesDate) {
+ if (!pattern) {
+ throw new Error("pattern must be supplied");
+ }
+ return extractDateParts(pattern, str, missingValuesDate);
+ }
+ function now() {
+ return new Date();
+ }
+ module2.exports = asString;
+ module2.exports.asString = asString;
+ module2.exports.parse = parse5;
+ module2.exports.now = now;
+ module2.exports.ISO8601_FORMAT = "yyyy-MM-ddThh:mm:ss.SSS";
+ module2.exports.ISO8601_WITH_TZ_OFFSET_FORMAT = "yyyy-MM-ddThh:mm:ss.SSSO";
+ module2.exports.DATETIME_FORMAT = "dd MM yyyy hh:mm:ss.SSS";
+ module2.exports.ABSOLUTETIME_FORMAT = "hh:mm:ss.SSS";
+ }
+});
+
+// node_modules/log4js/lib/layouts.js
+var require_layouts = __commonJS({
+ "node_modules/log4js/lib/layouts.js"(exports2, module2) {
+ var dateFormat = require_lib();
+ var os10 = require("os");
+ var util4 = require("util");
+ var path36 = require("path");
+ var styles3 = {
+ bold: [1, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ white: [37, 39],
+ grey: [90, 39],
+ black: [90, 39],
+ blue: [34, 39],
+ cyan: [36, 39],
+ green: [32, 39],
+ magenta: [35, 39],
+ red: [91, 39],
+ yellow: [33, 39]
+ };
+ function colorizeStart(style2) {
+ return style2 ? `[${styles3[style2][0]}m` : "";
+ }
+ function colorizeEnd(style2) {
+ return style2 ? `[${styles3[style2][1]}m` : "";
+ }
+ function colorize(str, style2) {
+ return colorizeStart(style2) + str + colorizeEnd(style2);
+ }
+ function timestampLevelAndCategory(loggingEvent, colour) {
+ return colorize(util4.format("[%s] [%s] %s - ", dateFormat.asString(loggingEvent.startTime), loggingEvent.level.toString(), loggingEvent.categoryName), colour);
+ }
+ function basicLayout(loggingEvent) {
+ return timestampLevelAndCategory(loggingEvent) + util4.format(...loggingEvent.data);
+ }
+ function colouredLayout(loggingEvent) {
+ return timestampLevelAndCategory(loggingEvent, loggingEvent.level.colour) + util4.format(...loggingEvent.data);
+ }
+ function messagePassThroughLayout(loggingEvent) {
+ return util4.format(...loggingEvent.data);
+ }
+ function dummyLayout(loggingEvent) {
+ return loggingEvent.data[0];
+ }
+ function patternLayout(pattern, tokens) {
+ const TTCC_CONVERSION_PATTERN = "%r %p %c - %m%n";
+ const regex = /%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;
+ pattern = pattern || TTCC_CONVERSION_PATTERN;
+ function categoryName(loggingEvent, specifier) {
+ let loggerName = loggingEvent.categoryName;
+ if (specifier) {
+ const precision = parseInt(specifier, 10);
+ const loggerNameBits = loggerName.split(".");
+ if (precision < loggerNameBits.length) {
+ loggerName = loggerNameBits.slice(loggerNameBits.length - precision).join(".");
+ }
+ }
+ return loggerName;
+ }
+ function formatAsDate(loggingEvent, specifier) {
+ let format2 = dateFormat.ISO8601_FORMAT;
+ if (specifier) {
+ format2 = specifier;
+ if (format2 === "ISO8601") {
+ format2 = dateFormat.ISO8601_FORMAT;
+ } else if (format2 === "ISO8601_WITH_TZ_OFFSET") {
+ format2 = dateFormat.ISO8601_WITH_TZ_OFFSET_FORMAT;
+ } else if (format2 === "ABSOLUTE") {
+ format2 = dateFormat.ABSOLUTETIME_FORMAT;
+ } else if (format2 === "DATE") {
+ format2 = dateFormat.DATETIME_FORMAT;
+ }
+ }
+ return dateFormat.asString(format2, loggingEvent.startTime);
+ }
+ function hostname() {
+ return os10.hostname().toString();
+ }
+ function formatMessage(loggingEvent) {
+ return util4.format(...loggingEvent.data);
+ }
+ function endOfLine() {
+ return os10.EOL;
+ }
+ function logLevel(loggingEvent) {
+ return loggingEvent.level.toString();
+ }
+ function startTime(loggingEvent) {
+ return dateFormat.asString("hh:mm:ss", loggingEvent.startTime);
+ }
+ function startColour(loggingEvent) {
+ return colorizeStart(loggingEvent.level.colour);
+ }
+ function endColour(loggingEvent) {
+ return colorizeEnd(loggingEvent.level.colour);
+ }
+ function percent() {
+ return "%";
+ }
+ function pid(loggingEvent) {
+ return loggingEvent && loggingEvent.pid ? loggingEvent.pid.toString() : process.pid.toString();
+ }
+ function clusterInfo() {
+ return pid();
+ }
+ function userDefined(loggingEvent, specifier) {
+ if (typeof tokens[specifier] !== "undefined") {
+ return typeof tokens[specifier] === "function" ? tokens[specifier](loggingEvent) : tokens[specifier];
+ }
+ return null;
+ }
+ function contextDefined(loggingEvent, specifier) {
+ const resolver = loggingEvent.context[specifier];
+ if (typeof resolver !== "undefined") {
+ return typeof resolver === "function" ? resolver(loggingEvent) : resolver;
+ }
+ return null;
+ }
+ function fileName(loggingEvent, specifier) {
+ let filename = loggingEvent.fileName || "";
+ if (specifier) {
+ const fileDepth = parseInt(specifier, 10);
+ const fileList = filename.split(path36.sep);
+ if (fileList.length > fileDepth) {
+ filename = fileList.slice(-fileDepth).join(path36.sep);
+ }
+ }
+ return filename;
+ }
+ function lineNumber(loggingEvent) {
+ return loggingEvent.lineNumber ? `${loggingEvent.lineNumber}` : "";
+ }
+ function columnNumber(loggingEvent) {
+ return loggingEvent.columnNumber ? `${loggingEvent.columnNumber}` : "";
+ }
+ function callStack(loggingEvent) {
+ return loggingEvent.callStack || "";
+ }
+ const replacers = {
+ c: categoryName,
+ d: formatAsDate,
+ h: hostname,
+ m: formatMessage,
+ n: endOfLine,
+ p: logLevel,
+ r: startTime,
+ "[": startColour,
+ "]": endColour,
+ y: clusterInfo,
+ z: pid,
+ "%": percent,
+ x: userDefined,
+ X: contextDefined,
+ f: fileName,
+ l: lineNumber,
+ o: columnNumber,
+ s: callStack
+ };
+ function replaceToken(conversionCharacter, loggingEvent, specifier) {
+ return replacers[conversionCharacter](loggingEvent, specifier);
+ }
+ function truncate(truncation, toTruncate) {
+ let len;
+ if (truncation) {
+ len = parseInt(truncation.substr(1), 10);
+ return len > 0 ? toTruncate.slice(0, len) : toTruncate.slice(len);
+ }
+ return toTruncate;
+ }
+ function pad2(padding, toPad) {
+ let len;
+ if (padding) {
+ if (padding.charAt(0) === "-") {
+ len = parseInt(padding.substr(1), 10);
+ while (toPad.length < len) {
+ toPad += " ";
+ }
+ } else {
+ len = parseInt(padding, 10);
+ while (toPad.length < len) {
+ toPad = ` ${toPad}`;
+ }
+ }
+ }
+ return toPad;
+ }
+ function truncateAndPad(toTruncAndPad, truncation, padding) {
+ let replacement = toTruncAndPad;
+ replacement = truncate(truncation, replacement);
+ replacement = pad2(padding, replacement);
+ return replacement;
+ }
+ return function(loggingEvent) {
+ let formattedString = "";
+ let result;
+ let searchString = pattern;
+ while ((result = regex.exec(searchString)) !== null) {
+ const padding = result[1];
+ const truncation = result[2];
+ const conversionCharacter = result[3];
+ const specifier = result[5];
+ const text = result[6];
+ if (text) {
+ formattedString += text.toString();
+ } else {
+ const replacement = replaceToken(conversionCharacter, loggingEvent, specifier);
+ formattedString += truncateAndPad(replacement, truncation, padding);
+ }
+ searchString = searchString.substr(result.index + result[0].length);
+ }
+ return formattedString;
+ };
+ }
+ var layoutMakers = {
+ messagePassThrough() {
+ return messagePassThroughLayout;
+ },
+ basic() {
+ return basicLayout;
+ },
+ colored() {
+ return colouredLayout;
+ },
+ coloured() {
+ return colouredLayout;
+ },
+ pattern(config) {
+ return patternLayout(config && config.pattern, config && config.tokens);
+ },
+ dummy() {
+ return dummyLayout;
+ }
+ };
+ module2.exports = {
+ basicLayout,
+ messagePassThroughLayout,
+ patternLayout,
+ colouredLayout,
+ coloredLayout: colouredLayout,
+ dummyLayout,
+ addLayout(name2, serializerGenerator) {
+ layoutMakers[name2] = serializerGenerator;
+ },
+ layout(name2, config) {
+ return layoutMakers[name2] && layoutMakers[name2](config);
+ }
+ };
+ }
+});
+
+// node_modules/log4js/lib/levels.js
+var require_levels = __commonJS({
+ "node_modules/log4js/lib/levels.js"(exports2, module2) {
+ var configuration = require_configuration();
+ var validColours = [
+ "white",
+ "grey",
+ "black",
+ "blue",
+ "cyan",
+ "green",
+ "magenta",
+ "red",
+ "yellow"
+ ];
+ var Level = class {
+ constructor(level, levelStr, colour) {
+ this.level = level;
+ this.levelStr = levelStr;
+ this.colour = colour;
+ }
+ toString() {
+ return this.levelStr;
+ }
+ static getLevel(sArg, defaultLevel) {
+ if (!sArg) {
+ return defaultLevel;
+ }
+ if (sArg instanceof Level) {
+ return sArg;
+ }
+ if (sArg instanceof Object && sArg.levelStr) {
+ sArg = sArg.levelStr;
+ }
+ return Level[sArg.toString().toUpperCase()] || defaultLevel;
+ }
+ static addLevels(customLevels) {
+ if (customLevels) {
+ const levels = Object.keys(customLevels);
+ levels.forEach((l) => {
+ const levelStr = l.toUpperCase();
+ Level[levelStr] = new Level(customLevels[l].value, levelStr, customLevels[l].colour);
+ const existingLevelIndex = Level.levels.findIndex((lvl) => lvl.levelStr === levelStr);
+ if (existingLevelIndex > -1) {
+ Level.levels[existingLevelIndex] = Level[levelStr];
+ } else {
+ Level.levels.push(Level[levelStr]);
+ }
+ });
+ Level.levels.sort((a, b) => a.level - b.level);
+ }
+ }
+ isLessThanOrEqualTo(otherLevel) {
+ if (typeof otherLevel === "string") {
+ otherLevel = Level.getLevel(otherLevel);
+ }
+ return this.level <= otherLevel.level;
+ }
+ isGreaterThanOrEqualTo(otherLevel) {
+ if (typeof otherLevel === "string") {
+ otherLevel = Level.getLevel(otherLevel);
+ }
+ return this.level >= otherLevel.level;
+ }
+ isEqualTo(otherLevel) {
+ if (typeof otherLevel === "string") {
+ otherLevel = Level.getLevel(otherLevel);
+ }
+ return this.level === otherLevel.level;
+ }
+ };
+ Level.levels = [];
+ Level.addLevels({
+ ALL: { value: Number.MIN_VALUE, colour: "grey" },
+ TRACE: { value: 5e3, colour: "blue" },
+ DEBUG: { value: 1e4, colour: "cyan" },
+ INFO: { value: 2e4, colour: "green" },
+ WARN: { value: 3e4, colour: "yellow" },
+ ERROR: { value: 4e4, colour: "red" },
+ FATAL: { value: 5e4, colour: "magenta" },
+ MARK: { value: 9007199254740992, colour: "grey" },
+ OFF: { value: Number.MAX_VALUE, colour: "grey" }
+ });
+ configuration.addListener((config) => {
+ const levelConfig = config.levels;
+ if (levelConfig) {
+ configuration.throwExceptionIf(config, configuration.not(configuration.anObject(levelConfig)), "levels must be an object");
+ const newLevels = Object.keys(levelConfig);
+ newLevels.forEach((l) => {
+ configuration.throwExceptionIf(config, configuration.not(configuration.validIdentifier(l)), `level name "${l}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`);
+ configuration.throwExceptionIf(config, configuration.not(configuration.anObject(levelConfig[l])), `level "${l}" must be an object`);
+ configuration.throwExceptionIf(config, configuration.not(levelConfig[l].value), `level "${l}" must have a 'value' property`);
+ configuration.throwExceptionIf(config, configuration.not(configuration.anInteger(levelConfig[l].value)), `level "${l}".value must have an integer value`);
+ configuration.throwExceptionIf(config, configuration.not(levelConfig[l].colour), `level "${l}" must have a 'colour' property`);
+ configuration.throwExceptionIf(config, configuration.not(validColours.indexOf(levelConfig[l].colour) > -1), `level "${l}".colour must be one of ${validColours.join(", ")}`);
+ });
+ }
+ });
+ configuration.addListener((config) => {
+ Level.addLevels(config.levels);
+ });
+ module2.exports = Level;
+ }
+});
+
+// node_modules/flatted/esm/index.js
+var esm_exports = {};
+__export(esm_exports, {
+ default: () => esm_default,
+ parse: () => parse,
+ stringify: () => stringify
+});
+var Flatted, esm_default, parse, stringify;
+var init_esm = __esm({
+ "node_modules/flatted/esm/index.js"() {
+ Flatted = function(Primitive, primitive) {
+ var Flatted2 = {
+ parse: function parse5(text, reviver) {
+ var input = JSON.parse(text, Primitives).map(primitives);
+ var value = input[0];
+ var $ = reviver || noop;
+ var tmp = typeof value === "object" && value ? revive(input, new Set(), value, $) : value;
+ return $.call({ "": tmp }, "", tmp);
+ },
+ stringify: function stringify3(value, replacer, space) {
+ for (var firstRun, known = new Map(), input = [], output = [], $ = replacer && typeof replacer === typeof input ? function(k, v) {
+ if (k === "" || -1 < replacer.indexOf(k))
+ return v;
+ } : replacer || noop, i = +set(known, input, $.call({ "": value }, "", value)), replace = function(key, value2) {
+ if (firstRun) {
+ firstRun = !firstRun;
+ return value2;
+ }
+ var after = $.call(this, key, value2);
+ switch (typeof after) {
+ case "object":
+ if (after === null)
+ return after;
+ case primitive:
+ return known.get(after) || set(known, input, after);
+ }
+ return after;
+ }; i < input.length; i++) {
+ firstRun = true;
+ output[i] = JSON.stringify(input[i], replace, space);
+ }
+ return "[" + output.join(",") + "]";
+ }
+ };
+ return Flatted2;
+ function noop(key, value) {
+ return value;
+ }
+ function revive(input, parsed, output, $) {
+ return Object.keys(output).reduce(function(output2, key) {
+ var value = output2[key];
+ if (value instanceof Primitive) {
+ var tmp = input[value];
+ if (typeof tmp === "object" && !parsed.has(tmp)) {
+ parsed.add(tmp);
+ output2[key] = $.call(output2, key, revive(input, parsed, tmp, $));
+ } else {
+ output2[key] = $.call(output2, key, tmp);
+ }
+ } else
+ output2[key] = $.call(output2, key, value);
+ return output2;
+ }, output);
+ }
+ function set(known, input, value) {
+ var index = Primitive(input.push(value) - 1);
+ known.set(value, index);
+ return index;
+ }
+ function primitives(value) {
+ return value instanceof Primitive ? Primitive(value) : value;
+ }
+ function Primitives(key, value) {
+ return typeof value === primitive ? new Primitive(value) : value;
+ }
+ }(String, "string");
+ esm_default = Flatted;
+ parse = Flatted.parse;
+ stringify = Flatted.stringify;
+ }
+});
+
+// node_modules/log4js/lib/LoggingEvent.js
+var require_LoggingEvent = __commonJS({
+ "node_modules/log4js/lib/LoggingEvent.js"(exports2, module2) {
+ var flatted = (init_esm(), esm_exports);
+ var levels = require_levels();
+ var LoggingEvent = class {
+ constructor(categoryName, level, data, context, location) {
+ this.startTime = new Date();
+ this.categoryName = categoryName;
+ this.data = data;
+ this.level = level;
+ this.context = Object.assign({}, context);
+ this.pid = process.pid;
+ if (location) {
+ this.functionName = location.functionName;
+ this.fileName = location.fileName;
+ this.lineNumber = location.lineNumber;
+ this.columnNumber = location.columnNumber;
+ this.callStack = location.callStack;
+ }
+ }
+ serialise() {
+ const logData = this.data.map((e) => {
+ if (e && e.message && e.stack) {
+ e = Object.assign({ message: e.message, stack: e.stack }, e);
+ }
+ return e;
+ });
+ this.data = logData;
+ return flatted.stringify(this);
+ }
+ static deserialise(serialised) {
+ let event;
+ try {
+ const rehydratedEvent = flatted.parse(serialised);
+ rehydratedEvent.data = rehydratedEvent.data.map((e) => {
+ if (e && e.message && e.stack) {
+ const fakeError = new Error(e);
+ Object.keys(e).forEach((key) => {
+ fakeError[key] = e[key];
+ });
+ e = fakeError;
+ }
+ return e;
+ });
+ event = new LoggingEvent(rehydratedEvent.categoryName, levels.getLevel(rehydratedEvent.level.levelStr), rehydratedEvent.data, rehydratedEvent.context);
+ event.startTime = new Date(rehydratedEvent.startTime);
+ event.pid = rehydratedEvent.pid;
+ event.cluster = rehydratedEvent.cluster;
+ } catch (e) {
+ event = new LoggingEvent("log4js", levels.ERROR, ["Unable to parse log:", serialised, "because: ", e]);
+ }
+ return event;
+ }
+ };
+ module2.exports = LoggingEvent;
+ }
+});
+
+// node_modules/log4js/lib/clustering.js
+var require_clustering = __commonJS({
+ "node_modules/log4js/lib/clustering.js"(exports2, module2) {
+ var debug = require_src()("log4js:clustering");
+ var LoggingEvent = require_LoggingEvent();
+ var configuration = require_configuration();
+ var disabled = false;
+ var cluster = null;
+ try {
+ cluster = require("cluster");
+ } catch (e) {
+ debug("cluster module not present");
+ disabled = true;
+ }
+ var listeners = [];
+ var pm2 = false;
+ var pm2InstanceVar = "NODE_APP_INSTANCE";
+ var isPM2Master = () => pm2 && process.env[pm2InstanceVar] === "0";
+ var isMaster = () => disabled || cluster.isMaster || isPM2Master();
+ var sendToListeners = (logEvent) => {
+ listeners.forEach((l) => l(logEvent));
+ };
+ var receiver = (worker, message) => {
+ debug("cluster message received from worker ", worker, ": ", message);
+ if (worker.topic && worker.data) {
+ message = worker;
+ worker = void 0;
+ }
+ if (message && message.topic && message.topic === "log4js:message") {
+ debug("received message: ", message.data);
+ const logEvent = LoggingEvent.deserialise(message.data);
+ sendToListeners(logEvent);
+ }
+ };
+ if (!disabled) {
+ configuration.addListener((config) => {
+ listeners.length = 0;
+ ({
+ pm2,
+ disableClustering: disabled,
+ pm2InstanceVar = "NODE_APP_INSTANCE"
+ } = config);
+ debug(`clustering disabled ? ${disabled}`);
+ debug(`cluster.isMaster ? ${cluster && cluster.isMaster}`);
+ debug(`pm2 enabled ? ${pm2}`);
+ debug(`pm2InstanceVar = ${pm2InstanceVar}`);
+ debug(`process.env[${pm2InstanceVar}] = ${process.env[pm2InstanceVar]}`);
+ if (pm2) {
+ process.removeListener("message", receiver);
+ }
+ if (cluster && cluster.removeListener) {
+ cluster.removeListener("message", receiver);
+ }
+ if (disabled || config.disableClustering) {
+ debug("Not listening for cluster messages, because clustering disabled.");
+ } else if (isPM2Master()) {
+ debug("listening for PM2 broadcast messages");
+ process.on("message", receiver);
+ } else if (cluster.isMaster) {
+ debug("listening for cluster messages");
+ cluster.on("message", receiver);
+ } else {
+ debug("not listening for messages, because we are not a master process");
+ }
+ });
+ }
+ module2.exports = {
+ onlyOnMaster: (fn, notMaster) => isMaster() ? fn() : notMaster,
+ isMaster,
+ send: (msg) => {
+ if (isMaster()) {
+ sendToListeners(msg);
+ } else {
+ if (!pm2) {
+ msg.cluster = {
+ workerId: cluster.worker.id,
+ worker: process.pid
+ };
+ }
+ process.send({ topic: "log4js:message", data: msg.serialise() });
+ }
+ },
+ onMessage: (listener) => {
+ listeners.push(listener);
+ }
+ };
+ }
+});
+
+// node_modules/log4js/lib/appenders/adapters.js
+var require_adapters = __commonJS({
+ "node_modules/log4js/lib/appenders/adapters.js"(exports2, module2) {
+ function maxFileSizeUnitTransform(maxLogSize) {
+ if (typeof maxLogSize === "number" && Number.isInteger(maxLogSize)) {
+ return maxLogSize;
+ }
+ const units = {
+ K: 1024,
+ M: 1024 * 1024,
+ G: 1024 * 1024 * 1024
+ };
+ const validUnit = Object.keys(units);
+ const unit = maxLogSize.substr(maxLogSize.length - 1).toLocaleUpperCase();
+ const value = maxLogSize.substring(0, maxLogSize.length - 1).trim();
+ if (validUnit.indexOf(unit) < 0 || !Number.isInteger(Number(value))) {
+ throw Error(`maxLogSize: "${maxLogSize}" is invalid`);
+ } else {
+ return value * units[unit];
+ }
+ }
+ function adapter(configAdapter, config) {
+ const newConfig = Object.assign({}, config);
+ Object.keys(configAdapter).forEach((key) => {
+ if (newConfig[key]) {
+ newConfig[key] = configAdapter[key](config[key]);
+ }
+ });
+ return newConfig;
+ }
+ function fileAppenderAdapter(config) {
+ const configAdapter = {
+ maxLogSize: maxFileSizeUnitTransform
+ };
+ return adapter(configAdapter, config);
+ }
+ var adapters = {
+ file: fileAppenderAdapter,
+ fileSync: fileAppenderAdapter
+ };
+ module2.exports.modifyConfig = (config) => adapters[config.type] ? adapters[config.type](config) : config;
+ }
+});
+
+// node_modules/log4js/lib/appenders/console.js
+var require_console = __commonJS({
+ "node_modules/log4js/lib/appenders/console.js"(exports2, module2) {
+ var consoleLog = console.log.bind(console);
+ function consoleAppender(layout, timezoneOffset) {
+ return (loggingEvent) => {
+ consoleLog(layout(loggingEvent, timezoneOffset));
+ };
+ }
+ function configure(config, layouts) {
+ let layout = layouts.colouredLayout;
+ if (config.layout) {
+ layout = layouts.layout(config.layout.type, config.layout);
+ }
+ return consoleAppender(layout, config.timezoneOffset);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/stdout.js
+var require_stdout = __commonJS({
+ "node_modules/log4js/lib/appenders/stdout.js"(exports2) {
+ function stdoutAppender(layout, timezoneOffset) {
+ return (loggingEvent) => {
+ process.stdout.write(`${layout(loggingEvent, timezoneOffset)}
+`);
+ };
+ }
+ function configure(config, layouts) {
+ let layout = layouts.colouredLayout;
+ if (config.layout) {
+ layout = layouts.layout(config.layout.type, config.layout);
+ }
+ return stdoutAppender(layout, config.timezoneOffset);
+ }
+ exports2.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/stderr.js
+var require_stderr = __commonJS({
+ "node_modules/log4js/lib/appenders/stderr.js"(exports2, module2) {
+ function stderrAppender(layout, timezoneOffset) {
+ return (loggingEvent) => {
+ process.stderr.write(`${layout(loggingEvent, timezoneOffset)}
+`);
+ };
+ }
+ function configure(config, layouts) {
+ let layout = layouts.colouredLayout;
+ if (config.layout) {
+ layout = layouts.layout(config.layout.type, config.layout);
+ }
+ return stderrAppender(layout, config.timezoneOffset);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/logLevelFilter.js
+var require_logLevelFilter = __commonJS({
+ "node_modules/log4js/lib/appenders/logLevelFilter.js"(exports2, module2) {
+ function logLevelFilter(minLevelString, maxLevelString, appender, levels) {
+ const minLevel = levels.getLevel(minLevelString);
+ const maxLevel = levels.getLevel(maxLevelString, levels.FATAL);
+ return (logEvent) => {
+ const eventLevel = logEvent.level;
+ if (eventLevel.isGreaterThanOrEqualTo(minLevel) && eventLevel.isLessThanOrEqualTo(maxLevel)) {
+ appender(logEvent);
+ }
+ };
+ }
+ function configure(config, layouts, findAppender, levels) {
+ const appender = findAppender(config.appender);
+ return logLevelFilter(config.level, config.maxLevel, appender, levels);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/categoryFilter.js
+var require_categoryFilter = __commonJS({
+ "node_modules/log4js/lib/appenders/categoryFilter.js"(exports2, module2) {
+ var debug = require_src()("log4js:categoryFilter");
+ function categoryFilter(excludes, appender) {
+ if (typeof excludes === "string")
+ excludes = [excludes];
+ return (logEvent) => {
+ debug(`Checking ${logEvent.categoryName} against ${excludes}`);
+ if (excludes.indexOf(logEvent.categoryName) === -1) {
+ debug("Not excluded, sending to appender");
+ appender(logEvent);
+ }
+ };
+ }
+ function configure(config, layouts, findAppender) {
+ const appender = findAppender(config.appender);
+ return categoryFilter(config.exclude, appender);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/noLogFilter.js
+var require_noLogFilter = __commonJS({
+ "node_modules/log4js/lib/appenders/noLogFilter.js"(exports2, module2) {
+ var debug = require_src()("log4js:noLogFilter");
+ function removeNullOrEmptyRegexp(regexp) {
+ const filtered = regexp.filter((el) => el != null && el !== "");
+ return filtered;
+ }
+ function noLogFilter(filters, appender) {
+ return (logEvent) => {
+ debug(`Checking data: ${logEvent.data} against filters: ${filters}`);
+ if (typeof filters === "string") {
+ filters = [filters];
+ }
+ filters = removeNullOrEmptyRegexp(filters);
+ const regex = new RegExp(filters.join("|"), "i");
+ if (filters.length === 0 || logEvent.data.findIndex((value) => regex.test(value)) < 0) {
+ debug("Not excluded, sending to appender");
+ appender(logEvent);
+ }
+ };
+ }
+ function configure(config, layouts, findAppender) {
+ const appender = findAppender(config.appender);
+ return noLogFilter(config.exclude, appender);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/universalify/index.js
+var require_universalify = __commonJS({
+ "node_modules/universalify/index.js"(exports2) {
+ "use strict";
+ exports2.fromCallback = function(fn) {
+ return Object.defineProperty(function() {
+ if (typeof arguments[arguments.length - 1] === "function")
+ fn.apply(this, arguments);
+ else {
+ return new Promise((resolve3, reject) => {
+ arguments[arguments.length] = (err, res) => {
+ if (err)
+ return reject(err);
+ resolve3(res);
+ };
+ arguments.length++;
+ fn.apply(this, arguments);
+ });
+ }
+ }, "name", { value: fn.name });
+ };
+ exports2.fromPromise = function(fn) {
+ return Object.defineProperty(function() {
+ const cb = arguments[arguments.length - 1];
+ if (typeof cb !== "function")
+ return fn.apply(this, arguments);
+ else
+ fn.apply(this, arguments).then((r) => cb(null, r), cb);
+ }, "name", { value: fn.name });
+ };
+ }
+});
+
+// node_modules/graceful-fs/polyfills.js
+var require_polyfills = __commonJS({
+ "node_modules/graceful-fs/polyfills.js"(exports2, module2) {
+ var constants = require("constants");
+ var origCwd = process.cwd;
+ var cwd = null;
+ var platform3 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
+ process.cwd = function() {
+ if (!cwd)
+ cwd = origCwd.call(process);
+ return cwd;
+ };
+ try {
+ process.cwd();
+ } catch (er) {
+ }
+ if (typeof process.chdir === "function") {
+ chdir = process.chdir;
+ process.chdir = function(d) {
+ cwd = null;
+ chdir.call(process, d);
+ };
+ if (Object.setPrototypeOf)
+ Object.setPrototypeOf(process.chdir, chdir);
+ }
+ var chdir;
+ module2.exports = patch;
+ function patch(fs27) {
+ if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
+ patchLchmod(fs27);
+ }
+ if (!fs27.lutimes) {
+ patchLutimes(fs27);
+ }
+ fs27.chown = chownFix(fs27.chown);
+ fs27.fchown = chownFix(fs27.fchown);
+ fs27.lchown = chownFix(fs27.lchown);
+ fs27.chmod = chmodFix(fs27.chmod);
+ fs27.fchmod = chmodFix(fs27.fchmod);
+ fs27.lchmod = chmodFix(fs27.lchmod);
+ fs27.chownSync = chownFixSync(fs27.chownSync);
+ fs27.fchownSync = chownFixSync(fs27.fchownSync);
+ fs27.lchownSync = chownFixSync(fs27.lchownSync);
+ fs27.chmodSync = chmodFixSync(fs27.chmodSync);
+ fs27.fchmodSync = chmodFixSync(fs27.fchmodSync);
+ fs27.lchmodSync = chmodFixSync(fs27.lchmodSync);
+ fs27.stat = statFix(fs27.stat);
+ fs27.fstat = statFix(fs27.fstat);
+ fs27.lstat = statFix(fs27.lstat);
+ fs27.statSync = statFixSync(fs27.statSync);
+ fs27.fstatSync = statFixSync(fs27.fstatSync);
+ fs27.lstatSync = statFixSync(fs27.lstatSync);
+ if (!fs27.lchmod) {
+ fs27.lchmod = function(path36, mode, cb) {
+ if (cb)
+ process.nextTick(cb);
+ };
+ fs27.lchmodSync = function() {
+ };
+ }
+ if (!fs27.lchown) {
+ fs27.lchown = function(path36, uid, gid, cb) {
+ if (cb)
+ process.nextTick(cb);
+ };
+ fs27.lchownSync = function() {
+ };
+ }
+ if (platform3 === "win32") {
+ fs27.rename = function(fs$rename) {
+ return function(from, to, cb) {
+ var start = Date.now();
+ var backoff = 0;
+ fs$rename(from, to, function CB(er) {
+ if (er && (er.code === "EACCES" || er.code === "EPERM") && Date.now() - start < 6e4) {
+ setTimeout(function() {
+ fs27.stat(to, function(stater, st) {
+ if (stater && stater.code === "ENOENT")
+ fs$rename(from, to, CB);
+ else
+ cb(er);
+ });
+ }, backoff);
+ if (backoff < 100)
+ backoff += 10;
+ return;
+ }
+ if (cb)
+ cb(er);
+ });
+ };
+ }(fs27.rename);
+ }
+ fs27.read = function(fs$read) {
+ function read(fd, buffer, offset, length, position, callback_) {
+ var callback;
+ if (callback_ && typeof callback_ === "function") {
+ var eagCounter = 0;
+ callback = function(er, _, __) {
+ if (er && er.code === "EAGAIN" && eagCounter < 10) {
+ eagCounter++;
+ return fs$read.call(fs27, fd, buffer, offset, length, position, callback);
+ }
+ callback_.apply(this, arguments);
+ };
+ }
+ return fs$read.call(fs27, fd, buffer, offset, length, position, callback);
+ }
+ if (Object.setPrototypeOf)
+ Object.setPrototypeOf(read, fs$read);
+ return read;
+ }(fs27.read);
+ fs27.readSync = function(fs$readSync) {
+ return function(fd, buffer, offset, length, position) {
+ var eagCounter = 0;
+ while (true) {
+ try {
+ return fs$readSync.call(fs27, fd, buffer, offset, length, position);
+ } catch (er) {
+ if (er.code === "EAGAIN" && eagCounter < 10) {
+ eagCounter++;
+ continue;
+ }
+ throw er;
+ }
+ }
+ };
+ }(fs27.readSync);
+ function patchLchmod(fs28) {
+ fs28.lchmod = function(path36, mode, callback) {
+ fs28.open(path36, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) {
+ if (err) {
+ if (callback)
+ callback(err);
+ return;
+ }
+ fs28.fchmod(fd, mode, function(err2) {
+ fs28.close(fd, function(err22) {
+ if (callback)
+ callback(err2 || err22);
+ });
+ });
+ });
+ };
+ fs28.lchmodSync = function(path36, mode) {
+ var fd = fs28.openSync(path36, constants.O_WRONLY | constants.O_SYMLINK, mode);
+ var threw = true;
+ var ret;
+ try {
+ ret = fs28.fchmodSync(fd, mode);
+ threw = false;
+ } finally {
+ if (threw) {
+ try {
+ fs28.closeSync(fd);
+ } catch (er) {
+ }
+ } else {
+ fs28.closeSync(fd);
+ }
+ }
+ return ret;
+ };
+ }
+ function patchLutimes(fs28) {
+ if (constants.hasOwnProperty("O_SYMLINK")) {
+ fs28.lutimes = function(path36, at, mt, cb) {
+ fs28.open(path36, constants.O_SYMLINK, function(er, fd) {
+ if (er) {
+ if (cb)
+ cb(er);
+ return;
+ }
+ fs28.futimes(fd, at, mt, function(er2) {
+ fs28.close(fd, function(er22) {
+ if (cb)
+ cb(er2 || er22);
+ });
+ });
+ });
+ };
+ fs28.lutimesSync = function(path36, at, mt) {
+ var fd = fs28.openSync(path36, constants.O_SYMLINK);
+ var ret;
+ var threw = true;
+ try {
+ ret = fs28.futimesSync(fd, at, mt);
+ threw = false;
+ } finally {
+ if (threw) {
+ try {
+ fs28.closeSync(fd);
+ } catch (er) {
+ }
+ } else {
+ fs28.closeSync(fd);
+ }
+ }
+ return ret;
+ };
+ } else {
+ fs28.lutimes = function(_a2, _b, _c, cb) {
+ if (cb)
+ process.nextTick(cb);
+ };
+ fs28.lutimesSync = function() {
+ };
+ }
+ }
+ function chmodFix(orig) {
+ if (!orig)
+ return orig;
+ return function(target, mode, cb) {
+ return orig.call(fs27, target, mode, function(er) {
+ if (chownErOk(er))
+ er = null;
+ if (cb)
+ cb.apply(this, arguments);
+ });
+ };
+ }
+ function chmodFixSync(orig) {
+ if (!orig)
+ return orig;
+ return function(target, mode) {
+ try {
+ return orig.call(fs27, target, mode);
+ } catch (er) {
+ if (!chownErOk(er))
+ throw er;
+ }
+ };
+ }
+ function chownFix(orig) {
+ if (!orig)
+ return orig;
+ return function(target, uid, gid, cb) {
+ return orig.call(fs27, target, uid, gid, function(er) {
+ if (chownErOk(er))
+ er = null;
+ if (cb)
+ cb.apply(this, arguments);
+ });
+ };
+ }
+ function chownFixSync(orig) {
+ if (!orig)
+ return orig;
+ return function(target, uid, gid) {
+ try {
+ return orig.call(fs27, target, uid, gid);
+ } catch (er) {
+ if (!chownErOk(er))
+ throw er;
+ }
+ };
+ }
+ function statFix(orig) {
+ if (!orig)
+ return orig;
+ return function(target, options, cb) {
+ if (typeof options === "function") {
+ cb = options;
+ options = null;
+ }
+ function callback(er, stats) {
+ if (stats) {
+ if (stats.uid < 0)
+ stats.uid += 4294967296;
+ if (stats.gid < 0)
+ stats.gid += 4294967296;
+ }
+ if (cb)
+ cb.apply(this, arguments);
+ }
+ return options ? orig.call(fs27, target, options, callback) : orig.call(fs27, target, callback);
+ };
+ }
+ function statFixSync(orig) {
+ if (!orig)
+ return orig;
+ return function(target, options) {
+ var stats = options ? orig.call(fs27, target, options) : orig.call(fs27, target);
+ if (stats.uid < 0)
+ stats.uid += 4294967296;
+ if (stats.gid < 0)
+ stats.gid += 4294967296;
+ return stats;
+ };
+ }
+ function chownErOk(er) {
+ if (!er)
+ return true;
+ if (er.code === "ENOSYS")
+ return true;
+ var nonroot = !process.getuid || process.getuid() !== 0;
+ if (nonroot) {
+ if (er.code === "EINVAL" || er.code === "EPERM")
+ return true;
+ }
+ return false;
+ }
+ }
+ }
+});
+
+// node_modules/graceful-fs/legacy-streams.js
+var require_legacy_streams = __commonJS({
+ "node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
+ var Stream = require("stream").Stream;
+ module2.exports = legacy;
+ function legacy(fs27) {
+ return {
+ ReadStream,
+ WriteStream
+ };
+ function ReadStream(path36, options) {
+ if (!(this instanceof ReadStream))
+ return new ReadStream(path36, options);
+ Stream.call(this);
+ var self2 = this;
+ this.path = path36;
+ this.fd = null;
+ this.readable = true;
+ this.paused = false;
+ this.flags = "r";
+ this.mode = 438;
+ this.bufferSize = 64 * 1024;
+ options = options || {};
+ var keys = Object.keys(options);
+ for (var index = 0, length = keys.length; index < length; index++) {
+ var key = keys[index];
+ this[key] = options[key];
+ }
+ if (this.encoding)
+ this.setEncoding(this.encoding);
+ if (this.start !== void 0) {
+ if (typeof this.start !== "number") {
+ throw TypeError("start must be a Number");
+ }
+ if (this.end === void 0) {
+ this.end = Infinity;
+ } 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() {
+ self2._read();
+ });
+ return;
+ }
+ fs27.open(this.path, this.flags, this.mode, function(err, fd) {
+ if (err) {
+ self2.emit("error", err);
+ self2.readable = false;
+ return;
+ }
+ self2.fd = fd;
+ self2.emit("open", fd);
+ self2._read();
+ });
+ }
+ function WriteStream(path36, options) {
+ if (!(this instanceof WriteStream))
+ return new WriteStream(path36, options);
+ Stream.call(this);
+ this.path = path36;
+ this.fd = null;
+ this.writable = true;
+ this.flags = "w";
+ this.encoding = "binary";
+ this.mode = 438;
+ this.bytesWritten = 0;
+ options = options || {};
+ var keys = Object.keys(options);
+ for (var index = 0, length = keys.length; index < length; index++) {
+ var key = keys[index];
+ this[key] = options[key];
+ }
+ 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 = false;
+ this._queue = [];
+ if (this.fd === null) {
+ this._open = fs27.open;
+ this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
+ this.flush();
+ }
+ }
+ }
+ }
+});
+
+// node_modules/graceful-fs/clone.js
+var require_clone = __commonJS({
+ "node_modules/graceful-fs/clone.js"(exports2, module2) {
+ "use strict";
+ module2.exports = clone;
+ var getPrototypeOf = Object.getPrototypeOf || function(obj) {
+ return obj.__proto__;
+ };
+ function clone(obj) {
+ if (obj === null || typeof obj !== "object")
+ return obj;
+ if (obj instanceof Object)
+ var copy = { __proto__: getPrototypeOf(obj) };
+ else
+ var copy = Object.create(null);
+ Object.getOwnPropertyNames(obj).forEach(function(key) {
+ Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key));
+ });
+ return copy;
+ }
+ }
+});
+
+// node_modules/graceful-fs/graceful-fs.js
+var require_graceful_fs = __commonJS({
+ "node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
+ var fs27 = require("fs");
+ var polyfills = require_polyfills();
+ var legacy = require_legacy_streams();
+ var clone = require_clone();
+ var util4 = require("util");
+ var gracefulQueue;
+ var previousSymbol;
+ if (typeof Symbol === "function" && typeof Symbol.for === "function") {
+ gracefulQueue = Symbol.for("graceful-fs.queue");
+ previousSymbol = Symbol.for("graceful-fs.previous");
+ } else {
+ gracefulQueue = "___graceful-fs.queue";
+ previousSymbol = "___graceful-fs.previous";
+ }
+ function noop() {
+ }
+ function publishQueue(context, queue2) {
+ Object.defineProperty(context, gracefulQueue, {
+ get: function() {
+ return queue2;
+ }
+ });
+ }
+ var debug = noop;
+ if (util4.debuglog)
+ debug = util4.debuglog("gfs4");
+ else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
+ debug = function() {
+ var m = util4.format.apply(util4, arguments);
+ m = "GFS4: " + m.split(/\n/).join("\nGFS4: ");
+ console.error(m);
+ };
+ if (!fs27[gracefulQueue]) {
+ queue = global[gracefulQueue] || [];
+ publishQueue(fs27, queue);
+ fs27.close = function(fs$close) {
+ function close(fd, cb) {
+ return fs$close.call(fs27, fd, function(err) {
+ if (!err) {
+ retry();
+ }
+ if (typeof cb === "function")
+ cb.apply(this, arguments);
+ });
+ }
+ Object.defineProperty(close, previousSymbol, {
+ value: fs$close
+ });
+ return close;
+ }(fs27.close);
+ fs27.closeSync = function(fs$closeSync) {
+ function closeSync(fd) {
+ fs$closeSync.apply(fs27, arguments);
+ retry();
+ }
+ Object.defineProperty(closeSync, previousSymbol, {
+ value: fs$closeSync
+ });
+ return closeSync;
+ }(fs27.closeSync);
+ if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
+ process.on("exit", function() {
+ debug(fs27[gracefulQueue]);
+ require("assert").equal(fs27[gracefulQueue].length, 0);
+ });
+ }
+ }
+ var queue;
+ if (!global[gracefulQueue]) {
+ publishQueue(global, fs27[gracefulQueue]);
+ }
+ module2.exports = patch(clone(fs27));
+ if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs27.__patched) {
+ module2.exports = patch(fs27);
+ fs27.__patched = true;
+ }
+ function patch(fs28) {
+ polyfills(fs28);
+ fs28.gracefulify = patch;
+ fs28.createReadStream = createReadStream;
+ fs28.createWriteStream = createWriteStream;
+ var fs$readFile = fs28.readFile;
+ fs28.readFile = readFile2;
+ function readFile2(path36, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ return go$readFile(path36, options, cb);
+ function go$readFile(path37, options2, cb2) {
+ return fs$readFile(path37, options2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$readFile, [path37, options2, cb2]]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ retry();
+ }
+ });
+ }
+ }
+ var fs$writeFile = fs28.writeFile;
+ fs28.writeFile = writeFile2;
+ function writeFile2(path36, data, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ return go$writeFile(path36, data, options, cb);
+ function go$writeFile(path37, data2, options2, cb2) {
+ return fs$writeFile(path37, data2, options2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$writeFile, [path37, data2, options2, cb2]]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ retry();
+ }
+ });
+ }
+ }
+ var fs$appendFile = fs28.appendFile;
+ if (fs$appendFile)
+ fs28.appendFile = appendFile;
+ function appendFile(path36, data, options, cb) {
+ if (typeof options === "function")
+ cb = options, options = null;
+ return go$appendFile(path36, data, options, cb);
+ function go$appendFile(path37, data2, options2, cb2) {
+ return fs$appendFile(path37, data2, options2, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$appendFile, [path37, data2, options2, cb2]]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ retry();
+ }
+ });
+ }
+ }
+ var fs$copyFile = fs28.copyFile;
+ if (fs$copyFile)
+ fs28.copyFile = copyFile;
+ function copyFile(src, dest, flags, cb) {
+ if (typeof flags === "function") {
+ cb = flags;
+ flags = 0;
+ }
+ return fs$copyFile(src, dest, flags, function(err) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([fs$copyFile, [src, dest, flags, cb]]);
+ else {
+ if (typeof cb === "function")
+ cb.apply(this, arguments);
+ retry();
+ }
+ });
+ }
+ var fs$readdir = fs28.readdir;
+ fs28.readdir = readdir;
+ function readdir(path36, options, cb) {
+ var args = [path36];
+ if (typeof options !== "function") {
+ args.push(options);
+ } else {
+ cb = options;
+ }
+ args.push(go$readdir$cb);
+ return go$readdir(args);
+ function go$readdir$cb(err, files) {
+ if (files && files.sort)
+ files.sort();
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$readdir, [args]]);
+ else {
+ if (typeof cb === "function")
+ cb.apply(this, arguments);
+ retry();
+ }
+ }
+ }
+ function go$readdir(args) {
+ return fs$readdir.apply(fs28, args);
+ }
+ if (process.version.substr(0, 4) === "v0.8") {
+ var legStreams = legacy(fs28);
+ ReadStream = legStreams.ReadStream;
+ WriteStream = legStreams.WriteStream;
+ }
+ var fs$ReadStream = fs28.ReadStream;
+ if (fs$ReadStream) {
+ ReadStream.prototype = Object.create(fs$ReadStream.prototype);
+ ReadStream.prototype.open = ReadStream$open;
+ }
+ var fs$WriteStream = fs28.WriteStream;
+ if (fs$WriteStream) {
+ WriteStream.prototype = Object.create(fs$WriteStream.prototype);
+ WriteStream.prototype.open = WriteStream$open;
+ }
+ Object.defineProperty(fs28, "ReadStream", {
+ get: function() {
+ return ReadStream;
+ },
+ set: function(val) {
+ ReadStream = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(fs28, "WriteStream", {
+ get: function() {
+ return WriteStream;
+ },
+ set: function(val) {
+ WriteStream = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ var FileReadStream = ReadStream;
+ Object.defineProperty(fs28, "FileReadStream", {
+ get: function() {
+ return FileReadStream;
+ },
+ set: function(val) {
+ FileReadStream = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ var FileWriteStream = WriteStream;
+ Object.defineProperty(fs28, "FileWriteStream", {
+ get: function() {
+ return FileWriteStream;
+ },
+ set: function(val) {
+ FileWriteStream = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ function ReadStream(path36, options) {
+ if (this instanceof ReadStream)
+ return fs$ReadStream.apply(this, arguments), this;
+ else
+ return ReadStream.apply(Object.create(ReadStream.prototype), arguments);
+ }
+ function ReadStream$open() {
+ var that = this;
+ open(that.path, that.flags, that.mode, function(err, fd) {
+ if (err) {
+ if (that.autoClose)
+ that.destroy();
+ that.emit("error", err);
+ } else {
+ that.fd = fd;
+ that.emit("open", fd);
+ that.read();
+ }
+ });
+ }
+ function WriteStream(path36, options) {
+ if (this instanceof WriteStream)
+ return fs$WriteStream.apply(this, arguments), this;
+ else
+ return WriteStream.apply(Object.create(WriteStream.prototype), arguments);
+ }
+ function WriteStream$open() {
+ var that = this;
+ open(that.path, that.flags, that.mode, function(err, fd) {
+ if (err) {
+ that.destroy();
+ that.emit("error", err);
+ } else {
+ that.fd = fd;
+ that.emit("open", fd);
+ }
+ });
+ }
+ function createReadStream(path36, options) {
+ return new fs28.ReadStream(path36, options);
+ }
+ function createWriteStream(path36, options) {
+ return new fs28.WriteStream(path36, options);
+ }
+ var fs$open = fs28.open;
+ fs28.open = open;
+ function open(path36, flags, mode, cb) {
+ if (typeof mode === "function")
+ cb = mode, mode = null;
+ return go$open(path36, flags, mode, cb);
+ function go$open(path37, flags2, mode2, cb2) {
+ return fs$open(path37, flags2, mode2, function(err, fd) {
+ if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+ enqueue([go$open, [path37, flags2, mode2, cb2]]);
+ else {
+ if (typeof cb2 === "function")
+ cb2.apply(this, arguments);
+ retry();
+ }
+ });
+ }
+ }
+ return fs28;
+ }
+ function enqueue(elem) {
+ debug("ENQUEUE", elem[0].name, elem[1]);
+ fs27[gracefulQueue].push(elem);
+ }
+ function retry() {
+ var elem = fs27[gracefulQueue].shift();
+ if (elem) {
+ debug("RETRY", elem[0].name, elem[1]);
+ elem[0].apply(null, elem[1]);
+ }
+ }
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/fs/index.js
+var require_fs = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/fs/index.js"(exports2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var fs27 = require_graceful_fs();
+ var api = [
+ "access",
+ "appendFile",
+ "chmod",
+ "chown",
+ "close",
+ "copyFile",
+ "fchmod",
+ "fchown",
+ "fdatasync",
+ "fstat",
+ "fsync",
+ "ftruncate",
+ "futimes",
+ "lchown",
+ "lchmod",
+ "link",
+ "lstat",
+ "mkdir",
+ "mkdtemp",
+ "open",
+ "readFile",
+ "readdir",
+ "readlink",
+ "realpath",
+ "rename",
+ "rmdir",
+ "stat",
+ "symlink",
+ "truncate",
+ "unlink",
+ "utimes",
+ "writeFile"
+ ].filter((key) => {
+ return typeof fs27[key] === "function";
+ });
+ Object.keys(fs27).forEach((key) => {
+ if (key === "promises") {
+ return;
+ }
+ exports2[key] = fs27[key];
+ });
+ api.forEach((method) => {
+ exports2[method] = u(fs27[method]);
+ });
+ exports2.exists = function(filename, callback) {
+ if (typeof callback === "function") {
+ return fs27.exists(filename, callback);
+ }
+ return new Promise((resolve3) => {
+ return fs27.exists(filename, resolve3);
+ });
+ };
+ exports2.read = function(fd, buffer, offset, length, position, callback) {
+ if (typeof callback === "function") {
+ return fs27.read(fd, buffer, offset, length, position, callback);
+ }
+ return new Promise((resolve3, reject) => {
+ fs27.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => {
+ if (err)
+ return reject(err);
+ resolve3({ bytesRead, buffer: buffer2 });
+ });
+ });
+ };
+ exports2.write = function(fd, buffer, ...args) {
+ if (typeof args[args.length - 1] === "function") {
+ return fs27.write(fd, buffer, ...args);
+ }
+ return new Promise((resolve3, reject) => {
+ fs27.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => {
+ if (err)
+ return reject(err);
+ resolve3({ bytesWritten, buffer: buffer2 });
+ });
+ });
+ };
+ if (typeof fs27.realpath.native === "function") {
+ exports2.realpath.native = u(fs27.realpath.native);
+ }
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/win32.js
+var require_win32 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/win32.js"(exports2, module2) {
+ "use strict";
+ var path36 = require("path");
+ function getRootPath(p) {
+ p = path36.normalize(path36.resolve(p)).split(path36.sep);
+ if (p.length > 0)
+ return p[0];
+ return null;
+ }
+ var INVALID_PATH_CHARS = /[<>:"|?*]/;
+ function invalidWin32Path(p) {
+ const rp = getRootPath(p);
+ p = p.replace(rp, "");
+ return INVALID_PATH_CHARS.test(p);
+ }
+ module2.exports = {
+ getRootPath,
+ invalidWin32Path
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/mkdirs.js
+var require_mkdirs = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/mkdirs.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var invalidWin32Path = require_win32().invalidWin32Path;
+ var o777 = parseInt("0777", 8);
+ function mkdirs(p, opts, callback, made) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = {};
+ } else if (!opts || typeof opts !== "object") {
+ opts = { mode: opts };
+ }
+ if (process.platform === "win32" && invalidWin32Path(p)) {
+ const errInval = new Error(p + " contains invalid WIN32 path characters.");
+ errInval.code = "EINVAL";
+ return callback(errInval);
+ }
+ let mode = opts.mode;
+ const xfs = opts.fs || fs27;
+ if (mode === void 0) {
+ mode = o777 & ~process.umask();
+ }
+ if (!made)
+ made = null;
+ callback = callback || function() {
+ };
+ p = path36.resolve(p);
+ xfs.mkdir(p, mode, (er) => {
+ if (!er) {
+ made = made || p;
+ return callback(null, made);
+ }
+ switch (er.code) {
+ case "ENOENT":
+ if (path36.dirname(p) === p)
+ return callback(er);
+ mkdirs(path36.dirname(p), opts, (er2, made2) => {
+ if (er2)
+ callback(er2, made2);
+ else
+ mkdirs(p, opts, callback, made2);
+ });
+ break;
+ default:
+ xfs.stat(p, (er2, stat) => {
+ if (er2 || !stat.isDirectory())
+ callback(er, made);
+ else
+ callback(null, made);
+ });
+ break;
+ }
+ });
+ }
+ module2.exports = mkdirs;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js
+var require_mkdirs_sync = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var invalidWin32Path = require_win32().invalidWin32Path;
+ var o777 = parseInt("0777", 8);
+ function mkdirsSync(p, opts, made) {
+ if (!opts || typeof opts !== "object") {
+ opts = { mode: opts };
+ }
+ let mode = opts.mode;
+ const xfs = opts.fs || fs27;
+ if (process.platform === "win32" && invalidWin32Path(p)) {
+ const errInval = new Error(p + " contains invalid WIN32 path characters.");
+ errInval.code = "EINVAL";
+ throw errInval;
+ }
+ if (mode === void 0) {
+ mode = o777 & ~process.umask();
+ }
+ if (!made)
+ made = null;
+ p = path36.resolve(p);
+ try {
+ xfs.mkdirSync(p, mode);
+ made = made || p;
+ } catch (err0) {
+ if (err0.code === "ENOENT") {
+ if (path36.dirname(p) === p)
+ throw err0;
+ made = mkdirsSync(path36.dirname(p), opts, made);
+ mkdirsSync(p, opts, made);
+ } else {
+ let stat;
+ try {
+ stat = xfs.statSync(p);
+ } catch (err1) {
+ throw err0;
+ }
+ if (!stat.isDirectory())
+ throw err0;
+ }
+ }
+ return made;
+ }
+ module2.exports = mkdirsSync;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/index.js
+var require_mkdirs2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/mkdirs/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var mkdirs = u(require_mkdirs());
+ var mkdirsSync = require_mkdirs_sync();
+ module2.exports = {
+ mkdirs,
+ mkdirsSync,
+ mkdirp: mkdirs,
+ mkdirpSync: mkdirsSync,
+ ensureDir: mkdirs,
+ ensureDirSync: mkdirsSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/util/utimes.js
+var require_utimes = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/util/utimes.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var os10 = require("os");
+ var path36 = require("path");
+ function hasMillisResSync() {
+ let tmpfile = path36.join("millis-test-sync" + Date.now().toString() + Math.random().toString().slice(2));
+ tmpfile = path36.join(os10.tmpdir(), tmpfile);
+ const d = new Date(1435410243862);
+ fs27.writeFileSync(tmpfile, "https://github.com/jprichardson/node-fs-extra/pull/141");
+ const fd = fs27.openSync(tmpfile, "r+");
+ fs27.futimesSync(fd, d, d);
+ fs27.closeSync(fd);
+ return fs27.statSync(tmpfile).mtime > 1435410243e3;
+ }
+ function hasMillisRes(callback) {
+ let tmpfile = path36.join("millis-test" + Date.now().toString() + Math.random().toString().slice(2));
+ tmpfile = path36.join(os10.tmpdir(), tmpfile);
+ const d = new Date(1435410243862);
+ fs27.writeFile(tmpfile, "https://github.com/jprichardson/node-fs-extra/pull/141", (err) => {
+ if (err)
+ return callback(err);
+ fs27.open(tmpfile, "r+", (err2, fd) => {
+ if (err2)
+ return callback(err2);
+ fs27.futimes(fd, d, d, (err3) => {
+ if (err3)
+ return callback(err3);
+ fs27.close(fd, (err4) => {
+ if (err4)
+ return callback(err4);
+ fs27.stat(tmpfile, (err5, stats) => {
+ if (err5)
+ return callback(err5);
+ callback(null, stats.mtime > 1435410243e3);
+ });
+ });
+ });
+ });
+ });
+ }
+ function timeRemoveMillis(timestamp) {
+ if (typeof timestamp === "number") {
+ return Math.floor(timestamp / 1e3) * 1e3;
+ } else if (timestamp instanceof Date) {
+ return new Date(Math.floor(timestamp.getTime() / 1e3) * 1e3);
+ } else {
+ throw new Error("fs-extra: timeRemoveMillis() unknown parameter type");
+ }
+ }
+ function utimesMillis(path37, atime, mtime, callback) {
+ fs27.open(path37, "r+", (err, fd) => {
+ if (err)
+ return callback(err);
+ fs27.futimes(fd, atime, mtime, (futimesErr) => {
+ fs27.close(fd, (closeErr) => {
+ if (callback)
+ callback(futimesErr || closeErr);
+ });
+ });
+ });
+ }
+ function utimesMillisSync(path37, atime, mtime) {
+ const fd = fs27.openSync(path37, "r+");
+ fs27.futimesSync(fd, atime, mtime);
+ return fs27.closeSync(fd);
+ }
+ module2.exports = {
+ hasMillisRes,
+ hasMillisResSync,
+ timeRemoveMillis,
+ utimesMillis,
+ utimesMillisSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/util/stat.js
+var require_stat = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/util/stat.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var NODE_VERSION_MAJOR_WITH_BIGINT = 10;
+ var NODE_VERSION_MINOR_WITH_BIGINT = 5;
+ var NODE_VERSION_PATCH_WITH_BIGINT = 0;
+ var nodeVersion = process.versions.node.split(".");
+ var nodeVersionMajor = Number.parseInt(nodeVersion[0], 10);
+ var nodeVersionMinor = Number.parseInt(nodeVersion[1], 10);
+ var nodeVersionPatch = Number.parseInt(nodeVersion[2], 10);
+ function nodeSupportsBigInt() {
+ if (nodeVersionMajor > NODE_VERSION_MAJOR_WITH_BIGINT) {
+ return true;
+ } else if (nodeVersionMajor === NODE_VERSION_MAJOR_WITH_BIGINT) {
+ if (nodeVersionMinor > NODE_VERSION_MINOR_WITH_BIGINT) {
+ return true;
+ } else if (nodeVersionMinor === NODE_VERSION_MINOR_WITH_BIGINT) {
+ if (nodeVersionPatch >= NODE_VERSION_PATCH_WITH_BIGINT) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ function getStats(src, dest, cb) {
+ if (nodeSupportsBigInt()) {
+ fs27.stat(src, { bigint: true }, (err, srcStat) => {
+ if (err)
+ return cb(err);
+ fs27.stat(dest, { bigint: true }, (err2, destStat) => {
+ if (err2) {
+ if (err2.code === "ENOENT")
+ return cb(null, { srcStat, destStat: null });
+ return cb(err2);
+ }
+ return cb(null, { srcStat, destStat });
+ });
+ });
+ } else {
+ fs27.stat(src, (err, srcStat) => {
+ if (err)
+ return cb(err);
+ fs27.stat(dest, (err2, destStat) => {
+ if (err2) {
+ if (err2.code === "ENOENT")
+ return cb(null, { srcStat, destStat: null });
+ return cb(err2);
+ }
+ return cb(null, { srcStat, destStat });
+ });
+ });
+ }
+ }
+ function getStatsSync(src, dest) {
+ let srcStat, destStat;
+ if (nodeSupportsBigInt()) {
+ srcStat = fs27.statSync(src, { bigint: true });
+ } else {
+ srcStat = fs27.statSync(src);
+ }
+ try {
+ if (nodeSupportsBigInt()) {
+ destStat = fs27.statSync(dest, { bigint: true });
+ } else {
+ destStat = fs27.statSync(dest);
+ }
+ } catch (err) {
+ if (err.code === "ENOENT")
+ return { srcStat, destStat: null };
+ throw err;
+ }
+ return { srcStat, destStat };
+ }
+ function checkPaths(src, dest, funcName, cb) {
+ getStats(src, dest, (err, stats) => {
+ if (err)
+ return cb(err);
+ const { srcStat, destStat } = stats;
+ if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ return cb(new Error("Source and destination must not be the same."));
+ }
+ if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
+ return cb(new Error(errMsg(src, dest, funcName)));
+ }
+ return cb(null, { srcStat, destStat });
+ });
+ }
+ function checkPathsSync(src, dest, funcName) {
+ const { srcStat, destStat } = getStatsSync(src, dest);
+ if (destStat && destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ throw new Error("Source and destination must not be the same.");
+ }
+ if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
+ throw new Error(errMsg(src, dest, funcName));
+ }
+ return { srcStat, destStat };
+ }
+ function checkParentPaths(src, srcStat, dest, funcName, cb) {
+ const srcParent = path36.resolve(path36.dirname(src));
+ const destParent = path36.resolve(path36.dirname(dest));
+ if (destParent === srcParent || destParent === path36.parse(destParent).root)
+ return cb();
+ if (nodeSupportsBigInt()) {
+ fs27.stat(destParent, { bigint: true }, (err, destStat) => {
+ if (err) {
+ if (err.code === "ENOENT")
+ return cb();
+ return cb(err);
+ }
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ return cb(new Error(errMsg(src, dest, funcName)));
+ }
+ return checkParentPaths(src, srcStat, destParent, funcName, cb);
+ });
+ } else {
+ fs27.stat(destParent, (err, destStat) => {
+ if (err) {
+ if (err.code === "ENOENT")
+ return cb();
+ return cb(err);
+ }
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ return cb(new Error(errMsg(src, dest, funcName)));
+ }
+ return checkParentPaths(src, srcStat, destParent, funcName, cb);
+ });
+ }
+ }
+ function checkParentPathsSync(src, srcStat, dest, funcName) {
+ const srcParent = path36.resolve(path36.dirname(src));
+ const destParent = path36.resolve(path36.dirname(dest));
+ if (destParent === srcParent || destParent === path36.parse(destParent).root)
+ return;
+ let destStat;
+ try {
+ if (nodeSupportsBigInt()) {
+ destStat = fs27.statSync(destParent, { bigint: true });
+ } else {
+ destStat = fs27.statSync(destParent);
+ }
+ } catch (err) {
+ if (err.code === "ENOENT")
+ return;
+ throw err;
+ }
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ throw new Error(errMsg(src, dest, funcName));
+ }
+ return checkParentPathsSync(src, srcStat, destParent, funcName);
+ }
+ function isSrcSubdir(src, dest) {
+ const srcArr = path36.resolve(src).split(path36.sep).filter((i) => i);
+ const destArr = path36.resolve(dest).split(path36.sep).filter((i) => i);
+ return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true);
+ }
+ function errMsg(src, dest, funcName) {
+ return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`;
+ }
+ module2.exports = {
+ checkPaths,
+ checkPathsSync,
+ checkParentPaths,
+ checkParentPathsSync,
+ isSrcSubdir
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/util/buffer.js
+var require_buffer = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/util/buffer.js"(exports2, module2) {
+ "use strict";
+ module2.exports = function(size) {
+ if (typeof Buffer.allocUnsafe === "function") {
+ try {
+ return Buffer.allocUnsafe(size);
+ } catch (e) {
+ return new Buffer(size);
+ }
+ }
+ return new Buffer(size);
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/copy-sync/copy-sync.js
+var require_copy_sync = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/copy-sync/copy-sync.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdirpSync = require_mkdirs2().mkdirsSync;
+ var utimesSync = require_utimes().utimesMillisSync;
+ var stat = require_stat();
+ function copySync(src, dest, opts) {
+ if (typeof opts === "function") {
+ opts = { filter: opts };
+ }
+ opts = opts || {};
+ opts.clobber = "clobber" in opts ? !!opts.clobber : true;
+ opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
+ if (opts.preserveTimestamps && process.arch === "ia32") {
+ console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;
+
+ see https://github.com/jprichardson/node-fs-extra/issues/269`);
+ }
+ const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy");
+ stat.checkParentPathsSync(src, srcStat, dest, "copy");
+ return handleFilterAndCopy(destStat, src, dest, opts);
+ }
+ function handleFilterAndCopy(destStat, src, dest, opts) {
+ if (opts.filter && !opts.filter(src, dest))
+ return;
+ const destParent = path36.dirname(dest);
+ if (!fs27.existsSync(destParent))
+ mkdirpSync(destParent);
+ return startCopy(destStat, src, dest, opts);
+ }
+ function startCopy(destStat, src, dest, opts) {
+ if (opts.filter && !opts.filter(src, dest))
+ return;
+ return getStats(destStat, src, dest, opts);
+ }
+ function getStats(destStat, src, dest, opts) {
+ const statSync = opts.dereference ? fs27.statSync : fs27.lstatSync;
+ const srcStat = statSync(src);
+ if (srcStat.isDirectory())
+ return onDir(srcStat, destStat, src, dest, opts);
+ else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice())
+ return onFile(srcStat, destStat, src, dest, opts);
+ else if (srcStat.isSymbolicLink())
+ return onLink(destStat, src, dest, opts);
+ }
+ function onFile(srcStat, destStat, src, dest, opts) {
+ if (!destStat)
+ return copyFile(srcStat, src, dest, opts);
+ return mayCopyFile(srcStat, src, dest, opts);
+ }
+ function mayCopyFile(srcStat, src, dest, opts) {
+ if (opts.overwrite) {
+ fs27.unlinkSync(dest);
+ return copyFile(srcStat, src, dest, opts);
+ } else if (opts.errorOnExist) {
+ throw new Error(`'${dest}' already exists`);
+ }
+ }
+ function copyFile(srcStat, src, dest, opts) {
+ if (typeof fs27.copyFileSync === "function") {
+ fs27.copyFileSync(src, dest);
+ fs27.chmodSync(dest, srcStat.mode);
+ if (opts.preserveTimestamps) {
+ return utimesSync(dest, srcStat.atime, srcStat.mtime);
+ }
+ return;
+ }
+ return copyFileFallback(srcStat, src, dest, opts);
+ }
+ function copyFileFallback(srcStat, src, dest, opts) {
+ const BUF_LENGTH = 64 * 1024;
+ const _buff = require_buffer()(BUF_LENGTH);
+ const fdr = fs27.openSync(src, "r");
+ const fdw = fs27.openSync(dest, "w", srcStat.mode);
+ let pos = 0;
+ while (pos < srcStat.size) {
+ const bytesRead = fs27.readSync(fdr, _buff, 0, BUF_LENGTH, pos);
+ fs27.writeSync(fdw, _buff, 0, bytesRead);
+ pos += bytesRead;
+ }
+ if (opts.preserveTimestamps)
+ fs27.futimesSync(fdw, srcStat.atime, srcStat.mtime);
+ fs27.closeSync(fdr);
+ fs27.closeSync(fdw);
+ }
+ function onDir(srcStat, destStat, src, dest, opts) {
+ if (!destStat)
+ return mkDirAndCopy(srcStat, src, dest, opts);
+ if (destStat && !destStat.isDirectory()) {
+ throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`);
+ }
+ return copyDir(src, dest, opts);
+ }
+ function mkDirAndCopy(srcStat, src, dest, opts) {
+ fs27.mkdirSync(dest);
+ copyDir(src, dest, opts);
+ return fs27.chmodSync(dest, srcStat.mode);
+ }
+ function copyDir(src, dest, opts) {
+ fs27.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts));
+ }
+ function copyDirItem(item, src, dest, opts) {
+ const srcItem = path36.join(src, item);
+ const destItem = path36.join(dest, item);
+ const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy");
+ return startCopy(destStat, srcItem, destItem, opts);
+ }
+ function onLink(destStat, src, dest, opts) {
+ let resolvedSrc = fs27.readlinkSync(src);
+ if (opts.dereference) {
+ resolvedSrc = path36.resolve(process.cwd(), resolvedSrc);
+ }
+ if (!destStat) {
+ return fs27.symlinkSync(resolvedSrc, dest);
+ } else {
+ let resolvedDest;
+ try {
+ resolvedDest = fs27.readlinkSync(dest);
+ } catch (err) {
+ if (err.code === "EINVAL" || err.code === "UNKNOWN")
+ return fs27.symlinkSync(resolvedSrc, dest);
+ throw err;
+ }
+ if (opts.dereference) {
+ resolvedDest = path36.resolve(process.cwd(), resolvedDest);
+ }
+ if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
+ throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);
+ }
+ if (fs27.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
+ throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`);
+ }
+ return copyLink(resolvedSrc, dest);
+ }
+ }
+ function copyLink(resolvedSrc, dest) {
+ fs27.unlinkSync(dest);
+ return fs27.symlinkSync(resolvedSrc, dest);
+ }
+ module2.exports = copySync;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/copy-sync/index.js
+var require_copy_sync2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/copy-sync/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = {
+ copySync: require_copy_sync()
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/path-exists/index.js
+var require_path_exists = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/path-exists/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromPromise;
+ var fs27 = require_fs();
+ function pathExists(path36) {
+ return fs27.access(path36).then(() => true).catch(() => false);
+ }
+ module2.exports = {
+ pathExists: u(pathExists),
+ pathExistsSync: fs27.existsSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/copy/copy.js
+var require_copy = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/copy/copy.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdirp = require_mkdirs2().mkdirs;
+ var pathExists = require_path_exists().pathExists;
+ var utimes = require_utimes().utimesMillis;
+ var stat = require_stat();
+ function copy(src, dest, opts, cb) {
+ if (typeof opts === "function" && !cb) {
+ cb = opts;
+ opts = {};
+ } else if (typeof opts === "function") {
+ opts = { filter: opts };
+ }
+ cb = cb || function() {
+ };
+ opts = opts || {};
+ opts.clobber = "clobber" in opts ? !!opts.clobber : true;
+ opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
+ if (opts.preserveTimestamps && process.arch === "ia32") {
+ console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;
+
+ see https://github.com/jprichardson/node-fs-extra/issues/269`);
+ }
+ stat.checkPaths(src, dest, "copy", (err, stats) => {
+ if (err)
+ return cb(err);
+ const { srcStat, destStat } = stats;
+ stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => {
+ if (err2)
+ return cb(err2);
+ if (opts.filter)
+ return handleFilter(checkParentDir, destStat, src, dest, opts, cb);
+ return checkParentDir(destStat, src, dest, opts, cb);
+ });
+ });
+ }
+ function checkParentDir(destStat, src, dest, opts, cb) {
+ const destParent = path36.dirname(dest);
+ pathExists(destParent, (err, dirExists) => {
+ if (err)
+ return cb(err);
+ if (dirExists)
+ return startCopy(destStat, src, dest, opts, cb);
+ mkdirp(destParent, (err2) => {
+ if (err2)
+ return cb(err2);
+ return startCopy(destStat, src, dest, opts, cb);
+ });
+ });
+ }
+ function handleFilter(onInclude, destStat, src, dest, opts, cb) {
+ Promise.resolve(opts.filter(src, dest)).then((include) => {
+ if (include)
+ return onInclude(destStat, src, dest, opts, cb);
+ return cb();
+ }, (error) => cb(error));
+ }
+ function startCopy(destStat, src, dest, opts, cb) {
+ if (opts.filter)
+ return handleFilter(getStats, destStat, src, dest, opts, cb);
+ return getStats(destStat, src, dest, opts, cb);
+ }
+ function getStats(destStat, src, dest, opts, cb) {
+ const stat2 = opts.dereference ? fs27.stat : fs27.lstat;
+ stat2(src, (err, srcStat) => {
+ if (err)
+ return cb(err);
+ if (srcStat.isDirectory())
+ return onDir(srcStat, destStat, src, dest, opts, cb);
+ else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice())
+ return onFile(srcStat, destStat, src, dest, opts, cb);
+ else if (srcStat.isSymbolicLink())
+ return onLink(destStat, src, dest, opts, cb);
+ });
+ }
+ function onFile(srcStat, destStat, src, dest, opts, cb) {
+ if (!destStat)
+ return copyFile(srcStat, src, dest, opts, cb);
+ return mayCopyFile(srcStat, src, dest, opts, cb);
+ }
+ function mayCopyFile(srcStat, src, dest, opts, cb) {
+ if (opts.overwrite) {
+ fs27.unlink(dest, (err) => {
+ if (err)
+ return cb(err);
+ return copyFile(srcStat, src, dest, opts, cb);
+ });
+ } else if (opts.errorOnExist) {
+ return cb(new Error(`'${dest}' already exists`));
+ } else
+ return cb();
+ }
+ function copyFile(srcStat, src, dest, opts, cb) {
+ if (typeof fs27.copyFile === "function") {
+ return fs27.copyFile(src, dest, (err) => {
+ if (err)
+ return cb(err);
+ return setDestModeAndTimestamps(srcStat, dest, opts, cb);
+ });
+ }
+ return copyFileFallback(srcStat, src, dest, opts, cb);
+ }
+ function copyFileFallback(srcStat, src, dest, opts, cb) {
+ const rs = fs27.createReadStream(src);
+ rs.on("error", (err) => cb(err)).once("open", () => {
+ const ws = fs27.createWriteStream(dest, { mode: srcStat.mode });
+ ws.on("error", (err) => cb(err)).on("open", () => rs.pipe(ws)).once("close", () => setDestModeAndTimestamps(srcStat, dest, opts, cb));
+ });
+ }
+ function setDestModeAndTimestamps(srcStat, dest, opts, cb) {
+ fs27.chmod(dest, srcStat.mode, (err) => {
+ if (err)
+ return cb(err);
+ if (opts.preserveTimestamps) {
+ return utimes(dest, srcStat.atime, srcStat.mtime, cb);
+ }
+ return cb();
+ });
+ }
+ function onDir(srcStat, destStat, src, dest, opts, cb) {
+ if (!destStat)
+ return mkDirAndCopy(srcStat, src, dest, opts, cb);
+ if (destStat && !destStat.isDirectory()) {
+ return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`));
+ }
+ return copyDir(src, dest, opts, cb);
+ }
+ function mkDirAndCopy(srcStat, src, dest, opts, cb) {
+ fs27.mkdir(dest, (err) => {
+ if (err)
+ return cb(err);
+ copyDir(src, dest, opts, (err2) => {
+ if (err2)
+ return cb(err2);
+ return fs27.chmod(dest, srcStat.mode, cb);
+ });
+ });
+ }
+ function copyDir(src, dest, opts, cb) {
+ fs27.readdir(src, (err, items) => {
+ if (err)
+ return cb(err);
+ return copyDirItems(items, src, dest, opts, cb);
+ });
+ }
+ function copyDirItems(items, src, dest, opts, cb) {
+ const item = items.pop();
+ if (!item)
+ return cb();
+ return copyDirItem(items, item, src, dest, opts, cb);
+ }
+ function copyDirItem(items, item, src, dest, opts, cb) {
+ const srcItem = path36.join(src, item);
+ const destItem = path36.join(dest, item);
+ stat.checkPaths(srcItem, destItem, "copy", (err, stats) => {
+ if (err)
+ return cb(err);
+ const { destStat } = stats;
+ startCopy(destStat, srcItem, destItem, opts, (err2) => {
+ if (err2)
+ return cb(err2);
+ return copyDirItems(items, src, dest, opts, cb);
+ });
+ });
+ }
+ function onLink(destStat, src, dest, opts, cb) {
+ fs27.readlink(src, (err, resolvedSrc) => {
+ if (err)
+ return cb(err);
+ if (opts.dereference) {
+ resolvedSrc = path36.resolve(process.cwd(), resolvedSrc);
+ }
+ if (!destStat) {
+ return fs27.symlink(resolvedSrc, dest, cb);
+ } else {
+ fs27.readlink(dest, (err2, resolvedDest) => {
+ if (err2) {
+ if (err2.code === "EINVAL" || err2.code === "UNKNOWN")
+ return fs27.symlink(resolvedSrc, dest, cb);
+ return cb(err2);
+ }
+ if (opts.dereference) {
+ resolvedDest = path36.resolve(process.cwd(), resolvedDest);
+ }
+ if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
+ return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`));
+ }
+ if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
+ return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`));
+ }
+ return copyLink(resolvedSrc, dest, cb);
+ });
+ }
+ });
+ }
+ function copyLink(resolvedSrc, dest, cb) {
+ fs27.unlink(dest, (err) => {
+ if (err)
+ return cb(err);
+ return fs27.symlink(resolvedSrc, dest, cb);
+ });
+ }
+ module2.exports = copy;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/copy/index.js
+var require_copy2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/copy/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ module2.exports = {
+ copy: u(require_copy())
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/remove/rimraf.js
+var require_rimraf = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/remove/rimraf.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var assert = require("assert");
+ var isWindows4 = process.platform === "win32";
+ function defaults2(options) {
+ const methods2 = [
+ "unlink",
+ "chmod",
+ "stat",
+ "lstat",
+ "rmdir",
+ "readdir"
+ ];
+ methods2.forEach((m) => {
+ options[m] = options[m] || fs27[m];
+ m = m + "Sync";
+ options[m] = options[m] || fs27[m];
+ });
+ options.maxBusyTries = options.maxBusyTries || 3;
+ }
+ function rimraf(p, options, cb) {
+ let busyTries = 0;
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+ assert(p, "rimraf: missing path");
+ assert.strictEqual(typeof p, "string", "rimraf: path should be a string");
+ assert.strictEqual(typeof cb, "function", "rimraf: callback function required");
+ assert(options, "rimraf: invalid options argument provided");
+ assert.strictEqual(typeof options, "object", "rimraf: options should be object");
+ defaults2(options);
+ rimraf_(p, options, function CB(er) {
+ if (er) {
+ if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && busyTries < options.maxBusyTries) {
+ busyTries++;
+ const time = busyTries * 100;
+ return setTimeout(() => rimraf_(p, options, CB), time);
+ }
+ if (er.code === "ENOENT")
+ er = null;
+ }
+ cb(er);
+ });
+ }
+ function rimraf_(p, options, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ options.lstat(p, (er, st) => {
+ if (er && er.code === "ENOENT") {
+ return cb(null);
+ }
+ if (er && er.code === "EPERM" && isWindows4) {
+ return fixWinEPERM(p, options, er, cb);
+ }
+ if (st && st.isDirectory()) {
+ return rmdir(p, options, er, cb);
+ }
+ options.unlink(p, (er2) => {
+ if (er2) {
+ if (er2.code === "ENOENT") {
+ return cb(null);
+ }
+ if (er2.code === "EPERM") {
+ return isWindows4 ? fixWinEPERM(p, options, er2, cb) : rmdir(p, options, er2, cb);
+ }
+ if (er2.code === "EISDIR") {
+ return rmdir(p, options, er2, cb);
+ }
+ }
+ return cb(er2);
+ });
+ });
+ }
+ function fixWinEPERM(p, options, er, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ if (er) {
+ assert(er instanceof Error);
+ }
+ options.chmod(p, 438, (er2) => {
+ if (er2) {
+ cb(er2.code === "ENOENT" ? null : er);
+ } else {
+ options.stat(p, (er3, stats) => {
+ if (er3) {
+ cb(er3.code === "ENOENT" ? null : er);
+ } else if (stats.isDirectory()) {
+ rmdir(p, options, er, cb);
+ } else {
+ options.unlink(p, cb);
+ }
+ });
+ }
+ });
+ }
+ function fixWinEPERMSync(p, options, er) {
+ let stats;
+ assert(p);
+ assert(options);
+ if (er) {
+ assert(er instanceof Error);
+ }
+ try {
+ options.chmodSync(p, 438);
+ } catch (er2) {
+ if (er2.code === "ENOENT") {
+ return;
+ } else {
+ throw er;
+ }
+ }
+ try {
+ stats = options.statSync(p);
+ } catch (er3) {
+ if (er3.code === "ENOENT") {
+ return;
+ } else {
+ throw er;
+ }
+ }
+ if (stats.isDirectory()) {
+ rmdirSync(p, options, er);
+ } else {
+ options.unlinkSync(p);
+ }
+ }
+ function rmdir(p, options, originalEr, cb) {
+ assert(p);
+ assert(options);
+ if (originalEr) {
+ assert(originalEr instanceof Error);
+ }
+ assert(typeof cb === "function");
+ options.rmdir(p, (er) => {
+ if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) {
+ rmkids(p, options, cb);
+ } else if (er && er.code === "ENOTDIR") {
+ cb(originalEr);
+ } else {
+ cb(er);
+ }
+ });
+ }
+ function rmkids(p, options, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ options.readdir(p, (er, files) => {
+ if (er)
+ return cb(er);
+ let n = files.length;
+ let errState;
+ if (n === 0)
+ return options.rmdir(p, cb);
+ files.forEach((f) => {
+ rimraf(path36.join(p, f), options, (er2) => {
+ if (errState) {
+ return;
+ }
+ if (er2)
+ return cb(errState = er2);
+ if (--n === 0) {
+ options.rmdir(p, cb);
+ }
+ });
+ });
+ });
+ }
+ function rimrafSync(p, options) {
+ let st;
+ options = options || {};
+ defaults2(options);
+ assert(p, "rimraf: missing path");
+ assert.strictEqual(typeof p, "string", "rimraf: path should be a string");
+ assert(options, "rimraf: missing options");
+ assert.strictEqual(typeof options, "object", "rimraf: options should be object");
+ try {
+ st = options.lstatSync(p);
+ } catch (er) {
+ if (er.code === "ENOENT") {
+ return;
+ }
+ if (er.code === "EPERM" && isWindows4) {
+ fixWinEPERMSync(p, options, er);
+ }
+ }
+ try {
+ if (st && st.isDirectory()) {
+ rmdirSync(p, options, null);
+ } else {
+ options.unlinkSync(p);
+ }
+ } catch (er) {
+ if (er.code === "ENOENT") {
+ return;
+ } else if (er.code === "EPERM") {
+ return isWindows4 ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er);
+ } else if (er.code !== "EISDIR") {
+ throw er;
+ }
+ rmdirSync(p, options, er);
+ }
+ }
+ function rmdirSync(p, options, originalEr) {
+ assert(p);
+ assert(options);
+ if (originalEr) {
+ assert(originalEr instanceof Error);
+ }
+ try {
+ options.rmdirSync(p);
+ } catch (er) {
+ if (er.code === "ENOTDIR") {
+ throw originalEr;
+ } else if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") {
+ rmkidsSync(p, options);
+ } else if (er.code !== "ENOENT") {
+ throw er;
+ }
+ }
+ }
+ function rmkidsSync(p, options) {
+ assert(p);
+ assert(options);
+ options.readdirSync(p).forEach((f) => rimrafSync(path36.join(p, f), options));
+ if (isWindows4) {
+ const startTime = Date.now();
+ do {
+ try {
+ const ret = options.rmdirSync(p, options);
+ return ret;
+ } catch (er) {
+ }
+ } while (Date.now() - startTime < 500);
+ } else {
+ const ret = options.rmdirSync(p, options);
+ return ret;
+ }
+ }
+ module2.exports = rimraf;
+ rimraf.sync = rimrafSync;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/remove/index.js
+var require_remove = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/remove/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var rimraf = require_rimraf();
+ module2.exports = {
+ remove: u(rimraf),
+ removeSync: rimraf.sync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/empty/index.js
+var require_empty = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/empty/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdir = require_mkdirs2();
+ var remove = require_remove();
+ var emptyDir = u(function emptyDir2(dir, callback) {
+ callback = callback || function() {
+ };
+ fs27.readdir(dir, (err, items) => {
+ if (err)
+ return mkdir.mkdirs(dir, callback);
+ items = items.map((item) => path36.join(dir, item));
+ deleteItem();
+ function deleteItem() {
+ const item = items.pop();
+ if (!item)
+ return callback();
+ remove.remove(item, (err2) => {
+ if (err2)
+ return callback(err2);
+ deleteItem();
+ });
+ }
+ });
+ });
+ function emptyDirSync(dir) {
+ let items;
+ try {
+ items = fs27.readdirSync(dir);
+ } catch (err) {
+ return mkdir.mkdirsSync(dir);
+ }
+ items.forEach((item) => {
+ item = path36.join(dir, item);
+ remove.removeSync(item);
+ });
+ }
+ module2.exports = {
+ emptyDirSync,
+ emptydirSync: emptyDirSync,
+ emptyDir,
+ emptydir: emptyDir
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/ensure/file.js
+var require_file = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/ensure/file.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var mkdir = require_mkdirs2();
+ var pathExists = require_path_exists().pathExists;
+ function createFile(file, callback) {
+ function makeFile() {
+ fs27.writeFile(file, "", (err) => {
+ if (err)
+ return callback(err);
+ callback();
+ });
+ }
+ fs27.stat(file, (err, stats) => {
+ if (!err && stats.isFile())
+ return callback();
+ const dir = path36.dirname(file);
+ pathExists(dir, (err2, dirExists) => {
+ if (err2)
+ return callback(err2);
+ if (dirExists)
+ return makeFile();
+ mkdir.mkdirs(dir, (err3) => {
+ if (err3)
+ return callback(err3);
+ makeFile();
+ });
+ });
+ });
+ }
+ function createFileSync(file) {
+ let stats;
+ try {
+ stats = fs27.statSync(file);
+ } catch (e) {
+ }
+ if (stats && stats.isFile())
+ return;
+ const dir = path36.dirname(file);
+ if (!fs27.existsSync(dir)) {
+ mkdir.mkdirsSync(dir);
+ }
+ fs27.writeFileSync(file, "");
+ }
+ module2.exports = {
+ createFile: u(createFile),
+ createFileSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/ensure/link.js
+var require_link = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/ensure/link.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var mkdir = require_mkdirs2();
+ var pathExists = require_path_exists().pathExists;
+ function createLink(srcpath, dstpath, callback) {
+ function makeLink(srcpath2, dstpath2) {
+ fs27.link(srcpath2, dstpath2, (err) => {
+ if (err)
+ return callback(err);
+ callback(null);
+ });
+ }
+ pathExists(dstpath, (err, destinationExists) => {
+ if (err)
+ return callback(err);
+ if (destinationExists)
+ return callback(null);
+ fs27.lstat(srcpath, (err2) => {
+ if (err2) {
+ err2.message = err2.message.replace("lstat", "ensureLink");
+ return callback(err2);
+ }
+ const dir = path36.dirname(dstpath);
+ pathExists(dir, (err3, dirExists) => {
+ if (err3)
+ return callback(err3);
+ if (dirExists)
+ return makeLink(srcpath, dstpath);
+ mkdir.mkdirs(dir, (err4) => {
+ if (err4)
+ return callback(err4);
+ makeLink(srcpath, dstpath);
+ });
+ });
+ });
+ });
+ }
+ function createLinkSync(srcpath, dstpath) {
+ const destinationExists = fs27.existsSync(dstpath);
+ if (destinationExists)
+ return void 0;
+ try {
+ fs27.lstatSync(srcpath);
+ } catch (err) {
+ err.message = err.message.replace("lstat", "ensureLink");
+ throw err;
+ }
+ const dir = path36.dirname(dstpath);
+ const dirExists = fs27.existsSync(dir);
+ if (dirExists)
+ return fs27.linkSync(srcpath, dstpath);
+ mkdir.mkdirsSync(dir);
+ return fs27.linkSync(srcpath, dstpath);
+ }
+ module2.exports = {
+ createLink: u(createLink),
+ createLinkSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/ensure/symlink-paths.js
+var require_symlink_paths = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2, module2) {
+ "use strict";
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var pathExists = require_path_exists().pathExists;
+ function symlinkPaths(srcpath, dstpath, callback) {
+ if (path36.isAbsolute(srcpath)) {
+ return fs27.lstat(srcpath, (err) => {
+ if (err) {
+ err.message = err.message.replace("lstat", "ensureSymlink");
+ return callback(err);
+ }
+ return callback(null, {
+ "toCwd": srcpath,
+ "toDst": srcpath
+ });
+ });
+ } else {
+ const dstdir = path36.dirname(dstpath);
+ const relativeToDst = path36.join(dstdir, srcpath);
+ return pathExists(relativeToDst, (err, exists) => {
+ if (err)
+ return callback(err);
+ if (exists) {
+ return callback(null, {
+ "toCwd": relativeToDst,
+ "toDst": srcpath
+ });
+ } else {
+ return fs27.lstat(srcpath, (err2) => {
+ if (err2) {
+ err2.message = err2.message.replace("lstat", "ensureSymlink");
+ return callback(err2);
+ }
+ return callback(null, {
+ "toCwd": srcpath,
+ "toDst": path36.relative(dstdir, srcpath)
+ });
+ });
+ }
+ });
+ }
+ }
+ function symlinkPathsSync(srcpath, dstpath) {
+ let exists;
+ if (path36.isAbsolute(srcpath)) {
+ exists = fs27.existsSync(srcpath);
+ if (!exists)
+ throw new Error("absolute srcpath does not exist");
+ return {
+ "toCwd": srcpath,
+ "toDst": srcpath
+ };
+ } else {
+ const dstdir = path36.dirname(dstpath);
+ const relativeToDst = path36.join(dstdir, srcpath);
+ exists = fs27.existsSync(relativeToDst);
+ if (exists) {
+ return {
+ "toCwd": relativeToDst,
+ "toDst": srcpath
+ };
+ } else {
+ exists = fs27.existsSync(srcpath);
+ if (!exists)
+ throw new Error("relative srcpath does not exist");
+ return {
+ "toCwd": srcpath,
+ "toDst": path36.relative(dstdir, srcpath)
+ };
+ }
+ }
+ }
+ module2.exports = {
+ symlinkPaths,
+ symlinkPathsSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/ensure/symlink-type.js
+var require_symlink_type = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ function symlinkType(srcpath, type, callback) {
+ callback = typeof type === "function" ? type : callback;
+ type = typeof type === "function" ? false : type;
+ if (type)
+ return callback(null, type);
+ fs27.lstat(srcpath, (err, stats) => {
+ if (err)
+ return callback(null, "file");
+ type = stats && stats.isDirectory() ? "dir" : "file";
+ callback(null, type);
+ });
+ }
+ function symlinkTypeSync(srcpath, type) {
+ let stats;
+ if (type)
+ return type;
+ try {
+ stats = fs27.lstatSync(srcpath);
+ } catch (e) {
+ return "file";
+ }
+ return stats && stats.isDirectory() ? "dir" : "file";
+ }
+ module2.exports = {
+ symlinkType,
+ symlinkTypeSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/ensure/symlink.js
+var require_symlink = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/ensure/symlink.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var _mkdirs = require_mkdirs2();
+ var mkdirs = _mkdirs.mkdirs;
+ var mkdirsSync = _mkdirs.mkdirsSync;
+ var _symlinkPaths = require_symlink_paths();
+ var symlinkPaths = _symlinkPaths.symlinkPaths;
+ var symlinkPathsSync = _symlinkPaths.symlinkPathsSync;
+ var _symlinkType = require_symlink_type();
+ var symlinkType = _symlinkType.symlinkType;
+ var symlinkTypeSync = _symlinkType.symlinkTypeSync;
+ var pathExists = require_path_exists().pathExists;
+ function createSymlink(srcpath, dstpath, type, callback) {
+ callback = typeof type === "function" ? type : callback;
+ type = typeof type === "function" ? false : type;
+ pathExists(dstpath, (err, destinationExists) => {
+ if (err)
+ return callback(err);
+ if (destinationExists)
+ return callback(null);
+ symlinkPaths(srcpath, dstpath, (err2, relative) => {
+ if (err2)
+ return callback(err2);
+ srcpath = relative.toDst;
+ symlinkType(relative.toCwd, type, (err3, type2) => {
+ if (err3)
+ return callback(err3);
+ const dir = path36.dirname(dstpath);
+ pathExists(dir, (err4, dirExists) => {
+ if (err4)
+ return callback(err4);
+ if (dirExists)
+ return fs27.symlink(srcpath, dstpath, type2, callback);
+ mkdirs(dir, (err5) => {
+ if (err5)
+ return callback(err5);
+ fs27.symlink(srcpath, dstpath, type2, callback);
+ });
+ });
+ });
+ });
+ });
+ }
+ function createSymlinkSync(srcpath, dstpath, type) {
+ const destinationExists = fs27.existsSync(dstpath);
+ if (destinationExists)
+ return void 0;
+ const relative = symlinkPathsSync(srcpath, dstpath);
+ srcpath = relative.toDst;
+ type = symlinkTypeSync(relative.toCwd, type);
+ const dir = path36.dirname(dstpath);
+ const exists = fs27.existsSync(dir);
+ if (exists)
+ return fs27.symlinkSync(srcpath, dstpath, type);
+ mkdirsSync(dir);
+ return fs27.symlinkSync(srcpath, dstpath, type);
+ }
+ module2.exports = {
+ createSymlink: u(createSymlink),
+ createSymlinkSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/ensure/index.js
+var require_ensure = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/ensure/index.js"(exports2, module2) {
+ "use strict";
+ var file = require_file();
+ var link = require_link();
+ var symlink = require_symlink();
+ module2.exports = {
+ createFile: file.createFile,
+ createFileSync: file.createFileSync,
+ ensureFile: file.createFile,
+ ensureFileSync: file.createFileSync,
+ createLink: link.createLink,
+ createLinkSync: link.createLinkSync,
+ ensureLink: link.createLink,
+ ensureLinkSync: link.createLinkSync,
+ createSymlink: symlink.createSymlink,
+ createSymlinkSync: symlink.createSymlinkSync,
+ ensureSymlink: symlink.createSymlink,
+ ensureSymlinkSync: symlink.createSymlinkSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/jsonfile/index.js
+var require_jsonfile = __commonJS({
+ "node_modules/streamroller/node_modules/jsonfile/index.js"(exports2, module2) {
+ var _fs;
+ try {
+ _fs = require_graceful_fs();
+ } catch (_) {
+ _fs = require("fs");
+ }
+ function readFile2(file, options, callback) {
+ if (callback == null) {
+ callback = options;
+ options = {};
+ }
+ if (typeof options === "string") {
+ options = { encoding: options };
+ }
+ options = options || {};
+ var fs27 = options.fs || _fs;
+ var shouldThrow = true;
+ if ("throws" in options) {
+ shouldThrow = options.throws;
+ }
+ fs27.readFile(file, options, function(err, data) {
+ if (err)
+ return callback(err);
+ data = stripBom(data);
+ var obj;
+ try {
+ obj = JSON.parse(data, options ? options.reviver : null);
+ } catch (err2) {
+ if (shouldThrow) {
+ err2.message = file + ": " + err2.message;
+ return callback(err2);
+ } else {
+ return callback(null, null);
+ }
+ }
+ callback(null, obj);
+ });
+ }
+ function readFileSync(file, options) {
+ options = options || {};
+ if (typeof options === "string") {
+ options = { encoding: options };
+ }
+ var fs27 = options.fs || _fs;
+ var shouldThrow = true;
+ if ("throws" in options) {
+ shouldThrow = options.throws;
+ }
+ try {
+ var content = fs27.readFileSync(file, options);
+ content = stripBom(content);
+ return JSON.parse(content, options.reviver);
+ } catch (err) {
+ if (shouldThrow) {
+ err.message = file + ": " + err.message;
+ throw err;
+ } else {
+ return null;
+ }
+ }
+ }
+ function stringify3(obj, options) {
+ var spaces;
+ var EOL2 = "\n";
+ if (typeof options === "object" && options !== null) {
+ if (options.spaces) {
+ spaces = options.spaces;
+ }
+ if (options.EOL) {
+ EOL2 = options.EOL;
+ }
+ }
+ var str = JSON.stringify(obj, options ? options.replacer : null, spaces);
+ return str.replace(/\n/g, EOL2) + EOL2;
+ }
+ function writeFile2(file, obj, options, callback) {
+ if (callback == null) {
+ callback = options;
+ options = {};
+ }
+ options = options || {};
+ var fs27 = options.fs || _fs;
+ var str = "";
+ try {
+ str = stringify3(obj, options);
+ } catch (err) {
+ if (callback)
+ callback(err, null);
+ return;
+ }
+ fs27.writeFile(file, str, options, callback);
+ }
+ function writeFileSync(file, obj, options) {
+ options = options || {};
+ var fs27 = options.fs || _fs;
+ var str = stringify3(obj, options);
+ return fs27.writeFileSync(file, str, options);
+ }
+ function stripBom(content) {
+ if (Buffer.isBuffer(content))
+ content = content.toString("utf8");
+ content = content.replace(/^\uFEFF/, "");
+ return content;
+ }
+ var jsonfile = {
+ readFile: readFile2,
+ readFileSync,
+ writeFile: writeFile2,
+ writeFileSync
+ };
+ module2.exports = jsonfile;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/json/jsonfile.js
+var require_jsonfile2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/json/jsonfile.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var jsonFile = require_jsonfile();
+ module2.exports = {
+ readJson: u(jsonFile.readFile),
+ readJsonSync: jsonFile.readFileSync,
+ writeJson: u(jsonFile.writeFile),
+ writeJsonSync: jsonFile.writeFileSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/json/output-json.js
+var require_output_json = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/json/output-json.js"(exports2, module2) {
+ "use strict";
+ var path36 = require("path");
+ var mkdir = require_mkdirs2();
+ var pathExists = require_path_exists().pathExists;
+ var jsonFile = require_jsonfile2();
+ function outputJson(file, data, options, callback) {
+ if (typeof options === "function") {
+ callback = options;
+ options = {};
+ }
+ const dir = path36.dirname(file);
+ pathExists(dir, (err, itDoes) => {
+ if (err)
+ return callback(err);
+ if (itDoes)
+ return jsonFile.writeJson(file, data, options, callback);
+ mkdir.mkdirs(dir, (err2) => {
+ if (err2)
+ return callback(err2);
+ jsonFile.writeJson(file, data, options, callback);
+ });
+ });
+ }
+ module2.exports = outputJson;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/json/output-json-sync.js
+var require_output_json_sync = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/json/output-json-sync.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdir = require_mkdirs2();
+ var jsonFile = require_jsonfile2();
+ function outputJsonSync(file, data, options) {
+ const dir = path36.dirname(file);
+ if (!fs27.existsSync(dir)) {
+ mkdir.mkdirsSync(dir);
+ }
+ jsonFile.writeJsonSync(file, data, options);
+ }
+ module2.exports = outputJsonSync;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/json/index.js
+var require_json = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/json/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var jsonFile = require_jsonfile2();
+ jsonFile.outputJson = u(require_output_json());
+ jsonFile.outputJsonSync = require_output_json_sync();
+ jsonFile.outputJSON = jsonFile.outputJson;
+ jsonFile.outputJSONSync = jsonFile.outputJsonSync;
+ jsonFile.writeJSON = jsonFile.writeJson;
+ jsonFile.writeJSONSync = jsonFile.writeJsonSync;
+ jsonFile.readJSON = jsonFile.readJson;
+ jsonFile.readJSONSync = jsonFile.readJsonSync;
+ module2.exports = jsonFile;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/move-sync/move-sync.js
+var require_move_sync = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/move-sync/move-sync.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var copySync = require_copy_sync2().copySync;
+ var removeSync = require_remove().removeSync;
+ var mkdirpSync = require_mkdirs2().mkdirpSync;
+ var stat = require_stat();
+ function moveSync(src, dest, opts) {
+ opts = opts || {};
+ const overwrite = opts.overwrite || opts.clobber || false;
+ const { srcStat } = stat.checkPathsSync(src, dest, "move");
+ stat.checkParentPathsSync(src, srcStat, dest, "move");
+ mkdirpSync(path36.dirname(dest));
+ return doRename(src, dest, overwrite);
+ }
+ function doRename(src, dest, overwrite) {
+ if (overwrite) {
+ removeSync(dest);
+ return rename(src, dest, overwrite);
+ }
+ if (fs27.existsSync(dest))
+ throw new Error("dest already exists.");
+ return rename(src, dest, overwrite);
+ }
+ function rename(src, dest, overwrite) {
+ try {
+ fs27.renameSync(src, dest);
+ } catch (err) {
+ if (err.code !== "EXDEV")
+ throw err;
+ return moveAcrossDevice(src, dest, overwrite);
+ }
+ }
+ function moveAcrossDevice(src, dest, overwrite) {
+ const opts = {
+ overwrite,
+ errorOnExist: true
+ };
+ copySync(src, dest, opts);
+ return removeSync(src);
+ }
+ module2.exports = moveSync;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/move-sync/index.js
+var require_move_sync2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/move-sync/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = {
+ moveSync: require_move_sync()
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/move/move.js
+var require_move = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/move/move.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var copy = require_copy2().copy;
+ var remove = require_remove().remove;
+ var mkdirp = require_mkdirs2().mkdirp;
+ var pathExists = require_path_exists().pathExists;
+ var stat = require_stat();
+ function move(src, dest, opts, cb) {
+ if (typeof opts === "function") {
+ cb = opts;
+ opts = {};
+ }
+ const overwrite = opts.overwrite || opts.clobber || false;
+ stat.checkPaths(src, dest, "move", (err, stats) => {
+ if (err)
+ return cb(err);
+ const { srcStat } = stats;
+ stat.checkParentPaths(src, srcStat, dest, "move", (err2) => {
+ if (err2)
+ return cb(err2);
+ mkdirp(path36.dirname(dest), (err3) => {
+ if (err3)
+ return cb(err3);
+ return doRename(src, dest, overwrite, cb);
+ });
+ });
+ });
+ }
+ function doRename(src, dest, overwrite, cb) {
+ if (overwrite) {
+ return remove(dest, (err) => {
+ if (err)
+ return cb(err);
+ return rename(src, dest, overwrite, cb);
+ });
+ }
+ pathExists(dest, (err, destExists) => {
+ if (err)
+ return cb(err);
+ if (destExists)
+ return cb(new Error("dest already exists."));
+ return rename(src, dest, overwrite, cb);
+ });
+ }
+ function rename(src, dest, overwrite, cb) {
+ fs27.rename(src, dest, (err) => {
+ if (!err)
+ return cb();
+ if (err.code !== "EXDEV")
+ return cb(err);
+ return moveAcrossDevice(src, dest, overwrite, cb);
+ });
+ }
+ function moveAcrossDevice(src, dest, overwrite, cb) {
+ const opts = {
+ overwrite,
+ errorOnExist: true
+ };
+ copy(src, dest, opts, (err) => {
+ if (err)
+ return cb(err);
+ return remove(src, cb);
+ });
+ }
+ module2.exports = move;
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/move/index.js
+var require_move2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/move/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ module2.exports = {
+ move: u(require_move())
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/output/index.js
+var require_output = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/output/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify().fromCallback;
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdir = require_mkdirs2();
+ var pathExists = require_path_exists().pathExists;
+ function outputFile(file, data, encoding, callback) {
+ if (typeof encoding === "function") {
+ callback = encoding;
+ encoding = "utf8";
+ }
+ const dir = path36.dirname(file);
+ pathExists(dir, (err, itDoes) => {
+ if (err)
+ return callback(err);
+ if (itDoes)
+ return fs27.writeFile(file, data, encoding, callback);
+ mkdir.mkdirs(dir, (err2) => {
+ if (err2)
+ return callback(err2);
+ fs27.writeFile(file, data, encoding, callback);
+ });
+ });
+ }
+ function outputFileSync(file, ...args) {
+ const dir = path36.dirname(file);
+ if (fs27.existsSync(dir)) {
+ return fs27.writeFileSync(file, ...args);
+ }
+ mkdir.mkdirsSync(dir);
+ fs27.writeFileSync(file, ...args);
+ }
+ module2.exports = {
+ outputFile: u(outputFile),
+ outputFileSync
+ };
+ }
+});
+
+// node_modules/streamroller/node_modules/fs-extra/lib/index.js
+var require_lib2 = __commonJS({
+ "node_modules/streamroller/node_modules/fs-extra/lib/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = Object.assign({}, require_fs(), require_copy_sync2(), require_copy2(), require_empty(), require_ensure(), require_json(), require_mkdirs2(), require_move_sync2(), require_move2(), require_output(), require_path_exists(), require_remove());
+ var fs27 = require("fs");
+ if (Object.getOwnPropertyDescriptor(fs27, "promises")) {
+ Object.defineProperty(module2.exports, "promises", {
+ get() {
+ return fs27.promises;
+ }
+ });
+ }
+ }
+});
+
+// node_modules/streamroller/lib/now.js
+var require_now = __commonJS({
+ "node_modules/streamroller/lib/now.js"(exports2, module2) {
+ module2.exports = () => new Date();
+ }
+});
+
+// node_modules/streamroller/node_modules/date-format/lib/index.js
+var require_lib3 = __commonJS({
+ "node_modules/streamroller/node_modules/date-format/lib/index.js"(exports2, module2) {
+ "use strict";
+ function padWithZeros(vNumber, width) {
+ var numAsString = vNumber.toString();
+ while (numAsString.length < width) {
+ numAsString = "0" + numAsString;
+ }
+ return numAsString;
+ }
+ function addZero(vNumber) {
+ return padWithZeros(vNumber, 2);
+ }
+ function offset(timezoneOffset) {
+ var os10 = Math.abs(timezoneOffset);
+ var h = String(Math.floor(os10 / 60));
+ var m = String(os10 % 60);
+ if (h.length === 1) {
+ h = "0" + h;
+ }
+ if (m.length === 1) {
+ m = "0" + m;
+ }
+ return timezoneOffset < 0 ? "+" + h + m : "-" + h + m;
+ }
+ function datePart(date, displayUTC, part) {
+ return displayUTC ? date["getUTC" + part]() : date["get" + part]();
+ }
+ function asString(format2, date) {
+ if (typeof format2 !== "string") {
+ date = format2;
+ format2 = module2.exports.ISO8601_FORMAT;
+ }
+ if (!date) {
+ date = module2.exports.now();
+ }
+ var displayUTC = format2.indexOf("O") > -1;
+ var vDay = addZero(datePart(date, displayUTC, "Date"));
+ var vMonth = addZero(datePart(date, displayUTC, "Month") + 1);
+ var vYearLong = addZero(datePart(date, displayUTC, "FullYear"));
+ var vYearShort = addZero(vYearLong.substring(2, 4));
+ var vYear = format2.indexOf("yyyy") > -1 ? vYearLong : vYearShort;
+ var vHour = addZero(datePart(date, displayUTC, "Hours"));
+ var vMinute = addZero(datePart(date, displayUTC, "Minutes"));
+ var vSecond = addZero(datePart(date, displayUTC, "Seconds"));
+ var vMillisecond = padWithZeros(datePart(date, displayUTC, "Milliseconds"), 3);
+ var vTimeZone = offset(date.getTimezoneOffset());
+ var formatted = format2.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear).replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond).replace(/SSS/g, vMillisecond).replace(/O/g, vTimeZone);
+ return formatted;
+ }
+ function extractDateParts(pattern, str, missingValuesDate) {
+ var matchers = [
+ {
+ pattern: /y{1,4}/,
+ regexp: "\\d{1,4}",
+ fn: function(date2, value) {
+ date2.setFullYear(value);
+ }
+ },
+ {
+ pattern: /MM/,
+ regexp: "\\d{1,2}",
+ fn: function(date2, value) {
+ date2.setMonth(value - 1);
+ }
+ },
+ {
+ pattern: /dd/,
+ regexp: "\\d{1,2}",
+ fn: function(date2, value) {
+ date2.setDate(value);
+ }
+ },
+ {
+ pattern: /hh/,
+ regexp: "\\d{1,2}",
+ fn: function(date2, value) {
+ date2.setHours(value);
+ }
+ },
+ {
+ pattern: /mm/,
+ regexp: "\\d\\d",
+ fn: function(date2, value) {
+ date2.setMinutes(value);
+ }
+ },
+ {
+ pattern: /ss/,
+ regexp: "\\d\\d",
+ fn: function(date2, value) {
+ date2.setSeconds(value);
+ }
+ },
+ {
+ pattern: /SSS/,
+ regexp: "\\d\\d\\d",
+ fn: function(date2, value) {
+ date2.setMilliseconds(value);
+ }
+ },
+ {
+ pattern: /O/,
+ regexp: "[+-]\\d{3,4}|Z",
+ fn: function(date2, value) {
+ if (value === "Z") {
+ value = 0;
+ }
+ var offset2 = Math.abs(value);
+ var minutes = offset2 % 100 + Math.floor(offset2 / 100) * 60;
+ date2.setMinutes(date2.getMinutes() + (value > 0 ? minutes : -minutes));
+ }
+ }
+ ];
+ var parsedPattern = matchers.reduce(function(p, m) {
+ if (m.pattern.test(p.regexp)) {
+ m.index = p.regexp.match(m.pattern).index;
+ p.regexp = p.regexp.replace(m.pattern, "(" + m.regexp + ")");
+ } else {
+ m.index = -1;
+ }
+ return p;
+ }, { regexp: pattern, index: [] });
+ var dateFns = matchers.filter(function(m) {
+ return m.index > -1;
+ });
+ dateFns.sort(function(a, b) {
+ return a.index - b.index;
+ });
+ var matcher = new RegExp(parsedPattern.regexp);
+ var matches = matcher.exec(str);
+ if (matches) {
+ var date = missingValuesDate || module2.exports.now();
+ dateFns.forEach(function(f, i) {
+ f.fn(date, matches[i + 1]);
+ });
+ return date;
+ }
+ throw new Error("String '" + str + "' could not be parsed as '" + pattern + "'");
+ }
+ function parse5(pattern, str, missingValuesDate) {
+ if (!pattern) {
+ throw new Error("pattern must be supplied");
+ }
+ return extractDateParts(pattern, str, missingValuesDate);
+ }
+ function now() {
+ return new Date();
+ }
+ module2.exports = asString;
+ module2.exports.asString = asString;
+ module2.exports.parse = parse5;
+ module2.exports.now = now;
+ module2.exports.ISO8601_FORMAT = "yyyy-MM-ddThh:mm:ss.SSS";
+ module2.exports.ISO8601_WITH_TZ_OFFSET_FORMAT = "yyyy-MM-ddThh:mm:ss.SSSO";
+ module2.exports.DATETIME_FORMAT = "dd MM yyyy hh:mm:ss.SSS";
+ module2.exports.ABSOLUTETIME_FORMAT = "hh:mm:ss.SSS";
+ }
+});
+
+// node_modules/streamroller/lib/fileNameFormatter.js
+var require_fileNameFormatter = __commonJS({
+ "node_modules/streamroller/lib/fileNameFormatter.js"(exports2, module2) {
+ var debug = require_src()("streamroller:fileNameFormatter");
+ var path36 = require("path");
+ var FILENAME_SEP = ".";
+ var ZIP_EXT = ".gz";
+ module2.exports = ({
+ file,
+ keepFileExt,
+ needsIndex,
+ alwaysIncludeDate,
+ compress
+ }) => {
+ const dirAndName = path36.join(file.dir, file.name);
+ const ext = (f) => f + file.ext;
+ const index = (f, i, d) => (needsIndex || !d) && i ? f + FILENAME_SEP + i : f;
+ const date = (f, i, d) => {
+ return (i > 0 || alwaysIncludeDate) && d ? f + FILENAME_SEP + d : f;
+ };
+ const gzip = (f, i) => i && compress ? f + ZIP_EXT : f;
+ const parts = keepFileExt ? [date, index, ext, gzip] : [ext, date, index, gzip];
+ return ({ date: date2, index: index2 }) => {
+ debug(`_formatFileName: date=${date2}, index=${index2}`);
+ return parts.reduce((filename, part) => part(filename, index2, date2), dirAndName);
+ };
+ };
+ }
+});
+
+// node_modules/streamroller/lib/fileNameParser.js
+var require_fileNameParser = __commonJS({
+ "node_modules/streamroller/lib/fileNameParser.js"(exports2, module2) {
+ var debug = require_src()("streamroller:fileNameParser");
+ var FILENAME_SEP = ".";
+ var ZIP_EXT = ".gz";
+ var format2 = require_lib3();
+ module2.exports = ({ file, keepFileExt, pattern }) => {
+ const zip = (f, p) => {
+ if (f.endsWith(ZIP_EXT)) {
+ debug("it is gzipped");
+ p.isCompressed = true;
+ return f.slice(0, -1 * ZIP_EXT.length);
+ }
+ return f;
+ };
+ const __NOT_MATCHING__ = "__NOT_MATCHING__";
+ const extAtEnd = (f) => {
+ if (f.startsWith(file.name) && f.endsWith(file.ext)) {
+ debug("it starts and ends with the right things");
+ return f.slice(file.name.length + 1, -1 * file.ext.length);
+ }
+ return __NOT_MATCHING__;
+ };
+ const extInMiddle = (f) => {
+ if (f.startsWith(file.base)) {
+ debug("it starts with the right things");
+ return f.slice(file.base.length + 1);
+ }
+ return __NOT_MATCHING__;
+ };
+ const dateAndIndex = (f, p) => {
+ const items = f.split(FILENAME_SEP);
+ let indexStr = items[items.length - 1];
+ debug("items: ", items, ", indexStr: ", indexStr);
+ let dateStr = f;
+ if (indexStr !== void 0 && indexStr.match(/^\d+$/)) {
+ dateStr = f.slice(0, -1 * (indexStr.length + 1));
+ debug(`dateStr is ${dateStr}`);
+ if (pattern && !dateStr) {
+ dateStr = indexStr;
+ indexStr = "0";
+ }
+ } else {
+ indexStr = "0";
+ }
+ try {
+ const date = format2.parse(pattern, dateStr, new Date(0, 0));
+ if (format2.asString(pattern, date) !== dateStr)
+ return f;
+ p.index = parseInt(indexStr, 10);
+ p.date = dateStr;
+ p.timestamp = date.getTime();
+ return "";
+ } catch (e) {
+ debug(`Problem parsing ${dateStr} as ${pattern}, error was: `, e);
+ return f;
+ }
+ };
+ const index = (f, p) => {
+ if (f.match(/^\d+$/)) {
+ debug("it has an index");
+ p.index = parseInt(f, 10);
+ return "";
+ }
+ return f;
+ };
+ let parts = [
+ zip,
+ keepFileExt ? extAtEnd : extInMiddle,
+ pattern ? dateAndIndex : index
+ ];
+ return (filename) => {
+ let result = { filename, index: 0, isCompressed: false };
+ let whatsLeftOver = parts.reduce((remains, part) => part(remains, result), filename);
+ return whatsLeftOver ? null : result;
+ };
+ };
+ }
+});
+
+// node_modules/streamroller/lib/moveAndMaybeCompressFile.js
+var require_moveAndMaybeCompressFile = __commonJS({
+ "node_modules/streamroller/lib/moveAndMaybeCompressFile.js"(exports2, module2) {
+ var debug = require_src()("streamroller:moveAndMaybeCompressFile");
+ var fs27 = require_lib2();
+ var zlib = require("zlib");
+ var moveAndMaybeCompressFile = async (sourceFilePath, targetFilePath, needCompress) => {
+ if (sourceFilePath === targetFilePath) {
+ debug(`moveAndMaybeCompressFile: source and target are the same, not doing anything`);
+ return;
+ }
+ if (await fs27.pathExists(sourceFilePath)) {
+ debug(`moveAndMaybeCompressFile: moving file from ${sourceFilePath} to ${targetFilePath} ${needCompress ? "with" : "without"} compress`);
+ if (needCompress) {
+ await new Promise((resolve3, reject) => {
+ fs27.createReadStream(sourceFilePath).pipe(zlib.createGzip()).pipe(fs27.createWriteStream(targetFilePath)).on("finish", () => {
+ debug(`moveAndMaybeCompressFile: finished compressing ${targetFilePath}, deleting ${sourceFilePath}`);
+ fs27.unlink(sourceFilePath).then(resolve3).catch(() => {
+ debug(`Deleting ${sourceFilePath} failed, truncating instead`);
+ fs27.truncate(sourceFilePath).then(resolve3).catch(reject);
+ });
+ });
+ });
+ } else {
+ debug(`moveAndMaybeCompressFile: deleting file=${targetFilePath}, renaming ${sourceFilePath} to ${targetFilePath}`);
+ try {
+ await fs27.move(sourceFilePath, targetFilePath, { overwrite: true });
+ } catch (e) {
+ debug(`moveAndMaybeCompressFile: error moving ${sourceFilePath} to ${targetFilePath}`, e);
+ debug(`Trying copy+truncate instead`);
+ await fs27.copy(sourceFilePath, targetFilePath, { overwrite: true });
+ await fs27.truncate(sourceFilePath);
+ }
+ }
+ }
+ };
+ module2.exports = moveAndMaybeCompressFile;
+ }
+});
+
+// node_modules/streamroller/lib/RollingFileWriteStream.js
+var require_RollingFileWriteStream = __commonJS({
+ "node_modules/streamroller/lib/RollingFileWriteStream.js"(exports2, module2) {
+ var debug = require_src()("streamroller:RollingFileWriteStream");
+ var fs27 = require_lib2();
+ var path36 = require("path");
+ var newNow = require_now();
+ var format2 = require_lib3();
+ var { Writable } = require("stream");
+ var fileNameFormatter = require_fileNameFormatter();
+ var fileNameParser = require_fileNameParser();
+ var moveAndMaybeCompressFile = require_moveAndMaybeCompressFile();
+ var RollingFileWriteStream = class extends Writable {
+ constructor(filePath, options) {
+ debug(`constructor: creating RollingFileWriteStream. path=${filePath}`);
+ super(options);
+ this.options = this._parseOption(options);
+ this.fileObject = path36.parse(filePath);
+ if (this.fileObject.dir === "") {
+ this.fileObject = path36.parse(path36.join(process.cwd(), filePath));
+ }
+ this.fileFormatter = fileNameFormatter({
+ file: this.fileObject,
+ alwaysIncludeDate: this.options.alwaysIncludePattern,
+ needsIndex: this.options.maxSize < Number.MAX_SAFE_INTEGER,
+ compress: this.options.compress,
+ keepFileExt: this.options.keepFileExt
+ });
+ this.fileNameParser = fileNameParser({
+ file: this.fileObject,
+ keepFileExt: this.options.keepFileExt,
+ pattern: this.options.pattern
+ });
+ this.state = {
+ currentSize: 0
+ };
+ if (this.options.pattern) {
+ this.state.currentDate = format2(this.options.pattern, newNow());
+ }
+ this.filename = this.fileFormatter({
+ index: 0,
+ date: this.state.currentDate
+ });
+ if (["a", "a+", "as", "as+"].includes(this.options.flags)) {
+ this._setExistingSizeAndDate();
+ }
+ debug(`constructor: create new file ${this.filename}, state=${JSON.stringify(this.state)}`);
+ this._renewWriteStream();
+ }
+ _setExistingSizeAndDate() {
+ try {
+ const stats = fs27.statSync(this.filename);
+ this.state.currentSize = stats.size;
+ if (this.options.pattern) {
+ this.state.currentDate = format2(this.options.pattern, stats.mtime);
+ }
+ } catch (e) {
+ return;
+ }
+ }
+ _parseOption(rawOptions) {
+ const defaultOptions2 = {
+ maxSize: Number.MAX_SAFE_INTEGER,
+ numToKeep: Number.MAX_SAFE_INTEGER,
+ encoding: "utf8",
+ mode: parseInt("0644", 8),
+ flags: "a",
+ compress: false,
+ keepFileExt: false,
+ alwaysIncludePattern: false
+ };
+ const options = Object.assign({}, defaultOptions2, rawOptions);
+ if (options.maxSize <= 0) {
+ throw new Error(`options.maxSize (${options.maxSize}) should be > 0`);
+ }
+ if (options.numToKeep <= 0) {
+ throw new Error(`options.numToKeep (${options.numToKeep}) should be > 0`);
+ }
+ debug(`_parseOption: creating stream with option=${JSON.stringify(options)}`);
+ return options;
+ }
+ _final(callback) {
+ this.currentFileStream.end("", this.options.encoding, callback);
+ }
+ _write(chunk, encoding, callback) {
+ this._shouldRoll().then(() => {
+ debug(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${chunk}`);
+ this.currentFileStream.write(chunk, encoding, (e) => {
+ this.state.currentSize += chunk.length;
+ callback(e);
+ });
+ });
+ }
+ async _shouldRoll() {
+ if (this._dateChanged() || this._tooBig()) {
+ debug(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`);
+ await this._roll();
+ }
+ }
+ _dateChanged() {
+ return this.state.currentDate && this.state.currentDate !== format2(this.options.pattern, newNow());
+ }
+ _tooBig() {
+ return this.state.currentSize >= this.options.maxSize;
+ }
+ _roll() {
+ debug(`_roll: closing the current stream`);
+ return new Promise((resolve3, reject) => {
+ this.currentFileStream.end("", this.options.encoding, () => {
+ this._moveOldFiles().then(resolve3).catch(reject);
+ });
+ });
+ }
+ async _moveOldFiles() {
+ const files = await this._getExistingFiles();
+ const todaysFiles = this.state.currentDate ? files.filter((f) => f.date === this.state.currentDate) : files;
+ for (let i = todaysFiles.length; i >= 0; i--) {
+ debug(`_moveOldFiles: i = ${i}`);
+ const sourceFilePath = this.fileFormatter({
+ date: this.state.currentDate,
+ index: i
+ });
+ const targetFilePath = this.fileFormatter({
+ date: this.state.currentDate,
+ index: i + 1
+ });
+ await moveAndMaybeCompressFile(sourceFilePath, targetFilePath, this.options.compress && i === 0);
+ }
+ this.state.currentSize = 0;
+ this.state.currentDate = this.state.currentDate ? format2(this.options.pattern, newNow()) : null;
+ debug(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`);
+ this._renewWriteStream();
+ await new Promise((resolve3, reject) => {
+ this.currentFileStream.write("", "utf8", () => {
+ this._clean().then(resolve3).catch(reject);
+ });
+ });
+ }
+ async _getExistingFiles() {
+ const files = await fs27.readdir(this.fileObject.dir).catch(() => []);
+ debug(`_getExistingFiles: files=${files}`);
+ const existingFileDetails = files.map((n) => this.fileNameParser(n)).filter((n) => n);
+ const getKey = (n) => (n.timestamp ? n.timestamp : newNow().getTime()) - n.index;
+ existingFileDetails.sort((a, b) => getKey(a) - getKey(b));
+ return existingFileDetails;
+ }
+ _renewWriteStream() {
+ fs27.ensureDirSync(this.fileObject.dir);
+ const filePath = this.fileFormatter({
+ date: this.state.currentDate,
+ index: 0
+ });
+ const ops = {
+ flags: this.options.flags,
+ encoding: this.options.encoding,
+ mode: this.options.mode
+ };
+ this.currentFileStream = fs27.createWriteStream(filePath, ops);
+ this.currentFileStream.on("error", (e) => {
+ this.emit("error", e);
+ });
+ }
+ async _clean() {
+ const existingFileDetails = await this._getExistingFiles();
+ debug(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${existingFileDetails.length}`);
+ debug("_clean: existing files are: ", existingFileDetails);
+ if (this._tooManyFiles(existingFileDetails.length)) {
+ const fileNamesToRemove = existingFileDetails.slice(0, existingFileDetails.length - this.options.numToKeep - 1).map((f) => path36.format({ dir: this.fileObject.dir, base: f.filename }));
+ await deleteFiles(fileNamesToRemove);
+ }
+ }
+ _tooManyFiles(numFiles) {
+ return this.options.numToKeep > 0 && numFiles > this.options.numToKeep;
+ }
+ };
+ var deleteFiles = (fileNames) => {
+ debug(`deleteFiles: files to delete: ${fileNames}`);
+ return Promise.all(fileNames.map((f) => fs27.unlink(f).catch((e) => {
+ debug(`deleteFiles: error when unlinking ${f}, ignoring. Error was ${e}`);
+ })));
+ };
+ module2.exports = RollingFileWriteStream;
+ }
+});
+
+// node_modules/streamroller/lib/RollingFileStream.js
+var require_RollingFileStream = __commonJS({
+ "node_modules/streamroller/lib/RollingFileStream.js"(exports2, module2) {
+ var RollingFileWriteStream = require_RollingFileWriteStream();
+ var RollingFileStream = class extends RollingFileWriteStream {
+ constructor(filename, size, backups, options) {
+ if (!options) {
+ options = {};
+ }
+ if (size) {
+ options.maxSize = size;
+ }
+ if (!backups) {
+ backups = 1;
+ }
+ options.numToKeep = backups;
+ super(filename, options);
+ this.backups = this.options.numToKeep;
+ this.size = this.options.maxSize;
+ }
+ get theStream() {
+ return this.currentFileStream;
+ }
+ };
+ module2.exports = RollingFileStream;
+ }
+});
+
+// node_modules/streamroller/lib/DateRollingFileStream.js
+var require_DateRollingFileStream = __commonJS({
+ "node_modules/streamroller/lib/DateRollingFileStream.js"(exports2, module2) {
+ var RollingFileWriteStream = require_RollingFileWriteStream();
+ var DateRollingFileStream = class extends RollingFileWriteStream {
+ constructor(filename, pattern, options) {
+ if (pattern && typeof pattern === "object") {
+ options = pattern;
+ pattern = null;
+ }
+ if (!options) {
+ options = {};
+ }
+ if (!pattern) {
+ pattern = "yyyy-MM-dd";
+ }
+ if (options.daysToKeep) {
+ options.numToKeep = options.daysToKeep;
+ }
+ if (pattern.startsWith(".")) {
+ pattern = pattern.substring(1);
+ }
+ options.pattern = pattern;
+ super(filename, options);
+ this.mode = this.options.mode;
+ }
+ get theStream() {
+ return this.currentFileStream;
+ }
+ };
+ module2.exports = DateRollingFileStream;
+ }
+});
+
+// node_modules/streamroller/lib/index.js
+var require_lib4 = __commonJS({
+ "node_modules/streamroller/lib/index.js"(exports2, module2) {
+ module2.exports = {
+ RollingFileWriteStream: require_RollingFileWriteStream(),
+ RollingFileStream: require_RollingFileStream(),
+ DateRollingFileStream: require_DateRollingFileStream()
+ };
+ }
+});
+
+// node_modules/log4js/lib/appenders/file.js
+var require_file2 = __commonJS({
+ "node_modules/log4js/lib/appenders/file.js"(exports2, module2) {
+ var debug = require_src()("log4js:file");
+ var path36 = require("path");
+ var streams = require_lib4();
+ var os10 = require("os");
+ var eol = os10.EOL;
+ function openTheStream(file, fileSize, numFiles, options) {
+ const stream = new streams.RollingFileStream(file, fileSize, numFiles, options);
+ stream.on("error", (err) => {
+ console.error("log4js.fileAppender - Writing to file %s, error happened ", file, err);
+ });
+ stream.on("drain", () => {
+ process.emit("log4js:pause", false);
+ });
+ return stream;
+ }
+ function fileAppender(file, layout, logSize, numBackups, options, timezoneOffset) {
+ file = path36.normalize(file);
+ numBackups = numBackups === void 0 ? 5 : numBackups;
+ numBackups = numBackups === 0 ? 1 : numBackups;
+ debug("Creating file appender (", file, ", ", logSize, ", ", numBackups, ", ", options, ", ", timezoneOffset, ")");
+ let writer = openTheStream(file, logSize, numBackups, options);
+ const app = function(loggingEvent) {
+ if (options.removeColor === true) {
+ const regex = /\x1b[[0-9;]*m/g;
+ loggingEvent.data = loggingEvent.data.map((d) => {
+ if (typeof d === "string")
+ return d.replace(regex, "");
+ return d;
+ });
+ }
+ if (!writer.write(layout(loggingEvent, timezoneOffset) + eol, "utf8")) {
+ process.emit("log4js:pause", true);
+ }
+ };
+ app.reopen = function() {
+ writer.end(() => {
+ writer = openTheStream(file, logSize, numBackups, options);
+ });
+ };
+ app.sighupHandler = function() {
+ debug("SIGHUP handler called.");
+ app.reopen();
+ };
+ app.shutdown = function(complete) {
+ process.removeListener("SIGHUP", app.sighupHandler);
+ writer.end("", "utf-8", complete);
+ };
+ process.on("SIGHUP", app.sighupHandler);
+ return app;
+ }
+ function configure(config, layouts) {
+ let layout = layouts.basicLayout;
+ if (config.layout) {
+ layout = layouts.layout(config.layout.type, config.layout);
+ }
+ return fileAppender(config.filename, layout, config.maxLogSize, config.backups, config, config.timezoneOffset);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/dateFile.js
+var require_dateFile = __commonJS({
+ "node_modules/log4js/lib/appenders/dateFile.js"(exports2, module2) {
+ var streams = require_lib4();
+ var os10 = require("os");
+ var eol = os10.EOL;
+ function appender(filename, pattern, layout, options, timezoneOffset) {
+ options.maxSize = options.maxLogSize;
+ const logFile = new streams.DateRollingFileStream(filename, pattern, options);
+ logFile.on("drain", () => {
+ process.emit("log4js:pause", false);
+ });
+ const app = function(logEvent) {
+ if (!logFile.write(layout(logEvent, timezoneOffset) + eol, "utf8")) {
+ process.emit("log4js:pause", true);
+ }
+ };
+ app.shutdown = function(complete) {
+ logFile.write("", "utf-8", () => {
+ logFile.end(complete);
+ });
+ };
+ return app;
+ }
+ function configure(config, layouts) {
+ let layout = layouts.basicLayout;
+ if (config.layout) {
+ layout = layouts.layout(config.layout.type, config.layout);
+ }
+ if (!config.alwaysIncludePattern) {
+ config.alwaysIncludePattern = false;
+ }
+ return appender(config.filename, config.pattern, layout, config, config.timezoneOffset);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// node_modules/log4js/lib/appenders/fileSync.js
+var require_fileSync = __commonJS({
+ "node_modules/log4js/lib/appenders/fileSync.js"(exports2, module2) {
+ var debug = require_src()("log4js:fileSync");
+ var path36 = require("path");
+ var fs27 = require("fs");
+ var os10 = require("os");
+ var eol = os10.EOL || "\n";
+ function touchFile(file, options) {
+ if (fs27.existsSync(file)) {
+ return;
+ }
+ const id = fs27.openSync(file, options.flags, options.mode);
+ fs27.closeSync(id);
+ }
+ var RollingFileSync = class {
+ constructor(filename, size, backups, options) {
+ debug("In RollingFileStream");
+ function throwErrorIfArgumentsAreNotValid() {
+ if (!filename || !size || size <= 0) {
+ throw new Error("You must specify a filename and file size");
+ }
+ }
+ throwErrorIfArgumentsAreNotValid();
+ this.filename = filename;
+ this.size = size;
+ this.backups = backups || 1;
+ this.options = options;
+ this.currentSize = 0;
+ function currentFileSize(file) {
+ let fileSize = 0;
+ try {
+ fileSize = fs27.statSync(file).size;
+ } catch (e) {
+ touchFile(file, options);
+ }
+ return fileSize;
+ }
+ this.currentSize = currentFileSize(this.filename);
+ }
+ shouldRoll() {
+ debug("should roll with current size %d, and max size %d", this.currentSize, this.size);
+ return this.currentSize >= this.size;
+ }
+ roll(filename) {
+ const that = this;
+ const nameMatcher = new RegExp(`^${path36.basename(filename)}`);
+ function justTheseFiles(item) {
+ return nameMatcher.test(item);
+ }
+ function index(filename_) {
+ return parseInt(filename_.substring(`${path36.basename(filename)}.`.length), 10) || 0;
+ }
+ function byIndex(a, b) {
+ if (index(a) > index(b)) {
+ return 1;
+ }
+ if (index(a) < index(b)) {
+ return -1;
+ }
+ return 0;
+ }
+ function increaseFileIndex(fileToRename) {
+ const idx = index(fileToRename);
+ debug(`Index of ${fileToRename} is ${idx}`);
+ if (idx < that.backups) {
+ try {
+ fs27.unlinkSync(`${filename}.${idx + 1}`);
+ } catch (e) {
+ }
+ debug(`Renaming ${fileToRename} -> ${filename}.${idx + 1}`);
+ fs27.renameSync(path36.join(path36.dirname(filename), fileToRename), `${filename}.${idx + 1}`);
+ }
+ }
+ function renameTheFiles() {
+ debug("Renaming the old files");
+ const files = fs27.readdirSync(path36.dirname(filename));
+ files.filter(justTheseFiles).sort(byIndex).reverse().forEach(increaseFileIndex);
+ }
+ debug("Rolling, rolling, rolling");
+ renameTheFiles();
+ }
+ write(chunk, encoding) {
+ const that = this;
+ function writeTheChunk() {
+ debug("writing the chunk to the file");
+ that.currentSize += chunk.length;
+ fs27.appendFileSync(that.filename, chunk);
+ }
+ debug("in write");
+ if (this.shouldRoll()) {
+ this.currentSize = 0;
+ this.roll(this.filename);
+ }
+ writeTheChunk();
+ }
+ };
+ function fileAppender(file, layout, logSize, numBackups, timezoneOffset, options) {
+ debug("fileSync appender created");
+ file = path36.normalize(file);
+ numBackups = numBackups === void 0 ? 5 : numBackups;
+ numBackups = numBackups === 0 ? 1 : numBackups;
+ function openTheStream(filePath, fileSize, numFiles) {
+ let stream;
+ if (fileSize) {
+ stream = new RollingFileSync(filePath, fileSize, numFiles, options);
+ } else {
+ stream = ((f) => {
+ touchFile(f, options);
+ return {
+ write(data) {
+ fs27.appendFileSync(f, data);
+ }
+ };
+ })(filePath);
+ }
+ return stream;
+ }
+ const logFile = openTheStream(file, logSize, numBackups);
+ return (loggingEvent) => {
+ logFile.write(layout(loggingEvent, timezoneOffset) + eol);
+ };
+ }
+ function configure(config, layouts) {
+ let layout = layouts.basicLayout;
+ if (config.layout) {
+ layout = layouts.layout(config.layout.type, config.layout);
+ }
+ const options = {
+ flags: config.flags || "a",
+ encoding: config.encoding || "utf8",
+ mode: config.mode || 420
+ };
+ return fileAppender(config.filename, layout, config.maxLogSize, config.backups, config.timezoneOffset, options);
+ }
+ module2.exports.configure = configure;
+ }
+});
+
+// env-ns:node_modules/log4js/lib/appenders
+var require_appenders = __commonJS({
+ "env-ns:node_modules/log4js/lib/appenders"(exports2, module2) {
+ var path36 = require("path");
+ var debug = require_src()("log4js:appenders");
+ var configuration = require_configuration();
+ var clustering = require_clustering();
+ var levels = require_levels();
+ var layouts = require_layouts();
+ var adapters = require_adapters();
+ var coreAppenders = new Map();
+ coreAppenders.set("console", require_console());
+ coreAppenders.set("stdout", require_stdout());
+ coreAppenders.set("stderr", require_stderr());
+ coreAppenders.set("logLevelFilter", require_logLevelFilter());
+ coreAppenders.set("categoryFilter", require_categoryFilter());
+ coreAppenders.set("noLogFilter", require_noLogFilter());
+ coreAppenders.set("file", require_file2());
+ coreAppenders.set("dateFile", require_dateFile());
+ coreAppenders.set("fileSync", require_fileSync());
+ var appenders = new Map();
+ var tryLoading = (modulePath, config) => {
+ debug("Loading module from ", modulePath);
+ try {
+ return require(modulePath);
+ } catch (e) {
+ configuration.throwExceptionIf(config, e.code !== "MODULE_NOT_FOUND", `appender "${modulePath}" could not be loaded (error was: ${e})`);
+ return void 0;
+ }
+ };
+ var loadAppenderModule = (type, config) => coreAppenders.get(type) || tryLoading(`./${type}`, config) || tryLoading(type, config) || "" || tryLoading(path36.join(process.cwd(), type), config);
+ var appendersLoading = new Set();
+ var getAppender = (name2, config) => {
+ if (appenders.has(name2))
+ return appenders.get(name2);
+ if (!config.appenders[name2])
+ return false;
+ if (appendersLoading.has(name2))
+ throw new Error(`Dependency loop detected for appender ${name2}.`);
+ appendersLoading.add(name2);
+ debug(`Creating appender ${name2}`);
+ const appender = createAppender(name2, config);
+ appendersLoading.delete(name2);
+ appenders.set(name2, appender);
+ return appender;
+ };
+ var createAppender = (name2, config) => {
+ const appenderConfig = config.appenders[name2];
+ const appenderModule = appenderConfig.type.configure ? appenderConfig.type : loadAppenderModule(appenderConfig.type, config);
+ configuration.throwExceptionIf(config, configuration.not(appenderModule), `appender "${name2}" is not valid (type "${appenderConfig.type}" could not be found)`);
+ if (appenderModule.appender) {
+ debug(`DEPRECATION: Appender ${appenderConfig.type} exports an appender function.`);
+ }
+ if (appenderModule.shutdown) {
+ debug(`DEPRECATION: Appender ${appenderConfig.type} exports a shutdown function.`);
+ }
+ debug(`${name2}: clustering.isMaster ? ${clustering.isMaster()}`);
+ debug(`${name2}: appenderModule is ${require("util").inspect(appenderModule)}`);
+ return clustering.onlyOnMaster(() => {
+ debug(`calling appenderModule.configure for ${name2} / ${appenderConfig.type}`);
+ return appenderModule.configure(adapters.modifyConfig(appenderConfig), layouts, (appender) => getAppender(appender, config), levels);
+ }, () => {
+ });
+ };
+ var setup = (config) => {
+ appenders.clear();
+ appendersLoading.clear();
+ const usedAppenders = [];
+ Object.values(config.categories).forEach((category) => {
+ usedAppenders.push(...category.appenders);
+ });
+ Object.keys(config.appenders).forEach((name2) => {
+ if (usedAppenders.includes(name2) || config.appenders[name2].type === "tcp-server") {
+ getAppender(name2, config);
+ }
+ });
+ };
+ setup({ appenders: { out: { type: "stdout" } }, categories: { default: { appenders: ["out"], level: "trace" } } });
+ configuration.addListener((config) => {
+ configuration.throwExceptionIf(config, configuration.not(configuration.anObject(config.appenders)), 'must have a property "appenders" of type object.');
+ const appenderNames = Object.keys(config.appenders);
+ configuration.throwExceptionIf(config, configuration.not(appenderNames.length), "must define at least one appender.");
+ appenderNames.forEach((name2) => {
+ configuration.throwExceptionIf(config, configuration.not(config.appenders[name2].type), `appender "${name2}" is not valid (must be an object with property "type")`);
+ });
+ });
+ configuration.addListener(setup);
+ module2.exports = appenders;
+ }
+});
+
+// node_modules/log4js/lib/categories.js
+var require_categories = __commonJS({
+ "node_modules/log4js/lib/categories.js"(exports2, module2) {
+ var debug = require_src()("log4js:categories");
+ var configuration = require_configuration();
+ var levels = require_levels();
+ var appenders = require_appenders();
+ var categories = new Map();
+ function inheritFromParent(config, category, categoryName) {
+ if (category.inherit === false)
+ return;
+ const lastDotIndex = categoryName.lastIndexOf(".");
+ if (lastDotIndex < 0)
+ return;
+ const parentCategoryName = categoryName.substring(0, lastDotIndex);
+ let parentCategory = config.categories[parentCategoryName];
+ if (!parentCategory) {
+ parentCategory = { inherit: true, appenders: [] };
+ }
+ inheritFromParent(config, parentCategory, parentCategoryName);
+ if (!config.categories[parentCategoryName] && parentCategory.appenders && parentCategory.appenders.length && parentCategory.level) {
+ config.categories[parentCategoryName] = parentCategory;
+ }
+ category.appenders = category.appenders || [];
+ category.level = category.level || parentCategory.level;
+ parentCategory.appenders.forEach((ap) => {
+ if (!category.appenders.includes(ap)) {
+ category.appenders.push(ap);
+ }
+ });
+ category.parent = parentCategory;
+ }
+ function addCategoryInheritance(config) {
+ if (!config.categories)
+ return;
+ const categoryNames = Object.keys(config.categories);
+ categoryNames.forEach((name2) => {
+ const category = config.categories[name2];
+ inheritFromParent(config, category, name2);
+ });
+ }
+ configuration.addPreProcessingListener((config) => addCategoryInheritance(config));
+ configuration.addListener((config) => {
+ configuration.throwExceptionIf(config, configuration.not(configuration.anObject(config.categories)), 'must have a property "categories" of type object.');
+ const categoryNames = Object.keys(config.categories);
+ configuration.throwExceptionIf(config, configuration.not(categoryNames.length), "must define at least one category.");
+ categoryNames.forEach((name2) => {
+ const category = config.categories[name2];
+ configuration.throwExceptionIf(config, [
+ configuration.not(category.appenders),
+ configuration.not(category.level)
+ ], `category "${name2}" is not valid (must be an object with properties "appenders" and "level")`);
+ configuration.throwExceptionIf(config, configuration.not(Array.isArray(category.appenders)), `category "${name2}" is not valid (appenders must be an array of appender names)`);
+ configuration.throwExceptionIf(config, configuration.not(category.appenders.length), `category "${name2}" is not valid (appenders must contain at least one appender name)`);
+ if (Object.prototype.hasOwnProperty.call(category, "enableCallStack")) {
+ configuration.throwExceptionIf(config, typeof category.enableCallStack !== "boolean", `category "${name2}" is not valid (enableCallStack must be boolean type)`);
+ }
+ category.appenders.forEach((appender) => {
+ configuration.throwExceptionIf(config, configuration.not(appenders.get(appender)), `category "${name2}" is not valid (appender "${appender}" is not defined)`);
+ });
+ configuration.throwExceptionIf(config, configuration.not(levels.getLevel(category.level)), `category "${name2}" is not valid (level "${category.level}" not recognised; valid levels are ${levels.levels.join(", ")})`);
+ });
+ configuration.throwExceptionIf(config, configuration.not(config.categories.default), 'must define a "default" category.');
+ });
+ var setup = (config) => {
+ categories.clear();
+ const categoryNames = Object.keys(config.categories);
+ categoryNames.forEach((name2) => {
+ const category = config.categories[name2];
+ const categoryAppenders = [];
+ category.appenders.forEach((appender) => {
+ categoryAppenders.push(appenders.get(appender));
+ debug(`Creating category ${name2}`);
+ categories.set(name2, {
+ appenders: categoryAppenders,
+ level: levels.getLevel(category.level),
+ enableCallStack: category.enableCallStack || false
+ });
+ });
+ });
+ };
+ setup({ categories: { default: { appenders: ["out"], level: "OFF" } } });
+ configuration.addListener(setup);
+ var configForCategory = (category) => {
+ debug(`configForCategory: searching for config for ${category}`);
+ if (categories.has(category)) {
+ debug(`configForCategory: ${category} exists in config, returning it`);
+ return categories.get(category);
+ }
+ if (category.indexOf(".") > 0) {
+ debug(`configForCategory: ${category} has hierarchy, searching for parents`);
+ return configForCategory(category.substring(0, category.lastIndexOf(".")));
+ }
+ debug("configForCategory: returning config for default category");
+ return configForCategory("default");
+ };
+ var appendersForCategory = (category) => configForCategory(category).appenders;
+ var getLevelForCategory = (category) => configForCategory(category).level;
+ var setLevelForCategory = (category, level) => {
+ let categoryConfig = categories.get(category);
+ debug(`setLevelForCategory: found ${categoryConfig} for ${category}`);
+ if (!categoryConfig) {
+ const sourceCategoryConfig = configForCategory(category);
+ debug(`setLevelForCategory: no config found for category, found ${sourceCategoryConfig} for parents of ${category}`);
+ categoryConfig = { appenders: sourceCategoryConfig.appenders };
+ }
+ categoryConfig.level = level;
+ categories.set(category, categoryConfig);
+ };
+ var getEnableCallStackForCategory = (category) => configForCategory(category).enableCallStack === true;
+ var setEnableCallStackForCategory = (category, useCallStack) => {
+ configForCategory(category).enableCallStack = useCallStack;
+ };
+ module2.exports = {
+ appendersForCategory,
+ getLevelForCategory,
+ setLevelForCategory,
+ getEnableCallStackForCategory,
+ setEnableCallStackForCategory
+ };
+ }
+});
+
+// node_modules/log4js/lib/logger.js
+var require_logger = __commonJS({
+ "node_modules/log4js/lib/logger.js"(exports2, module2) {
+ var debug = require_src()("log4js:logger");
+ var LoggingEvent = require_LoggingEvent();
+ var levels = require_levels();
+ var clustering = require_clustering();
+ var categories = require_categories();
+ var configuration = require_configuration();
+ var stackReg = /at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;
+ function defaultParseCallStack(data, skipIdx = 4) {
+ const stacklines = data.stack.split("\n").slice(skipIdx);
+ const lineMatch = stackReg.exec(stacklines[0]);
+ if (lineMatch && lineMatch.length === 6) {
+ return {
+ functionName: lineMatch[1],
+ fileName: lineMatch[2],
+ lineNumber: parseInt(lineMatch[3], 10),
+ columnNumber: parseInt(lineMatch[4], 10),
+ callStack: stacklines.join("\n")
+ };
+ }
+ return null;
+ }
+ var Logger2 = class {
+ constructor(name2) {
+ if (!name2) {
+ throw new Error("No category provided.");
+ }
+ this.category = name2;
+ this.context = {};
+ this.parseCallStack = defaultParseCallStack;
+ debug(`Logger created (${this.category}, ${this.level})`);
+ }
+ get level() {
+ return levels.getLevel(categories.getLevelForCategory(this.category), levels.TRACE);
+ }
+ set level(level) {
+ categories.setLevelForCategory(this.category, levels.getLevel(level, this.level));
+ }
+ get useCallStack() {
+ return categories.getEnableCallStackForCategory(this.category);
+ }
+ set useCallStack(bool) {
+ categories.setEnableCallStackForCategory(this.category, bool === true);
+ }
+ log(level, ...args) {
+ const logLevel = levels.getLevel(level, levels.INFO);
+ if (this.isLevelEnabled(logLevel)) {
+ this._log(logLevel, args);
+ }
+ }
+ isLevelEnabled(otherLevel) {
+ return this.level.isLessThanOrEqualTo(otherLevel);
+ }
+ _log(level, data) {
+ debug(`sending log data (${level}) to appenders`);
+ const loggingEvent = new LoggingEvent(this.category, level, data, this.context, this.useCallStack && this.parseCallStack(new Error()));
+ clustering.send(loggingEvent);
+ }
+ addContext(key, value) {
+ this.context[key] = value;
+ }
+ removeContext(key) {
+ delete this.context[key];
+ }
+ clearContext() {
+ this.context = {};
+ }
+ setParseCallStackFunction(parseFunction) {
+ this.parseCallStack = parseFunction;
+ }
+ };
+ function addLevelMethods(target) {
+ const level = levels.getLevel(target);
+ const levelStrLower = level.toString().toLowerCase();
+ const levelMethod = levelStrLower.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
+ const isLevelMethod = levelMethod[0].toUpperCase() + levelMethod.slice(1);
+ Logger2.prototype[`is${isLevelMethod}Enabled`] = function() {
+ return this.isLevelEnabled(level);
+ };
+ Logger2.prototype[levelMethod] = function(...args) {
+ this.log(level, ...args);
+ };
+ }
+ levels.levels.forEach(addLevelMethods);
+ configuration.addListener(() => {
+ levels.levels.forEach(addLevelMethods);
+ });
+ module2.exports = Logger2;
+ }
+});
+
+// node_modules/log4js/lib/connect-logger.js
+var require_connect_logger = __commonJS({
+ "node_modules/log4js/lib/connect-logger.js"(exports2, module2) {
+ var levels = require_levels();
+ var DEFAULT_FORMAT = ':remote-addr - - ":method :url HTTP/:http-version" :status :content-length ":referrer" ":user-agent"';
+ function getUrl(req) {
+ return req.originalUrl || req.url;
+ }
+ function assembleTokens(req, res, customTokens) {
+ const arrayUniqueTokens = (array) => {
+ const a = array.concat();
+ for (let i = 0; i < a.length; ++i) {
+ for (let j = i + 1; j < a.length; ++j) {
+ if (a[i].token == a[j].token) {
+ a.splice(j--, 1);
+ }
+ }
+ }
+ return a;
+ };
+ const defaultTokens = [];
+ defaultTokens.push({ token: ":url", replacement: getUrl(req) });
+ defaultTokens.push({ token: ":protocol", replacement: req.protocol });
+ defaultTokens.push({ token: ":hostname", replacement: req.hostname });
+ defaultTokens.push({ token: ":method", replacement: req.method });
+ defaultTokens.push({
+ token: ":status",
+ replacement: res.__statusCode || res.statusCode
+ });
+ defaultTokens.push({
+ token: ":response-time",
+ replacement: res.responseTime
+ });
+ defaultTokens.push({ token: ":date", replacement: new Date().toUTCString() });
+ defaultTokens.push({
+ token: ":referrer",
+ replacement: req.headers.referer || req.headers.referrer || ""
+ });
+ defaultTokens.push({
+ token: ":http-version",
+ replacement: `${req.httpVersionMajor}.${req.httpVersionMinor}`
+ });
+ defaultTokens.push({
+ token: ":remote-addr",
+ replacement: req.headers["x-forwarded-for"] || req.ip || req._remoteAddress || req.socket && (req.socket.remoteAddress || req.socket.socket && req.socket.socket.remoteAddress)
+ });
+ defaultTokens.push({
+ token: ":user-agent",
+ replacement: req.headers["user-agent"]
+ });
+ defaultTokens.push({
+ token: ":content-length",
+ replacement: res.getHeader("content-length") || res.__headers && res.__headers["Content-Length"] || "-"
+ });
+ defaultTokens.push({
+ token: /:req\[([^\]]+)]/g,
+ replacement(_, field) {
+ return req.headers[field.toLowerCase()];
+ }
+ });
+ defaultTokens.push({
+ token: /:res\[([^\]]+)]/g,
+ replacement(_, field) {
+ return res.getHeader(field.toLowerCase()) || res.__headers && res.__headers[field];
+ }
+ });
+ return arrayUniqueTokens(customTokens.concat(defaultTokens));
+ }
+ function format2(str, tokens) {
+ for (let i = 0; i < tokens.length; i++) {
+ str = str.replace(tokens[i].token, tokens[i].replacement);
+ }
+ return str;
+ }
+ function createNoLogCondition(nolog) {
+ let regexp = null;
+ if (nolog instanceof RegExp) {
+ regexp = nolog;
+ }
+ if (typeof nolog === "string") {
+ regexp = new RegExp(nolog);
+ }
+ if (Array.isArray(nolog)) {
+ const regexpsAsStrings = nolog.map((reg) => reg.source ? reg.source : reg);
+ regexp = new RegExp(regexpsAsStrings.join("|"));
+ }
+ return regexp;
+ }
+ function matchRules(statusCode, currentLevel, ruleSet) {
+ let level = currentLevel;
+ if (ruleSet) {
+ const matchedRule = ruleSet.find((rule) => {
+ let ruleMatched = false;
+ if (rule.from && rule.to) {
+ ruleMatched = statusCode >= rule.from && statusCode <= rule.to;
+ } else {
+ ruleMatched = rule.codes.indexOf(statusCode) !== -1;
+ }
+ return ruleMatched;
+ });
+ if (matchedRule) {
+ level = levels.getLevel(matchedRule.level, level);
+ }
+ }
+ return level;
+ }
+ module2.exports = function getLogger(logger4js, options) {
+ if (typeof options === "string" || typeof options === "function") {
+ options = { format: options };
+ } else {
+ options = options || {};
+ }
+ const thisLogger = logger4js;
+ let level = levels.getLevel(options.level, levels.INFO);
+ const fmt = options.format || DEFAULT_FORMAT;
+ const nolog = createNoLogCondition(options.nolog);
+ return (req, res, next) => {
+ if (req._logging)
+ return next();
+ if (nolog && nolog.test(req.originalUrl))
+ return next();
+ if (thisLogger.isLevelEnabled(level) || options.level === "auto") {
+ const start = new Date();
+ const { writeHead } = res;
+ req._logging = true;
+ res.writeHead = (code, headers) => {
+ res.writeHead = writeHead;
+ res.writeHead(code, headers);
+ res.__statusCode = code;
+ res.__headers = headers || {};
+ };
+ res.on("finish", () => {
+ res.responseTime = new Date() - start;
+ if (res.statusCode && options.level === "auto") {
+ level = levels.INFO;
+ if (res.statusCode >= 300)
+ level = levels.WARN;
+ if (res.statusCode >= 400)
+ level = levels.ERROR;
+ }
+ level = matchRules(res.statusCode, level, options.statusRules);
+ const combinedTokens = assembleTokens(req, res, options.tokens || []);
+ if (options.context)
+ thisLogger.addContext("res", res);
+ if (typeof fmt === "function") {
+ const line = fmt(req, res, (str) => format2(str, combinedTokens));
+ if (line)
+ thisLogger.log(level, line);
+ } else {
+ thisLogger.log(level, format2(fmt, combinedTokens));
+ }
+ if (options.context)
+ thisLogger.removeContext("res");
+ });
+ }
+ return next();
+ };
+ };
+ }
+});
+
+// node_modules/log4js/lib/log4js.js
+var require_log4js = __commonJS({
+ "node_modules/log4js/lib/log4js.js"(exports2, module2) {
+ var debug = require_src()("log4js:main");
+ var fs27 = require("fs");
+ var deepClone2 = require_rfdc()({ proto: true });
+ var configuration = require_configuration();
+ var layouts = require_layouts();
+ var levels = require_levels();
+ var appenders = require_appenders();
+ var categories = require_categories();
+ var Logger2 = require_logger();
+ var clustering = require_clustering();
+ var connectLogger = require_connect_logger();
+ var enabled = false;
+ function sendLogEventToAppender(logEvent) {
+ if (!enabled)
+ return;
+ debug("Received log event ", logEvent);
+ const categoryAppenders = categories.appendersForCategory(logEvent.categoryName);
+ categoryAppenders.forEach((appender) => {
+ appender(logEvent);
+ });
+ }
+ function loadConfigurationFile(filename) {
+ debug(`Loading configuration from ${filename}`);
+ try {
+ return JSON.parse(fs27.readFileSync(filename, "utf8"));
+ } catch (e) {
+ throw new Error(`Problem reading config from file "${filename}". Error was ${e.message}`, e);
+ }
+ }
+ function configure(configurationFileOrObject) {
+ let configObject = configurationFileOrObject;
+ if (typeof configObject === "string") {
+ configObject = loadConfigurationFile(configurationFileOrObject);
+ }
+ debug(`Configuration is ${configObject}`);
+ configuration.configure(deepClone2(configObject));
+ clustering.onMessage(sendLogEventToAppender);
+ enabled = true;
+ return log4js2;
+ }
+ function shutdown(cb) {
+ debug("Shutdown called. Disabling all log writing.");
+ enabled = false;
+ const appendersToCheck = Array.from(appenders.values());
+ const shutdownFunctions = appendersToCheck.reduceRight((accum, next) => next.shutdown ? accum + 1 : accum, 0);
+ let completed = 0;
+ let error;
+ debug(`Found ${shutdownFunctions} appenders with shutdown functions.`);
+ function complete(err) {
+ error = error || err;
+ completed += 1;
+ debug(`Appender shutdowns complete: ${completed} / ${shutdownFunctions}`);
+ if (completed >= shutdownFunctions) {
+ debug("All shutdown functions completed.");
+ if (cb) {
+ cb(error);
+ }
+ }
+ }
+ if (shutdownFunctions === 0) {
+ debug("No appenders with shutdown functions found.");
+ return cb !== void 0 && cb();
+ }
+ appendersToCheck.filter((a) => a.shutdown).forEach((a) => a.shutdown(complete));
+ return null;
+ }
+ function getLogger(category) {
+ if (!enabled) {
+ configure(process.env.LOG4JS_CONFIG || {
+ appenders: { out: { type: "stdout" } },
+ categories: { default: { appenders: ["out"], level: "OFF" } }
+ });
+ }
+ return new Logger2(category || "default");
+ }
+ var log4js2 = {
+ getLogger,
+ configure,
+ shutdown,
+ connectLogger,
+ levels,
+ addLayout: layouts.addLayout
+ };
+ module2.exports = log4js2;
+ }
+});
+
+// node_modules/fs-extra/node_modules/universalify/index.js
+var require_universalify2 = __commonJS({
+ "node_modules/fs-extra/node_modules/universalify/index.js"(exports2) {
+ "use strict";
+ exports2.fromCallback = function(fn) {
+ return Object.defineProperty(function(...args) {
+ if (typeof args[args.length - 1] === "function")
+ fn.apply(this, args);
+ else {
+ return new Promise((resolve3, reject) => {
+ fn.call(this, ...args, (err, res) => err != null ? reject(err) : resolve3(res));
+ });
+ }
+ }, "name", { value: fn.name });
+ };
+ exports2.fromPromise = function(fn) {
+ return Object.defineProperty(function(...args) {
+ const cb = args[args.length - 1];
+ if (typeof cb !== "function")
+ return fn.apply(this, args);
+ else
+ fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb);
+ }, "name", { value: fn.name });
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/fs/index.js
+var require_fs2 = __commonJS({
+ "node_modules/fs-extra/lib/fs/index.js"(exports2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var fs27 = require_graceful_fs();
+ var api = [
+ "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((key) => {
+ return typeof fs27[key] === "function";
+ });
+ Object.keys(fs27).forEach((key) => {
+ if (key === "promises") {
+ return;
+ }
+ exports2[key] = fs27[key];
+ });
+ api.forEach((method) => {
+ exports2[method] = u(fs27[method]);
+ });
+ exports2.exists = function(filename, callback) {
+ if (typeof callback === "function") {
+ return fs27.exists(filename, callback);
+ }
+ return new Promise((resolve3) => {
+ return fs27.exists(filename, resolve3);
+ });
+ };
+ exports2.read = function(fd, buffer, offset, length, position, callback) {
+ if (typeof callback === "function") {
+ return fs27.read(fd, buffer, offset, length, position, callback);
+ }
+ return new Promise((resolve3, reject) => {
+ fs27.read(fd, buffer, offset, length, position, (err, bytesRead, buffer2) => {
+ if (err)
+ return reject(err);
+ resolve3({ bytesRead, buffer: buffer2 });
+ });
+ });
+ };
+ exports2.write = function(fd, buffer, ...args) {
+ if (typeof args[args.length - 1] === "function") {
+ return fs27.write(fd, buffer, ...args);
+ }
+ return new Promise((resolve3, reject) => {
+ fs27.write(fd, buffer, ...args, (err, bytesWritten, buffer2) => {
+ if (err)
+ return reject(err);
+ resolve3({ bytesWritten, buffer: buffer2 });
+ });
+ });
+ };
+ if (typeof fs27.writev === "function") {
+ exports2.writev = function(fd, buffers, ...args) {
+ if (typeof args[args.length - 1] === "function") {
+ return fs27.writev(fd, buffers, ...args);
+ }
+ return new Promise((resolve3, reject) => {
+ fs27.writev(fd, buffers, ...args, (err, bytesWritten, buffers2) => {
+ if (err)
+ return reject(err);
+ resolve3({ bytesWritten, buffers: buffers2 });
+ });
+ });
+ };
+ }
+ if (typeof fs27.realpath.native === "function") {
+ exports2.realpath.native = u(fs27.realpath.native);
+ }
+ }
+});
+
+// node_modules/at-least-node/index.js
+var require_at_least_node = __commonJS({
+ "node_modules/at-least-node/index.js"(exports2, module2) {
+ module2.exports = (r) => {
+ const n = process.versions.node.split(".").map((x) => parseInt(x, 10));
+ r = r.split(".").map((x) => parseInt(x, 10));
+ return n[0] > r[0] || n[0] === r[0] && (n[1] > r[1] || n[1] === r[1] && n[2] >= r[2]);
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/mkdirs/make-dir.js
+var require_make_dir = __commonJS({
+ "node_modules/fs-extra/lib/mkdirs/make-dir.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_fs2();
+ var path36 = require("path");
+ var atLeastNode = require_at_least_node();
+ var useNativeRecursiveOption = atLeastNode("10.12.0");
+ var checkPath = (pth) => {
+ if (process.platform === "win32") {
+ const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path36.parse(pth).root, ""));
+ if (pathHasInvalidWinCharacters) {
+ const error = new Error(`Path contains invalid characters: ${pth}`);
+ error.code = "EINVAL";
+ throw error;
+ }
+ }
+ };
+ var processOptions = (options) => {
+ const defaults2 = { mode: 511 };
+ if (typeof options === "number")
+ options = { mode: options };
+ return __spreadValues(__spreadValues({}, defaults2), options);
+ };
+ var permissionError = (pth) => {
+ const error = new Error(`operation not permitted, mkdir '${pth}'`);
+ error.code = "EPERM";
+ error.errno = -4048;
+ error.path = pth;
+ error.syscall = "mkdir";
+ return error;
+ };
+ module2.exports.makeDir = async (input, options) => {
+ checkPath(input);
+ options = processOptions(options);
+ if (useNativeRecursiveOption) {
+ const pth = path36.resolve(input);
+ return fs27.mkdir(pth, {
+ mode: options.mode,
+ recursive: true
+ });
+ }
+ const make = async (pth) => {
+ try {
+ await fs27.mkdir(pth, options.mode);
+ } catch (error) {
+ if (error.code === "EPERM") {
+ throw error;
+ }
+ if (error.code === "ENOENT") {
+ if (path36.dirname(pth) === pth) {
+ throw permissionError(pth);
+ }
+ if (error.message.includes("null bytes")) {
+ throw error;
+ }
+ await make(path36.dirname(pth));
+ return make(pth);
+ }
+ try {
+ const stats = await fs27.stat(pth);
+ if (!stats.isDirectory()) {
+ throw new Error("The path is not a directory");
+ }
+ } catch {
+ throw error;
+ }
+ }
+ };
+ return make(path36.resolve(input));
+ };
+ module2.exports.makeDirSync = (input, options) => {
+ checkPath(input);
+ options = processOptions(options);
+ if (useNativeRecursiveOption) {
+ const pth = path36.resolve(input);
+ return fs27.mkdirSync(pth, {
+ mode: options.mode,
+ recursive: true
+ });
+ }
+ const make = (pth) => {
+ try {
+ fs27.mkdirSync(pth, options.mode);
+ } catch (error) {
+ if (error.code === "EPERM") {
+ throw error;
+ }
+ if (error.code === "ENOENT") {
+ if (path36.dirname(pth) === pth) {
+ throw permissionError(pth);
+ }
+ if (error.message.includes("null bytes")) {
+ throw error;
+ }
+ make(path36.dirname(pth));
+ return make(pth);
+ }
+ try {
+ if (!fs27.statSync(pth).isDirectory()) {
+ throw new Error("The path is not a directory");
+ }
+ } catch {
+ throw error;
+ }
+ }
+ };
+ return make(path36.resolve(input));
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/mkdirs/index.js
+var require_mkdirs3 = __commonJS({
+ "node_modules/fs-extra/lib/mkdirs/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromPromise;
+ var { makeDir: _makeDir, makeDirSync } = require_make_dir();
+ var makeDir = u(_makeDir);
+ module2.exports = {
+ mkdirs: makeDir,
+ mkdirsSync: makeDirSync,
+ mkdirp: makeDir,
+ mkdirpSync: makeDirSync,
+ ensureDir: makeDir,
+ ensureDirSync: makeDirSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/util/utimes.js
+var require_utimes2 = __commonJS({
+ "node_modules/fs-extra/lib/util/utimes.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ function utimesMillis(path36, atime, mtime, callback) {
+ fs27.open(path36, "r+", (err, fd) => {
+ if (err)
+ return callback(err);
+ fs27.futimes(fd, atime, mtime, (futimesErr) => {
+ fs27.close(fd, (closeErr) => {
+ if (callback)
+ callback(futimesErr || closeErr);
+ });
+ });
+ });
+ }
+ function utimesMillisSync(path36, atime, mtime) {
+ const fd = fs27.openSync(path36, "r+");
+ fs27.futimesSync(fd, atime, mtime);
+ return fs27.closeSync(fd);
+ }
+ module2.exports = {
+ utimesMillis,
+ utimesMillisSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/util/stat.js
+var require_stat2 = __commonJS({
+ "node_modules/fs-extra/lib/util/stat.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_fs2();
+ var path36 = require("path");
+ var util4 = require("util");
+ var atLeastNode = require_at_least_node();
+ var nodeSupportsBigInt = atLeastNode("10.5.0");
+ var stat = (file) => nodeSupportsBigInt ? fs27.stat(file, { bigint: true }) : fs27.stat(file);
+ var statSync = (file) => nodeSupportsBigInt ? fs27.statSync(file, { bigint: true }) : fs27.statSync(file);
+ function getStats(src, dest) {
+ return Promise.all([
+ stat(src),
+ stat(dest).catch((err) => {
+ if (err.code === "ENOENT")
+ return null;
+ throw err;
+ })
+ ]).then(([srcStat, destStat]) => ({ srcStat, destStat }));
+ }
+ function getStatsSync(src, dest) {
+ let destStat;
+ const srcStat = statSync(src);
+ try {
+ destStat = statSync(dest);
+ } catch (err) {
+ if (err.code === "ENOENT")
+ return { srcStat, destStat: null };
+ throw err;
+ }
+ return { srcStat, destStat };
+ }
+ function checkPaths(src, dest, funcName, cb) {
+ util4.callbackify(getStats)(src, dest, (err, stats) => {
+ if (err)
+ return cb(err);
+ const { srcStat, destStat } = stats;
+ if (destStat && areIdentical(srcStat, destStat)) {
+ return cb(new Error("Source and destination must not be the same."));
+ }
+ if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
+ return cb(new Error(errMsg(src, dest, funcName)));
+ }
+ return cb(null, { srcStat, destStat });
+ });
+ }
+ function checkPathsSync(src, dest, funcName) {
+ const { srcStat, destStat } = getStatsSync(src, dest);
+ if (destStat && areIdentical(srcStat, destStat)) {
+ throw new Error("Source and destination must not be the same.");
+ }
+ if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
+ throw new Error(errMsg(src, dest, funcName));
+ }
+ return { srcStat, destStat };
+ }
+ function checkParentPaths(src, srcStat, dest, funcName, cb) {
+ const srcParent = path36.resolve(path36.dirname(src));
+ const destParent = path36.resolve(path36.dirname(dest));
+ if (destParent === srcParent || destParent === path36.parse(destParent).root)
+ return cb();
+ const callback = (err, destStat) => {
+ if (err) {
+ if (err.code === "ENOENT")
+ return cb();
+ return cb(err);
+ }
+ if (areIdentical(srcStat, destStat)) {
+ return cb(new Error(errMsg(src, dest, funcName)));
+ }
+ return checkParentPaths(src, srcStat, destParent, funcName, cb);
+ };
+ if (nodeSupportsBigInt)
+ fs27.stat(destParent, { bigint: true }, callback);
+ else
+ fs27.stat(destParent, callback);
+ }
+ function checkParentPathsSync(src, srcStat, dest, funcName) {
+ const srcParent = path36.resolve(path36.dirname(src));
+ const destParent = path36.resolve(path36.dirname(dest));
+ if (destParent === srcParent || destParent === path36.parse(destParent).root)
+ return;
+ let destStat;
+ try {
+ destStat = statSync(destParent);
+ } catch (err) {
+ if (err.code === "ENOENT")
+ return;
+ throw err;
+ }
+ if (areIdentical(srcStat, destStat)) {
+ throw new Error(errMsg(src, dest, funcName));
+ }
+ return checkParentPathsSync(src, srcStat, destParent, funcName);
+ }
+ function areIdentical(srcStat, destStat) {
+ if (destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev) {
+ if (nodeSupportsBigInt || destStat.ino < Number.MAX_SAFE_INTEGER) {
+ return true;
+ }
+ if (destStat.size === srcStat.size && destStat.mode === srcStat.mode && destStat.nlink === srcStat.nlink && destStat.atimeMs === srcStat.atimeMs && destStat.mtimeMs === srcStat.mtimeMs && destStat.ctimeMs === srcStat.ctimeMs && destStat.birthtimeMs === srcStat.birthtimeMs) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function isSrcSubdir(src, dest) {
+ const srcArr = path36.resolve(src).split(path36.sep).filter((i) => i);
+ const destArr = path36.resolve(dest).split(path36.sep).filter((i) => i);
+ return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true);
+ }
+ function errMsg(src, dest, funcName) {
+ return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`;
+ }
+ module2.exports = {
+ checkPaths,
+ checkPathsSync,
+ checkParentPaths,
+ checkParentPathsSync,
+ isSrcSubdir
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/copy-sync/copy-sync.js
+var require_copy_sync3 = __commonJS({
+ "node_modules/fs-extra/lib/copy-sync/copy-sync.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdirsSync = require_mkdirs3().mkdirsSync;
+ var utimesMillisSync = require_utimes2().utimesMillisSync;
+ var stat = require_stat2();
+ function copySync(src, dest, opts) {
+ if (typeof opts === "function") {
+ opts = { filter: opts };
+ }
+ opts = opts || {};
+ opts.clobber = "clobber" in opts ? !!opts.clobber : true;
+ opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
+ if (opts.preserveTimestamps && process.arch === "ia32") {
+ console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;
+
+ see https://github.com/jprichardson/node-fs-extra/issues/269`);
+ }
+ const { srcStat, destStat } = stat.checkPathsSync(src, dest, "copy");
+ stat.checkParentPathsSync(src, srcStat, dest, "copy");
+ return handleFilterAndCopy(destStat, src, dest, opts);
+ }
+ function handleFilterAndCopy(destStat, src, dest, opts) {
+ if (opts.filter && !opts.filter(src, dest))
+ return;
+ const destParent = path36.dirname(dest);
+ if (!fs27.existsSync(destParent))
+ mkdirsSync(destParent);
+ return startCopy(destStat, src, dest, opts);
+ }
+ function startCopy(destStat, src, dest, opts) {
+ if (opts.filter && !opts.filter(src, dest))
+ return;
+ return getStats(destStat, src, dest, opts);
+ }
+ function getStats(destStat, src, dest, opts) {
+ const statSync = opts.dereference ? fs27.statSync : fs27.lstatSync;
+ const srcStat = statSync(src);
+ if (srcStat.isDirectory())
+ return onDir(srcStat, destStat, src, dest, opts);
+ else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice())
+ return onFile(srcStat, destStat, src, dest, opts);
+ else if (srcStat.isSymbolicLink())
+ return onLink(destStat, src, dest, opts);
+ }
+ function onFile(srcStat, destStat, src, dest, opts) {
+ if (!destStat)
+ return copyFile(srcStat, src, dest, opts);
+ return mayCopyFile(srcStat, src, dest, opts);
+ }
+ function mayCopyFile(srcStat, src, dest, opts) {
+ if (opts.overwrite) {
+ fs27.unlinkSync(dest);
+ return copyFile(srcStat, src, dest, opts);
+ } else if (opts.errorOnExist) {
+ throw new Error(`'${dest}' already exists`);
+ }
+ }
+ function copyFile(srcStat, src, dest, opts) {
+ fs27.copyFileSync(src, dest);
+ if (opts.preserveTimestamps)
+ handleTimestamps(srcStat.mode, src, dest);
+ return setDestMode(dest, srcStat.mode);
+ }
+ function handleTimestamps(srcMode, src, dest) {
+ if (fileIsNotWritable(srcMode))
+ makeFileWritable(dest, srcMode);
+ return setDestTimestamps(src, dest);
+ }
+ function fileIsNotWritable(srcMode) {
+ return (srcMode & 128) === 0;
+ }
+ function makeFileWritable(dest, srcMode) {
+ return setDestMode(dest, srcMode | 128);
+ }
+ function setDestMode(dest, srcMode) {
+ return fs27.chmodSync(dest, srcMode);
+ }
+ function setDestTimestamps(src, dest) {
+ const updatedSrcStat = fs27.statSync(src);
+ return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime);
+ }
+ function onDir(srcStat, destStat, src, dest, opts) {
+ if (!destStat)
+ return mkDirAndCopy(srcStat.mode, src, dest, opts);
+ if (destStat && !destStat.isDirectory()) {
+ throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`);
+ }
+ return copyDir(src, dest, opts);
+ }
+ function mkDirAndCopy(srcMode, src, dest, opts) {
+ fs27.mkdirSync(dest);
+ copyDir(src, dest, opts);
+ return setDestMode(dest, srcMode);
+ }
+ function copyDir(src, dest, opts) {
+ fs27.readdirSync(src).forEach((item) => copyDirItem(item, src, dest, opts));
+ }
+ function copyDirItem(item, src, dest, opts) {
+ const srcItem = path36.join(src, item);
+ const destItem = path36.join(dest, item);
+ const { destStat } = stat.checkPathsSync(srcItem, destItem, "copy");
+ return startCopy(destStat, srcItem, destItem, opts);
+ }
+ function onLink(destStat, src, dest, opts) {
+ let resolvedSrc = fs27.readlinkSync(src);
+ if (opts.dereference) {
+ resolvedSrc = path36.resolve(process.cwd(), resolvedSrc);
+ }
+ if (!destStat) {
+ return fs27.symlinkSync(resolvedSrc, dest);
+ } else {
+ let resolvedDest;
+ try {
+ resolvedDest = fs27.readlinkSync(dest);
+ } catch (err) {
+ if (err.code === "EINVAL" || err.code === "UNKNOWN")
+ return fs27.symlinkSync(resolvedSrc, dest);
+ throw err;
+ }
+ if (opts.dereference) {
+ resolvedDest = path36.resolve(process.cwd(), resolvedDest);
+ }
+ if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
+ throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`);
+ }
+ if (fs27.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
+ throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`);
+ }
+ return copyLink(resolvedSrc, dest);
+ }
+ }
+ function copyLink(resolvedSrc, dest) {
+ fs27.unlinkSync(dest);
+ return fs27.symlinkSync(resolvedSrc, dest);
+ }
+ module2.exports = copySync;
+ }
+});
+
+// node_modules/fs-extra/lib/copy-sync/index.js
+var require_copy_sync4 = __commonJS({
+ "node_modules/fs-extra/lib/copy-sync/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = {
+ copySync: require_copy_sync3()
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/path-exists/index.js
+var require_path_exists2 = __commonJS({
+ "node_modules/fs-extra/lib/path-exists/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromPromise;
+ var fs27 = require_fs2();
+ function pathExists(path36) {
+ return fs27.access(path36).then(() => true).catch(() => false);
+ }
+ module2.exports = {
+ pathExists: u(pathExists),
+ pathExistsSync: fs27.existsSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/copy/copy.js
+var require_copy3 = __commonJS({
+ "node_modules/fs-extra/lib/copy/copy.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdirs = require_mkdirs3().mkdirs;
+ var pathExists = require_path_exists2().pathExists;
+ var utimesMillis = require_utimes2().utimesMillis;
+ var stat = require_stat2();
+ function copy(src, dest, opts, cb) {
+ if (typeof opts === "function" && !cb) {
+ cb = opts;
+ opts = {};
+ } else if (typeof opts === "function") {
+ opts = { filter: opts };
+ }
+ cb = cb || function() {
+ };
+ opts = opts || {};
+ opts.clobber = "clobber" in opts ? !!opts.clobber : true;
+ opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber;
+ if (opts.preserveTimestamps && process.arch === "ia32") {
+ console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;
+
+ see https://github.com/jprichardson/node-fs-extra/issues/269`);
+ }
+ stat.checkPaths(src, dest, "copy", (err, stats) => {
+ if (err)
+ return cb(err);
+ const { srcStat, destStat } = stats;
+ stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => {
+ if (err2)
+ return cb(err2);
+ if (opts.filter)
+ return handleFilter(checkParentDir, destStat, src, dest, opts, cb);
+ return checkParentDir(destStat, src, dest, opts, cb);
+ });
+ });
+ }
+ function checkParentDir(destStat, src, dest, opts, cb) {
+ const destParent = path36.dirname(dest);
+ pathExists(destParent, (err, dirExists) => {
+ if (err)
+ return cb(err);
+ if (dirExists)
+ return startCopy(destStat, src, dest, opts, cb);
+ mkdirs(destParent, (err2) => {
+ if (err2)
+ return cb(err2);
+ return startCopy(destStat, src, dest, opts, cb);
+ });
+ });
+ }
+ function handleFilter(onInclude, destStat, src, dest, opts, cb) {
+ Promise.resolve(opts.filter(src, dest)).then((include) => {
+ if (include)
+ return onInclude(destStat, src, dest, opts, cb);
+ return cb();
+ }, (error) => cb(error));
+ }
+ function startCopy(destStat, src, dest, opts, cb) {
+ if (opts.filter)
+ return handleFilter(getStats, destStat, src, dest, opts, cb);
+ return getStats(destStat, src, dest, opts, cb);
+ }
+ function getStats(destStat, src, dest, opts, cb) {
+ const stat2 = opts.dereference ? fs27.stat : fs27.lstat;
+ stat2(src, (err, srcStat) => {
+ if (err)
+ return cb(err);
+ if (srcStat.isDirectory())
+ return onDir(srcStat, destStat, src, dest, opts, cb);
+ else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice())
+ return onFile(srcStat, destStat, src, dest, opts, cb);
+ else if (srcStat.isSymbolicLink())
+ return onLink(destStat, src, dest, opts, cb);
+ });
+ }
+ function onFile(srcStat, destStat, src, dest, opts, cb) {
+ if (!destStat)
+ return copyFile(srcStat, src, dest, opts, cb);
+ return mayCopyFile(srcStat, src, dest, opts, cb);
+ }
+ function mayCopyFile(srcStat, src, dest, opts, cb) {
+ if (opts.overwrite) {
+ fs27.unlink(dest, (err) => {
+ if (err)
+ return cb(err);
+ return copyFile(srcStat, src, dest, opts, cb);
+ });
+ } else if (opts.errorOnExist) {
+ return cb(new Error(`'${dest}' already exists`));
+ } else
+ return cb();
+ }
+ function copyFile(srcStat, src, dest, opts, cb) {
+ fs27.copyFile(src, dest, (err) => {
+ if (err)
+ return cb(err);
+ if (opts.preserveTimestamps)
+ return handleTimestampsAndMode(srcStat.mode, src, dest, cb);
+ return setDestMode(dest, srcStat.mode, cb);
+ });
+ }
+ function handleTimestampsAndMode(srcMode, src, dest, cb) {
+ if (fileIsNotWritable(srcMode)) {
+ return makeFileWritable(dest, srcMode, (err) => {
+ if (err)
+ return cb(err);
+ return setDestTimestampsAndMode(srcMode, src, dest, cb);
+ });
+ }
+ return setDestTimestampsAndMode(srcMode, src, dest, cb);
+ }
+ function fileIsNotWritable(srcMode) {
+ return (srcMode & 128) === 0;
+ }
+ function makeFileWritable(dest, srcMode, cb) {
+ return setDestMode(dest, srcMode | 128, cb);
+ }
+ function setDestTimestampsAndMode(srcMode, src, dest, cb) {
+ setDestTimestamps(src, dest, (err) => {
+ if (err)
+ return cb(err);
+ return setDestMode(dest, srcMode, cb);
+ });
+ }
+ function setDestMode(dest, srcMode, cb) {
+ return fs27.chmod(dest, srcMode, cb);
+ }
+ function setDestTimestamps(src, dest, cb) {
+ fs27.stat(src, (err, updatedSrcStat) => {
+ if (err)
+ return cb(err);
+ return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb);
+ });
+ }
+ function onDir(srcStat, destStat, src, dest, opts, cb) {
+ if (!destStat)
+ return mkDirAndCopy(srcStat.mode, src, dest, opts, cb);
+ if (destStat && !destStat.isDirectory()) {
+ return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`));
+ }
+ return copyDir(src, dest, opts, cb);
+ }
+ function mkDirAndCopy(srcMode, src, dest, opts, cb) {
+ fs27.mkdir(dest, (err) => {
+ if (err)
+ return cb(err);
+ copyDir(src, dest, opts, (err2) => {
+ if (err2)
+ return cb(err2);
+ return setDestMode(dest, srcMode, cb);
+ });
+ });
+ }
+ function copyDir(src, dest, opts, cb) {
+ fs27.readdir(src, (err, items) => {
+ if (err)
+ return cb(err);
+ return copyDirItems(items, src, dest, opts, cb);
+ });
+ }
+ function copyDirItems(items, src, dest, opts, cb) {
+ const item = items.pop();
+ if (!item)
+ return cb();
+ return copyDirItem(items, item, src, dest, opts, cb);
+ }
+ function copyDirItem(items, item, src, dest, opts, cb) {
+ const srcItem = path36.join(src, item);
+ const destItem = path36.join(dest, item);
+ stat.checkPaths(srcItem, destItem, "copy", (err, stats) => {
+ if (err)
+ return cb(err);
+ const { destStat } = stats;
+ startCopy(destStat, srcItem, destItem, opts, (err2) => {
+ if (err2)
+ return cb(err2);
+ return copyDirItems(items, src, dest, opts, cb);
+ });
+ });
+ }
+ function onLink(destStat, src, dest, opts, cb) {
+ fs27.readlink(src, (err, resolvedSrc) => {
+ if (err)
+ return cb(err);
+ if (opts.dereference) {
+ resolvedSrc = path36.resolve(process.cwd(), resolvedSrc);
+ }
+ if (!destStat) {
+ return fs27.symlink(resolvedSrc, dest, cb);
+ } else {
+ fs27.readlink(dest, (err2, resolvedDest) => {
+ if (err2) {
+ if (err2.code === "EINVAL" || err2.code === "UNKNOWN")
+ return fs27.symlink(resolvedSrc, dest, cb);
+ return cb(err2);
+ }
+ if (opts.dereference) {
+ resolvedDest = path36.resolve(process.cwd(), resolvedDest);
+ }
+ if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {
+ return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`));
+ }
+ if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) {
+ return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`));
+ }
+ return copyLink(resolvedSrc, dest, cb);
+ });
+ }
+ });
+ }
+ function copyLink(resolvedSrc, dest, cb) {
+ fs27.unlink(dest, (err) => {
+ if (err)
+ return cb(err);
+ return fs27.symlink(resolvedSrc, dest, cb);
+ });
+ }
+ module2.exports = copy;
+ }
+});
+
+// node_modules/fs-extra/lib/copy/index.js
+var require_copy4 = __commonJS({
+ "node_modules/fs-extra/lib/copy/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ module2.exports = {
+ copy: u(require_copy3())
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/remove/rimraf.js
+var require_rimraf2 = __commonJS({
+ "node_modules/fs-extra/lib/remove/rimraf.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var assert = require("assert");
+ var isWindows4 = process.platform === "win32";
+ function defaults2(options) {
+ const methods2 = [
+ "unlink",
+ "chmod",
+ "stat",
+ "lstat",
+ "rmdir",
+ "readdir"
+ ];
+ methods2.forEach((m) => {
+ options[m] = options[m] || fs27[m];
+ m = m + "Sync";
+ options[m] = options[m] || fs27[m];
+ });
+ options.maxBusyTries = options.maxBusyTries || 3;
+ }
+ function rimraf(p, options, cb) {
+ let busyTries = 0;
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+ assert(p, "rimraf: missing path");
+ assert.strictEqual(typeof p, "string", "rimraf: path should be a string");
+ assert.strictEqual(typeof cb, "function", "rimraf: callback function required");
+ assert(options, "rimraf: invalid options argument provided");
+ assert.strictEqual(typeof options, "object", "rimraf: options should be object");
+ defaults2(options);
+ rimraf_(p, options, function CB(er) {
+ if (er) {
+ if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && busyTries < options.maxBusyTries) {
+ busyTries++;
+ const time = busyTries * 100;
+ return setTimeout(() => rimraf_(p, options, CB), time);
+ }
+ if (er.code === "ENOENT")
+ er = null;
+ }
+ cb(er);
+ });
+ }
+ function rimraf_(p, options, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ options.lstat(p, (er, st) => {
+ if (er && er.code === "ENOENT") {
+ return cb(null);
+ }
+ if (er && er.code === "EPERM" && isWindows4) {
+ return fixWinEPERM(p, options, er, cb);
+ }
+ if (st && st.isDirectory()) {
+ return rmdir(p, options, er, cb);
+ }
+ options.unlink(p, (er2) => {
+ if (er2) {
+ if (er2.code === "ENOENT") {
+ return cb(null);
+ }
+ if (er2.code === "EPERM") {
+ return isWindows4 ? fixWinEPERM(p, options, er2, cb) : rmdir(p, options, er2, cb);
+ }
+ if (er2.code === "EISDIR") {
+ return rmdir(p, options, er2, cb);
+ }
+ }
+ return cb(er2);
+ });
+ });
+ }
+ function fixWinEPERM(p, options, er, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ options.chmod(p, 438, (er2) => {
+ if (er2) {
+ cb(er2.code === "ENOENT" ? null : er);
+ } else {
+ options.stat(p, (er3, stats) => {
+ if (er3) {
+ cb(er3.code === "ENOENT" ? null : er);
+ } else if (stats.isDirectory()) {
+ rmdir(p, options, er, cb);
+ } else {
+ options.unlink(p, cb);
+ }
+ });
+ }
+ });
+ }
+ function fixWinEPERMSync(p, options, er) {
+ let stats;
+ assert(p);
+ assert(options);
+ try {
+ options.chmodSync(p, 438);
+ } catch (er2) {
+ if (er2.code === "ENOENT") {
+ return;
+ } else {
+ throw er;
+ }
+ }
+ try {
+ stats = options.statSync(p);
+ } catch (er3) {
+ if (er3.code === "ENOENT") {
+ return;
+ } else {
+ throw er;
+ }
+ }
+ if (stats.isDirectory()) {
+ rmdirSync(p, options, er);
+ } else {
+ options.unlinkSync(p);
+ }
+ }
+ function rmdir(p, options, originalEr, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ options.rmdir(p, (er) => {
+ if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) {
+ rmkids(p, options, cb);
+ } else if (er && er.code === "ENOTDIR") {
+ cb(originalEr);
+ } else {
+ cb(er);
+ }
+ });
+ }
+ function rmkids(p, options, cb) {
+ assert(p);
+ assert(options);
+ assert(typeof cb === "function");
+ options.readdir(p, (er, files) => {
+ if (er)
+ return cb(er);
+ let n = files.length;
+ let errState;
+ if (n === 0)
+ return options.rmdir(p, cb);
+ files.forEach((f) => {
+ rimraf(path36.join(p, f), options, (er2) => {
+ if (errState) {
+ return;
+ }
+ if (er2)
+ return cb(errState = er2);
+ if (--n === 0) {
+ options.rmdir(p, cb);
+ }
+ });
+ });
+ });
+ }
+ function rimrafSync(p, options) {
+ let st;
+ options = options || {};
+ defaults2(options);
+ assert(p, "rimraf: missing path");
+ assert.strictEqual(typeof p, "string", "rimraf: path should be a string");
+ assert(options, "rimraf: missing options");
+ assert.strictEqual(typeof options, "object", "rimraf: options should be object");
+ try {
+ st = options.lstatSync(p);
+ } catch (er) {
+ if (er.code === "ENOENT") {
+ return;
+ }
+ if (er.code === "EPERM" && isWindows4) {
+ fixWinEPERMSync(p, options, er);
+ }
+ }
+ try {
+ if (st && st.isDirectory()) {
+ rmdirSync(p, options, null);
+ } else {
+ options.unlinkSync(p);
+ }
+ } catch (er) {
+ if (er.code === "ENOENT") {
+ return;
+ } else if (er.code === "EPERM") {
+ return isWindows4 ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er);
+ } else if (er.code !== "EISDIR") {
+ throw er;
+ }
+ rmdirSync(p, options, er);
+ }
+ }
+ function rmdirSync(p, options, originalEr) {
+ assert(p);
+ assert(options);
+ try {
+ options.rmdirSync(p);
+ } catch (er) {
+ if (er.code === "ENOTDIR") {
+ throw originalEr;
+ } else if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") {
+ rmkidsSync(p, options);
+ } else if (er.code !== "ENOENT") {
+ throw er;
+ }
+ }
+ }
+ function rmkidsSync(p, options) {
+ assert(p);
+ assert(options);
+ options.readdirSync(p).forEach((f) => rimrafSync(path36.join(p, f), options));
+ if (isWindows4) {
+ const startTime = Date.now();
+ do {
+ try {
+ const ret = options.rmdirSync(p, options);
+ return ret;
+ } catch {
+ }
+ } while (Date.now() - startTime < 500);
+ } else {
+ const ret = options.rmdirSync(p, options);
+ return ret;
+ }
+ }
+ module2.exports = rimraf;
+ rimraf.sync = rimrafSync;
+ }
+});
+
+// node_modules/fs-extra/lib/remove/index.js
+var require_remove2 = __commonJS({
+ "node_modules/fs-extra/lib/remove/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var rimraf = require_rimraf2();
+ module2.exports = {
+ remove: u(rimraf),
+ removeSync: rimraf.sync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/empty/index.js
+var require_empty2 = __commonJS({
+ "node_modules/fs-extra/lib/empty/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdir = require_mkdirs3();
+ var remove = require_remove2();
+ var emptyDir = u(function emptyDir2(dir, callback) {
+ callback = callback || function() {
+ };
+ fs27.readdir(dir, (err, items) => {
+ if (err)
+ return mkdir.mkdirs(dir, callback);
+ items = items.map((item) => path36.join(dir, item));
+ deleteItem();
+ function deleteItem() {
+ const item = items.pop();
+ if (!item)
+ return callback();
+ remove.remove(item, (err2) => {
+ if (err2)
+ return callback(err2);
+ deleteItem();
+ });
+ }
+ });
+ });
+ function emptyDirSync(dir) {
+ let items;
+ try {
+ items = fs27.readdirSync(dir);
+ } catch {
+ return mkdir.mkdirsSync(dir);
+ }
+ items.forEach((item) => {
+ item = path36.join(dir, item);
+ remove.removeSync(item);
+ });
+ }
+ module2.exports = {
+ emptyDirSync,
+ emptydirSync: emptyDirSync,
+ emptyDir,
+ emptydir: emptyDir
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/ensure/file.js
+var require_file3 = __commonJS({
+ "node_modules/fs-extra/lib/ensure/file.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var mkdir = require_mkdirs3();
+ function createFile(file, callback) {
+ function makeFile() {
+ fs27.writeFile(file, "", (err) => {
+ if (err)
+ return callback(err);
+ callback();
+ });
+ }
+ fs27.stat(file, (err, stats) => {
+ if (!err && stats.isFile())
+ return callback();
+ const dir = path36.dirname(file);
+ fs27.stat(dir, (err2, stats2) => {
+ if (err2) {
+ if (err2.code === "ENOENT") {
+ return mkdir.mkdirs(dir, (err3) => {
+ if (err3)
+ return callback(err3);
+ makeFile();
+ });
+ }
+ return callback(err2);
+ }
+ if (stats2.isDirectory())
+ makeFile();
+ else {
+ fs27.readdir(dir, (err3) => {
+ if (err3)
+ return callback(err3);
+ });
+ }
+ });
+ });
+ }
+ function createFileSync(file) {
+ let stats;
+ try {
+ stats = fs27.statSync(file);
+ } catch {
+ }
+ if (stats && stats.isFile())
+ return;
+ const dir = path36.dirname(file);
+ try {
+ if (!fs27.statSync(dir).isDirectory()) {
+ fs27.readdirSync(dir);
+ }
+ } catch (err) {
+ if (err && err.code === "ENOENT")
+ mkdir.mkdirsSync(dir);
+ else
+ throw err;
+ }
+ fs27.writeFileSync(file, "");
+ }
+ module2.exports = {
+ createFile: u(createFile),
+ createFileSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/ensure/link.js
+var require_link2 = __commonJS({
+ "node_modules/fs-extra/lib/ensure/link.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var mkdir = require_mkdirs3();
+ var pathExists = require_path_exists2().pathExists;
+ function createLink(srcpath, dstpath, callback) {
+ function makeLink(srcpath2, dstpath2) {
+ fs27.link(srcpath2, dstpath2, (err) => {
+ if (err)
+ return callback(err);
+ callback(null);
+ });
+ }
+ pathExists(dstpath, (err, destinationExists) => {
+ if (err)
+ return callback(err);
+ if (destinationExists)
+ return callback(null);
+ fs27.lstat(srcpath, (err2) => {
+ if (err2) {
+ err2.message = err2.message.replace("lstat", "ensureLink");
+ return callback(err2);
+ }
+ const dir = path36.dirname(dstpath);
+ pathExists(dir, (err3, dirExists) => {
+ if (err3)
+ return callback(err3);
+ if (dirExists)
+ return makeLink(srcpath, dstpath);
+ mkdir.mkdirs(dir, (err4) => {
+ if (err4)
+ return callback(err4);
+ makeLink(srcpath, dstpath);
+ });
+ });
+ });
+ });
+ }
+ function createLinkSync(srcpath, dstpath) {
+ const destinationExists = fs27.existsSync(dstpath);
+ if (destinationExists)
+ return void 0;
+ try {
+ fs27.lstatSync(srcpath);
+ } catch (err) {
+ err.message = err.message.replace("lstat", "ensureLink");
+ throw err;
+ }
+ const dir = path36.dirname(dstpath);
+ const dirExists = fs27.existsSync(dir);
+ if (dirExists)
+ return fs27.linkSync(srcpath, dstpath);
+ mkdir.mkdirsSync(dir);
+ return fs27.linkSync(srcpath, dstpath);
+ }
+ module2.exports = {
+ createLink: u(createLink),
+ createLinkSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/ensure/symlink-paths.js
+var require_symlink_paths2 = __commonJS({
+ "node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports2, module2) {
+ "use strict";
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var pathExists = require_path_exists2().pathExists;
+ function symlinkPaths(srcpath, dstpath, callback) {
+ if (path36.isAbsolute(srcpath)) {
+ return fs27.lstat(srcpath, (err) => {
+ if (err) {
+ err.message = err.message.replace("lstat", "ensureSymlink");
+ return callback(err);
+ }
+ return callback(null, {
+ toCwd: srcpath,
+ toDst: srcpath
+ });
+ });
+ } else {
+ const dstdir = path36.dirname(dstpath);
+ const relativeToDst = path36.join(dstdir, srcpath);
+ return pathExists(relativeToDst, (err, exists) => {
+ if (err)
+ return callback(err);
+ if (exists) {
+ return callback(null, {
+ toCwd: relativeToDst,
+ toDst: srcpath
+ });
+ } else {
+ return fs27.lstat(srcpath, (err2) => {
+ if (err2) {
+ err2.message = err2.message.replace("lstat", "ensureSymlink");
+ return callback(err2);
+ }
+ return callback(null, {
+ toCwd: srcpath,
+ toDst: path36.relative(dstdir, srcpath)
+ });
+ });
+ }
+ });
+ }
+ }
+ function symlinkPathsSync(srcpath, dstpath) {
+ let exists;
+ if (path36.isAbsolute(srcpath)) {
+ exists = fs27.existsSync(srcpath);
+ if (!exists)
+ throw new Error("absolute srcpath does not exist");
+ return {
+ toCwd: srcpath,
+ toDst: srcpath
+ };
+ } else {
+ const dstdir = path36.dirname(dstpath);
+ const relativeToDst = path36.join(dstdir, srcpath);
+ exists = fs27.existsSync(relativeToDst);
+ if (exists) {
+ return {
+ toCwd: relativeToDst,
+ toDst: srcpath
+ };
+ } else {
+ exists = fs27.existsSync(srcpath);
+ if (!exists)
+ throw new Error("relative srcpath does not exist");
+ return {
+ toCwd: srcpath,
+ toDst: path36.relative(dstdir, srcpath)
+ };
+ }
+ }
+ }
+ module2.exports = {
+ symlinkPaths,
+ symlinkPathsSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/ensure/symlink-type.js
+var require_symlink_type2 = __commonJS({
+ "node_modules/fs-extra/lib/ensure/symlink-type.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ function symlinkType(srcpath, type, callback) {
+ callback = typeof type === "function" ? type : callback;
+ type = typeof type === "function" ? false : type;
+ if (type)
+ return callback(null, type);
+ fs27.lstat(srcpath, (err, stats) => {
+ if (err)
+ return callback(null, "file");
+ type = stats && stats.isDirectory() ? "dir" : "file";
+ callback(null, type);
+ });
+ }
+ function symlinkTypeSync(srcpath, type) {
+ let stats;
+ if (type)
+ return type;
+ try {
+ stats = fs27.lstatSync(srcpath);
+ } catch {
+ return "file";
+ }
+ return stats && stats.isDirectory() ? "dir" : "file";
+ }
+ module2.exports = {
+ symlinkType,
+ symlinkTypeSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/ensure/symlink.js
+var require_symlink2 = __commonJS({
+ "node_modules/fs-extra/lib/ensure/symlink.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var path36 = require("path");
+ var fs27 = require_graceful_fs();
+ var _mkdirs = require_mkdirs3();
+ var mkdirs = _mkdirs.mkdirs;
+ var mkdirsSync = _mkdirs.mkdirsSync;
+ var _symlinkPaths = require_symlink_paths2();
+ var symlinkPaths = _symlinkPaths.symlinkPaths;
+ var symlinkPathsSync = _symlinkPaths.symlinkPathsSync;
+ var _symlinkType = require_symlink_type2();
+ var symlinkType = _symlinkType.symlinkType;
+ var symlinkTypeSync = _symlinkType.symlinkTypeSync;
+ var pathExists = require_path_exists2().pathExists;
+ function createSymlink(srcpath, dstpath, type, callback) {
+ callback = typeof type === "function" ? type : callback;
+ type = typeof type === "function" ? false : type;
+ pathExists(dstpath, (err, destinationExists) => {
+ if (err)
+ return callback(err);
+ if (destinationExists)
+ return callback(null);
+ symlinkPaths(srcpath, dstpath, (err2, relative) => {
+ if (err2)
+ return callback(err2);
+ srcpath = relative.toDst;
+ symlinkType(relative.toCwd, type, (err3, type2) => {
+ if (err3)
+ return callback(err3);
+ const dir = path36.dirname(dstpath);
+ pathExists(dir, (err4, dirExists) => {
+ if (err4)
+ return callback(err4);
+ if (dirExists)
+ return fs27.symlink(srcpath, dstpath, type2, callback);
+ mkdirs(dir, (err5) => {
+ if (err5)
+ return callback(err5);
+ fs27.symlink(srcpath, dstpath, type2, callback);
+ });
+ });
+ });
+ });
+ });
+ }
+ function createSymlinkSync(srcpath, dstpath, type) {
+ const destinationExists = fs27.existsSync(dstpath);
+ if (destinationExists)
+ return void 0;
+ const relative = symlinkPathsSync(srcpath, dstpath);
+ srcpath = relative.toDst;
+ type = symlinkTypeSync(relative.toCwd, type);
+ const dir = path36.dirname(dstpath);
+ const exists = fs27.existsSync(dir);
+ if (exists)
+ return fs27.symlinkSync(srcpath, dstpath, type);
+ mkdirsSync(dir);
+ return fs27.symlinkSync(srcpath, dstpath, type);
+ }
+ module2.exports = {
+ createSymlink: u(createSymlink),
+ createSymlinkSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/ensure/index.js
+var require_ensure2 = __commonJS({
+ "node_modules/fs-extra/lib/ensure/index.js"(exports2, module2) {
+ "use strict";
+ var file = require_file3();
+ var link = require_link2();
+ var symlink = require_symlink2();
+ module2.exports = {
+ createFile: file.createFile,
+ createFileSync: file.createFileSync,
+ ensureFile: file.createFile,
+ ensureFileSync: file.createFileSync,
+ createLink: link.createLink,
+ createLinkSync: link.createLinkSync,
+ ensureLink: link.createLink,
+ ensureLinkSync: link.createLinkSync,
+ createSymlink: symlink.createSymlink,
+ createSymlinkSync: symlink.createSymlinkSync,
+ ensureSymlink: symlink.createSymlink,
+ ensureSymlinkSync: symlink.createSymlinkSync
+ };
+ }
+});
+
+// node_modules/jsonfile/node_modules/universalify/index.js
+var require_universalify3 = __commonJS({
+ "node_modules/jsonfile/node_modules/universalify/index.js"(exports2) {
+ "use strict";
+ exports2.fromCallback = function(fn) {
+ return Object.defineProperty(function(...args) {
+ if (typeof args[args.length - 1] === "function")
+ fn.apply(this, args);
+ else {
+ return new Promise((resolve3, reject) => {
+ fn.call(this, ...args, (err, res) => err != null ? reject(err) : resolve3(res));
+ });
+ }
+ }, "name", { value: fn.name });
+ };
+ exports2.fromPromise = function(fn) {
+ return Object.defineProperty(function(...args) {
+ const cb = args[args.length - 1];
+ if (typeof cb !== "function")
+ return fn.apply(this, args);
+ else
+ fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb);
+ }, "name", { value: fn.name });
+ };
+ }
+});
+
+// node_modules/jsonfile/utils.js
+var require_utils = __commonJS({
+ "node_modules/jsonfile/utils.js"(exports2, module2) {
+ function stringify3(obj, { EOL: EOL2 = "\n", finalEOL = true, replacer = null, spaces } = {}) {
+ const EOF = finalEOL ? EOL2 : "";
+ const str = JSON.stringify(obj, replacer, spaces);
+ return str.replace(/\n/g, EOL2) + EOF;
+ }
+ function stripBom(content) {
+ if (Buffer.isBuffer(content))
+ content = content.toString("utf8");
+ return content.replace(/^\uFEFF/, "");
+ }
+ module2.exports = { stringify: stringify3, stripBom };
+ }
+});
+
+// node_modules/jsonfile/index.js
+var require_jsonfile3 = __commonJS({
+ "node_modules/jsonfile/index.js"(exports2, module2) {
+ var _fs;
+ try {
+ _fs = require_graceful_fs();
+ } catch (_) {
+ _fs = require("fs");
+ }
+ var universalify = require_universalify3();
+ var { stringify: stringify3, stripBom } = require_utils();
+ async function _readFile(file, options = {}) {
+ if (typeof options === "string") {
+ options = { encoding: options };
+ }
+ const fs27 = options.fs || _fs;
+ const shouldThrow = "throws" in options ? options.throws : true;
+ let data = await universalify.fromCallback(fs27.readFile)(file, options);
+ data = stripBom(data);
+ let obj;
+ try {
+ obj = JSON.parse(data, options ? options.reviver : null);
+ } catch (err) {
+ if (shouldThrow) {
+ err.message = `${file}: ${err.message}`;
+ throw err;
+ } else {
+ return null;
+ }
+ }
+ return obj;
+ }
+ var readFile2 = universalify.fromPromise(_readFile);
+ function readFileSync(file, options = {}) {
+ if (typeof options === "string") {
+ options = { encoding: options };
+ }
+ const fs27 = options.fs || _fs;
+ const shouldThrow = "throws" in options ? options.throws : true;
+ try {
+ let content = fs27.readFileSync(file, options);
+ content = stripBom(content);
+ return JSON.parse(content, options.reviver);
+ } catch (err) {
+ if (shouldThrow) {
+ err.message = `${file}: ${err.message}`;
+ throw err;
+ } else {
+ return null;
+ }
+ }
+ }
+ async function _writeFile(file, obj, options = {}) {
+ const fs27 = options.fs || _fs;
+ const str = stringify3(obj, options);
+ await universalify.fromCallback(fs27.writeFile)(file, str, options);
+ }
+ var writeFile2 = universalify.fromPromise(_writeFile);
+ function writeFileSync(file, obj, options = {}) {
+ const fs27 = options.fs || _fs;
+ const str = stringify3(obj, options);
+ return fs27.writeFileSync(file, str, options);
+ }
+ var jsonfile = {
+ readFile: readFile2,
+ readFileSync,
+ writeFile: writeFile2,
+ writeFileSync
+ };
+ module2.exports = jsonfile;
+ }
+});
+
+// node_modules/fs-extra/lib/json/jsonfile.js
+var require_jsonfile4 = __commonJS({
+ "node_modules/fs-extra/lib/json/jsonfile.js"(exports2, module2) {
+ "use strict";
+ var jsonFile = require_jsonfile3();
+ module2.exports = {
+ readJson: jsonFile.readFile,
+ readJsonSync: jsonFile.readFileSync,
+ writeJson: jsonFile.writeFile,
+ writeJsonSync: jsonFile.writeFileSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/output/index.js
+var require_output2 = __commonJS({
+ "node_modules/fs-extra/lib/output/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var mkdir = require_mkdirs3();
+ var pathExists = require_path_exists2().pathExists;
+ function outputFile(file, data, encoding, callback) {
+ if (typeof encoding === "function") {
+ callback = encoding;
+ encoding = "utf8";
+ }
+ const dir = path36.dirname(file);
+ pathExists(dir, (err, itDoes) => {
+ if (err)
+ return callback(err);
+ if (itDoes)
+ return fs27.writeFile(file, data, encoding, callback);
+ mkdir.mkdirs(dir, (err2) => {
+ if (err2)
+ return callback(err2);
+ fs27.writeFile(file, data, encoding, callback);
+ });
+ });
+ }
+ function outputFileSync(file, ...args) {
+ const dir = path36.dirname(file);
+ if (fs27.existsSync(dir)) {
+ return fs27.writeFileSync(file, ...args);
+ }
+ mkdir.mkdirsSync(dir);
+ fs27.writeFileSync(file, ...args);
+ }
+ module2.exports = {
+ outputFile: u(outputFile),
+ outputFileSync
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/json/output-json.js
+var require_output_json2 = __commonJS({
+ "node_modules/fs-extra/lib/json/output-json.js"(exports2, module2) {
+ "use strict";
+ var { stringify: stringify3 } = require_utils();
+ var { outputFile } = require_output2();
+ async function outputJson(file, data, options = {}) {
+ const str = stringify3(data, options);
+ await outputFile(file, str, options);
+ }
+ module2.exports = outputJson;
+ }
+});
+
+// node_modules/fs-extra/lib/json/output-json-sync.js
+var require_output_json_sync2 = __commonJS({
+ "node_modules/fs-extra/lib/json/output-json-sync.js"(exports2, module2) {
+ "use strict";
+ var { stringify: stringify3 } = require_utils();
+ var { outputFileSync } = require_output2();
+ function outputJsonSync(file, data, options) {
+ const str = stringify3(data, options);
+ outputFileSync(file, str, options);
+ }
+ module2.exports = outputJsonSync;
+ }
+});
+
+// node_modules/fs-extra/lib/json/index.js
+var require_json2 = __commonJS({
+ "node_modules/fs-extra/lib/json/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromPromise;
+ var jsonFile = require_jsonfile4();
+ jsonFile.outputJson = u(require_output_json2());
+ jsonFile.outputJsonSync = require_output_json_sync2();
+ jsonFile.outputJSON = jsonFile.outputJson;
+ jsonFile.outputJSONSync = jsonFile.outputJsonSync;
+ jsonFile.writeJSON = jsonFile.writeJson;
+ jsonFile.writeJSONSync = jsonFile.writeJsonSync;
+ jsonFile.readJSON = jsonFile.readJson;
+ jsonFile.readJSONSync = jsonFile.readJsonSync;
+ module2.exports = jsonFile;
+ }
+});
+
+// node_modules/fs-extra/lib/move-sync/move-sync.js
+var require_move_sync3 = __commonJS({
+ "node_modules/fs-extra/lib/move-sync/move-sync.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var copySync = require_copy_sync4().copySync;
+ var removeSync = require_remove2().removeSync;
+ var mkdirpSync = require_mkdirs3().mkdirpSync;
+ var stat = require_stat2();
+ function moveSync(src, dest, opts) {
+ opts = opts || {};
+ const overwrite = opts.overwrite || opts.clobber || false;
+ const { srcStat } = stat.checkPathsSync(src, dest, "move");
+ stat.checkParentPathsSync(src, srcStat, dest, "move");
+ mkdirpSync(path36.dirname(dest));
+ return doRename(src, dest, overwrite);
+ }
+ function doRename(src, dest, overwrite) {
+ if (overwrite) {
+ removeSync(dest);
+ return rename(src, dest, overwrite);
+ }
+ if (fs27.existsSync(dest))
+ throw new Error("dest already exists.");
+ return rename(src, dest, overwrite);
+ }
+ function rename(src, dest, overwrite) {
+ try {
+ fs27.renameSync(src, dest);
+ } catch (err) {
+ if (err.code !== "EXDEV")
+ throw err;
+ return moveAcrossDevice(src, dest, overwrite);
+ }
+ }
+ function moveAcrossDevice(src, dest, overwrite) {
+ const opts = {
+ overwrite,
+ errorOnExist: true
+ };
+ copySync(src, dest, opts);
+ return removeSync(src);
+ }
+ module2.exports = moveSync;
+ }
+});
+
+// node_modules/fs-extra/lib/move-sync/index.js
+var require_move_sync4 = __commonJS({
+ "node_modules/fs-extra/lib/move-sync/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = {
+ moveSync: require_move_sync3()
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/move/move.js
+var require_move3 = __commonJS({
+ "node_modules/fs-extra/lib/move/move.js"(exports2, module2) {
+ "use strict";
+ var fs27 = require_graceful_fs();
+ var path36 = require("path");
+ var copy = require_copy4().copy;
+ var remove = require_remove2().remove;
+ var mkdirp = require_mkdirs3().mkdirp;
+ var pathExists = require_path_exists2().pathExists;
+ var stat = require_stat2();
+ function move(src, dest, opts, cb) {
+ if (typeof opts === "function") {
+ cb = opts;
+ opts = {};
+ }
+ const overwrite = opts.overwrite || opts.clobber || false;
+ stat.checkPaths(src, dest, "move", (err, stats) => {
+ if (err)
+ return cb(err);
+ const { srcStat } = stats;
+ stat.checkParentPaths(src, srcStat, dest, "move", (err2) => {
+ if (err2)
+ return cb(err2);
+ mkdirp(path36.dirname(dest), (err3) => {
+ if (err3)
+ return cb(err3);
+ return doRename(src, dest, overwrite, cb);
+ });
+ });
+ });
+ }
+ function doRename(src, dest, overwrite, cb) {
+ if (overwrite) {
+ return remove(dest, (err) => {
+ if (err)
+ return cb(err);
+ return rename(src, dest, overwrite, cb);
+ });
+ }
+ pathExists(dest, (err, destExists) => {
+ if (err)
+ return cb(err);
+ if (destExists)
+ return cb(new Error("dest already exists."));
+ return rename(src, dest, overwrite, cb);
+ });
+ }
+ function rename(src, dest, overwrite, cb) {
+ fs27.rename(src, dest, (err) => {
+ if (!err)
+ return cb();
+ if (err.code !== "EXDEV")
+ return cb(err);
+ return moveAcrossDevice(src, dest, overwrite, cb);
+ });
+ }
+ function moveAcrossDevice(src, dest, overwrite, cb) {
+ const opts = {
+ overwrite,
+ errorOnExist: true
+ };
+ copy(src, dest, opts, (err) => {
+ if (err)
+ return cb(err);
+ return remove(src, cb);
+ });
+ }
+ module2.exports = move;
+ }
+});
+
+// node_modules/fs-extra/lib/move/index.js
+var require_move4 = __commonJS({
+ "node_modules/fs-extra/lib/move/index.js"(exports2, module2) {
+ "use strict";
+ var u = require_universalify2().fromCallback;
+ module2.exports = {
+ move: u(require_move3())
+ };
+ }
+});
+
+// node_modules/fs-extra/lib/index.js
+var require_lib5 = __commonJS({
+ "node_modules/fs-extra/lib/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, require_fs2()), require_copy_sync4()), require_copy4()), require_empty2()), require_ensure2()), require_json2()), require_mkdirs3()), require_move_sync4()), require_move4()), require_output2()), require_path_exists2()), require_remove2());
+ var fs27 = require("fs");
+ if (Object.getOwnPropertyDescriptor(fs27, "promises")) {
+ Object.defineProperty(module2.exports, "promises", {
+ get() {
+ return fs27.promises;
+ }
+ });
+ }
+ }
+});
+
+// src/util/logger.ts
+var require_logger2 = __commonJS({
+ "src/util/logger.ts"(exports2, module2) {
+ var import_fs38 = __toModule(require("fs"));
+ var import_log4js2 = __toModule(require_log4js());
+ var import_path38 = __toModule(require("path"));
+ var import_os10 = __toModule(require("os"));
+ var import_fs_extra10 = __toModule(require_lib5());
+ function getLogFile() {
+ let file = process.env.NVIM_COC_LOG_FILE;
+ if (file)
+ return file;
+ let dir = process.env.XDG_RUNTIME_DIR;
+ if (dir) {
+ try {
+ import_fs38.default.accessSync(dir, import_fs38.default.constants.R_OK | import_fs38.default.constants.W_OK);
+ return import_path38.default.join(dir, `coc-nvim-${process.pid}.log`);
+ } catch (err) {
+ }
+ }
+ let tmpdir = import_os10.default.tmpdir();
+ dir = import_path38.default.join(tmpdir, `coc.nvim-${process.pid}`);
+ if (!import_fs38.default.existsSync(dir))
+ (0, import_fs_extra10.mkdirpSync)(dir);
+ return import_path38.default.join(dir, `coc-nvim.log`);
+ }
+ var MAX_LOG_SIZE = 1024 * 1024;
+ var MAX_LOG_BACKUPS = 10;
+ var logfile = getLogFile();
+ var level = process.env.NVIM_COC_LOG_LEVEL || "info";
+ if (import_fs38.default.existsSync(logfile)) {
+ try {
+ import_fs38.default.writeFileSync(logfile, "", { encoding: "utf8", mode: 438 });
+ } catch (e) {
+ }
+ }
+ import_log4js2.default.configure({
+ disableClustering: true,
+ appenders: {
+ out: {
+ type: "file",
+ mode: 438,
+ filename: logfile,
+ maxLogSize: MAX_LOG_SIZE,
+ backups: MAX_LOG_BACKUPS,
+ layout: {
+ type: "pattern",
+ pattern: `%d{ISO8601} %p (pid:${process.pid}) [%c] - %m`
+ }
+ }
+ },
+ categories: {
+ default: { appenders: ["out"], level }
+ }
+ });
+ module2.exports = (name2 = "coc-nvim") => {
+ let logger113 = import_log4js2.default.getLogger(name2);
+ logger113.getLogFile = () => logfile;
+ return logger113;
+ };
+ }
+});
+
+// src/util/extensions.ts
+var require_extensions = __commonJS({
+ "src/util/extensions.ts"() {
+ Promise.prototype.logError = function() {
+ this.catch((e) => {
+ require_logger2()("extensions").error(e);
+ });
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/buffer-global.js
+var require_buffer_global = __commonJS({
+ "node_modules/msgpack-lite/lib/buffer-global.js"(exports2, module2) {
+ module2.exports = c(typeof Buffer !== "undefined" && Buffer) || c(exports2.Buffer) || c(typeof window !== "undefined" && window.Buffer) || exports2.Buffer;
+ function c(B) {
+ return B && B.isBuffer && B;
+ }
+ }
+});
+
+// node_modules/isarray/index.js
+var require_isarray = __commonJS({
+ "node_modules/isarray/index.js"(exports2, module2) {
+ var toString = {}.toString;
+ module2.exports = Array.isArray || function(arr) {
+ return toString.call(arr) == "[object Array]";
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/bufferish-array.js
+var require_bufferish_array = __commonJS({
+ "node_modules/msgpack-lite/lib/bufferish-array.js"(exports2, module2) {
+ var Bufferish = require_bufferish();
+ var exports2 = module2.exports = alloc(0);
+ exports2.alloc = alloc;
+ exports2.concat = Bufferish.concat;
+ exports2.from = from;
+ function alloc(size) {
+ return new Array(size);
+ }
+ function from(value) {
+ if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
+ value = Bufferish.Uint8Array.from(value);
+ } else if (Bufferish.isArrayBuffer(value)) {
+ value = new Uint8Array(value);
+ } else if (typeof value === "string") {
+ return Bufferish.from.call(exports2, value);
+ } else if (typeof value === "number") {
+ throw new TypeError('"value" argument must not be a number');
+ }
+ return Array.prototype.slice.call(value);
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/bufferish-buffer.js
+var require_bufferish_buffer = __commonJS({
+ "node_modules/msgpack-lite/lib/bufferish-buffer.js"(exports2, module2) {
+ var Bufferish = require_bufferish();
+ var Buffer4 = Bufferish.global;
+ var exports2 = module2.exports = Bufferish.hasBuffer ? alloc(0) : [];
+ exports2.alloc = Bufferish.hasBuffer && Buffer4.alloc || alloc;
+ exports2.concat = Bufferish.concat;
+ exports2.from = from;
+ function alloc(size) {
+ return new Buffer4(size);
+ }
+ function from(value) {
+ if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
+ value = Bufferish.Uint8Array.from(value);
+ } else if (Bufferish.isArrayBuffer(value)) {
+ value = new Uint8Array(value);
+ } else if (typeof value === "string") {
+ return Bufferish.from.call(exports2, value);
+ } else if (typeof value === "number") {
+ throw new TypeError('"value" argument must not be a number');
+ }
+ if (Buffer4.from && Buffer4.from.length !== 1) {
+ return Buffer4.from(value);
+ } else {
+ return new Buffer4(value);
+ }
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/bufferish-uint8array.js
+var require_bufferish_uint8array = __commonJS({
+ "node_modules/msgpack-lite/lib/bufferish-uint8array.js"(exports2, module2) {
+ var Bufferish = require_bufferish();
+ var exports2 = module2.exports = Bufferish.hasArrayBuffer ? alloc(0) : [];
+ exports2.alloc = alloc;
+ exports2.concat = Bufferish.concat;
+ exports2.from = from;
+ function alloc(size) {
+ return new Uint8Array(size);
+ }
+ function from(value) {
+ if (Bufferish.isView(value)) {
+ var byteOffset = value.byteOffset;
+ var byteLength2 = value.byteLength;
+ value = value.buffer;
+ if (value.byteLength !== byteLength2) {
+ if (value.slice) {
+ value = value.slice(byteOffset, byteOffset + byteLength2);
+ } else {
+ value = new Uint8Array(value);
+ if (value.byteLength !== byteLength2) {
+ value = Array.prototype.slice.call(value, byteOffset, byteOffset + byteLength2);
+ }
+ }
+ }
+ } else if (typeof value === "string") {
+ return Bufferish.from.call(exports2, value);
+ } else if (typeof value === "number") {
+ throw new TypeError('"value" argument must not be a number');
+ }
+ return new Uint8Array(value);
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/buffer-lite.js
+var require_buffer_lite = __commonJS({
+ "node_modules/msgpack-lite/lib/buffer-lite.js"(exports2) {
+ exports2.copy = copy;
+ exports2.toString = toString;
+ exports2.write = write;
+ function write(string2, offset) {
+ var buffer = this;
+ var index = offset || (offset |= 0);
+ var length = string2.length;
+ var chr = 0;
+ var i = 0;
+ while (i < length) {
+ chr = string2.charCodeAt(i++);
+ if (chr < 128) {
+ buffer[index++] = chr;
+ } else if (chr < 2048) {
+ buffer[index++] = 192 | chr >>> 6;
+ buffer[index++] = 128 | chr & 63;
+ } else if (chr < 55296 || chr > 57343) {
+ buffer[index++] = 224 | chr >>> 12;
+ buffer[index++] = 128 | chr >>> 6 & 63;
+ buffer[index++] = 128 | chr & 63;
+ } else {
+ chr = (chr - 55296 << 10 | string2.charCodeAt(i++) - 56320) + 65536;
+ buffer[index++] = 240 | chr >>> 18;
+ buffer[index++] = 128 | chr >>> 12 & 63;
+ buffer[index++] = 128 | chr >>> 6 & 63;
+ buffer[index++] = 128 | chr & 63;
+ }
+ }
+ return index - offset;
+ }
+ function toString(encoding, start, end) {
+ var buffer = this;
+ var index = start | 0;
+ if (!end)
+ end = buffer.length;
+ var string2 = "";
+ var chr = 0;
+ while (index < end) {
+ chr = buffer[index++];
+ if (chr < 128) {
+ string2 += String.fromCharCode(chr);
+ continue;
+ }
+ if ((chr & 224) === 192) {
+ chr = (chr & 31) << 6 | buffer[index++] & 63;
+ } else if ((chr & 240) === 224) {
+ chr = (chr & 15) << 12 | (buffer[index++] & 63) << 6 | buffer[index++] & 63;
+ } else if ((chr & 248) === 240) {
+ chr = (chr & 7) << 18 | (buffer[index++] & 63) << 12 | (buffer[index++] & 63) << 6 | buffer[index++] & 63;
+ }
+ if (chr >= 65536) {
+ chr -= 65536;
+ string2 += String.fromCharCode((chr >>> 10) + 55296, (chr & 1023) + 56320);
+ } else {
+ string2 += String.fromCharCode(chr);
+ }
+ }
+ return string2;
+ }
+ function copy(target, targetStart, start, end) {
+ var i;
+ if (!start)
+ start = 0;
+ if (!end && end !== 0)
+ end = this.length;
+ if (!targetStart)
+ targetStart = 0;
+ var len = end - start;
+ if (target === this && start < targetStart && targetStart < end) {
+ for (i = len - 1; i >= 0; i--) {
+ target[i + targetStart] = this[i + start];
+ }
+ } else {
+ for (i = 0; i < len; i++) {
+ target[i + targetStart] = this[i + start];
+ }
+ }
+ return len;
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/bufferish-proto.js
+var require_bufferish_proto = __commonJS({
+ "node_modules/msgpack-lite/lib/bufferish-proto.js"(exports2) {
+ var BufferLite = require_buffer_lite();
+ exports2.copy = copy;
+ exports2.slice = slice;
+ exports2.toString = toString;
+ exports2.write = gen("write");
+ var Bufferish = require_bufferish();
+ var Buffer4 = Bufferish.global;
+ var isBufferShim = Bufferish.hasBuffer && "TYPED_ARRAY_SUPPORT" in Buffer4;
+ var brokenTypedArray = isBufferShim && !Buffer4.TYPED_ARRAY_SUPPORT;
+ function copy(target, targetStart, start, end) {
+ var thisIsBuffer = Bufferish.isBuffer(this);
+ var targetIsBuffer = Bufferish.isBuffer(target);
+ if (thisIsBuffer && targetIsBuffer) {
+ return this.copy(target, targetStart, start, end);
+ } else if (!brokenTypedArray && !thisIsBuffer && !targetIsBuffer && Bufferish.isView(this) && Bufferish.isView(target)) {
+ var buffer = start || end != null ? slice.call(this, start, end) : this;
+ target.set(buffer, targetStart);
+ return buffer.length;
+ } else {
+ return BufferLite.copy.call(this, target, targetStart, start, end);
+ }
+ }
+ function slice(start, end) {
+ var f = this.slice || !brokenTypedArray && this.subarray;
+ if (f)
+ return f.call(this, start, end);
+ var target = Bufferish.alloc.call(this, end - start);
+ copy.call(this, target, 0, start, end);
+ return target;
+ }
+ function toString(encoding, start, end) {
+ var f = !isBufferShim && Bufferish.isBuffer(this) ? this.toString : BufferLite.toString;
+ return f.apply(this, arguments);
+ }
+ function gen(method) {
+ return wrap;
+ function wrap() {
+ var f = this[method] || BufferLite[method];
+ return f.apply(this, arguments);
+ }
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/bufferish.js
+var require_bufferish = __commonJS({
+ "node_modules/msgpack-lite/lib/bufferish.js"(exports2) {
+ var Buffer4 = exports2.global = require_buffer_global();
+ var hasBuffer = exports2.hasBuffer = Buffer4 && !!Buffer4.isBuffer;
+ var hasArrayBuffer = exports2.hasArrayBuffer = typeof ArrayBuffer !== "undefined";
+ var isArray = exports2.isArray = require_isarray();
+ exports2.isArrayBuffer = hasArrayBuffer ? isArrayBuffer : _false;
+ var isBuffer = exports2.isBuffer = hasBuffer ? Buffer4.isBuffer : _false;
+ var isView = exports2.isView = hasArrayBuffer ? ArrayBuffer.isView || _is("ArrayBuffer", "buffer") : _false;
+ exports2.alloc = alloc;
+ exports2.concat = concat;
+ exports2.from = from;
+ var BufferArray = exports2.Array = require_bufferish_array();
+ var BufferBuffer = exports2.Buffer = require_bufferish_buffer();
+ var BufferUint8Array = exports2.Uint8Array = require_bufferish_uint8array();
+ var BufferProto = exports2.prototype = require_bufferish_proto();
+ function from(value) {
+ if (typeof value === "string") {
+ return fromString.call(this, value);
+ } else {
+ return auto(this).from(value);
+ }
+ }
+ function alloc(size) {
+ return auto(this).alloc(size);
+ }
+ function concat(list2, length) {
+ if (!length) {
+ length = 0;
+ Array.prototype.forEach.call(list2, dryrun);
+ }
+ var ref = this !== exports2 && this || list2[0];
+ var result = alloc.call(ref, length);
+ var offset = 0;
+ Array.prototype.forEach.call(list2, append);
+ return result;
+ function dryrun(buffer) {
+ length += buffer.length;
+ }
+ function append(buffer) {
+ offset += BufferProto.copy.call(buffer, result, offset);
+ }
+ }
+ var _isArrayBuffer = _is("ArrayBuffer");
+ function isArrayBuffer(value) {
+ return value instanceof ArrayBuffer || _isArrayBuffer(value);
+ }
+ function fromString(value) {
+ var expected = value.length * 3;
+ var that = alloc.call(this, expected);
+ var actual = BufferProto.write.call(that, value);
+ if (expected !== actual) {
+ that = BufferProto.slice.call(that, 0, actual);
+ }
+ return that;
+ }
+ function auto(that) {
+ return isBuffer(that) ? BufferBuffer : isView(that) ? BufferUint8Array : isArray(that) ? BufferArray : hasBuffer ? BufferBuffer : hasArrayBuffer ? BufferUint8Array : BufferArray;
+ }
+ function _false() {
+ return false;
+ }
+ function _is(name2, key) {
+ name2 = "[object " + name2 + "]";
+ return function(value) {
+ return value != null && {}.toString.call(key ? value[key] : value) === name2;
+ };
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/ext-buffer.js
+var require_ext_buffer = __commonJS({
+ "node_modules/msgpack-lite/lib/ext-buffer.js"(exports2) {
+ exports2.ExtBuffer = ExtBuffer;
+ var Bufferish = require_bufferish();
+ function ExtBuffer(buffer, type) {
+ if (!(this instanceof ExtBuffer))
+ return new ExtBuffer(buffer, type);
+ this.buffer = Bufferish.from(buffer);
+ this.type = type;
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/ext-packer.js
+var require_ext_packer = __commonJS({
+ "node_modules/msgpack-lite/lib/ext-packer.js"(exports2) {
+ exports2.setExtPackers = setExtPackers;
+ var Bufferish = require_bufferish();
+ var Buffer4 = Bufferish.global;
+ var packTypedArray = Bufferish.Uint8Array.from;
+ var _encode;
+ var ERROR_COLUMNS = { name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1 };
+ function setExtPackers(codec) {
+ codec.addExtPacker(14, Error, [packError, encode]);
+ codec.addExtPacker(1, EvalError, [packError, encode]);
+ codec.addExtPacker(2, RangeError, [packError, encode]);
+ codec.addExtPacker(3, ReferenceError, [packError, encode]);
+ codec.addExtPacker(4, SyntaxError, [packError, encode]);
+ codec.addExtPacker(5, TypeError, [packError, encode]);
+ codec.addExtPacker(6, URIError, [packError, encode]);
+ codec.addExtPacker(10, RegExp, [packRegExp, encode]);
+ codec.addExtPacker(11, Boolean, [packValueOf, encode]);
+ codec.addExtPacker(12, String, [packValueOf, encode]);
+ codec.addExtPacker(13, Date, [Number, encode]);
+ codec.addExtPacker(15, Number, [packValueOf, encode]);
+ if (typeof Uint8Array !== "undefined") {
+ codec.addExtPacker(17, Int8Array, packTypedArray);
+ codec.addExtPacker(18, Uint8Array, packTypedArray);
+ codec.addExtPacker(19, Int16Array, packTypedArray);
+ codec.addExtPacker(20, Uint16Array, packTypedArray);
+ codec.addExtPacker(21, Int32Array, packTypedArray);
+ codec.addExtPacker(22, Uint32Array, packTypedArray);
+ codec.addExtPacker(23, Float32Array, packTypedArray);
+ if (typeof Float64Array !== "undefined") {
+ codec.addExtPacker(24, Float64Array, packTypedArray);
+ }
+ if (typeof Uint8ClampedArray !== "undefined") {
+ codec.addExtPacker(25, Uint8ClampedArray, packTypedArray);
+ }
+ codec.addExtPacker(26, ArrayBuffer, packTypedArray);
+ codec.addExtPacker(29, DataView, packTypedArray);
+ }
+ if (Bufferish.hasBuffer) {
+ codec.addExtPacker(27, Buffer4, Bufferish.from);
+ }
+ }
+ function encode(input) {
+ if (!_encode)
+ _encode = require_encode().encode;
+ return _encode(input);
+ }
+ function packValueOf(value) {
+ return value.valueOf();
+ }
+ function packRegExp(value) {
+ value = RegExp.prototype.toString.call(value).split("/");
+ value.shift();
+ var out = [value.pop()];
+ out.unshift(value.join("/"));
+ return out;
+ }
+ function packError(value) {
+ var out = {};
+ for (var key in ERROR_COLUMNS) {
+ out[key] = value[key];
+ }
+ return out;
+ }
+ }
+});
+
+// node_modules/int64-buffer/int64-buffer.js
+var require_int64_buffer = __commonJS({
+ "node_modules/int64-buffer/int64-buffer.js"(exports2) {
+ var Uint64BE;
+ var Int64BE;
+ var Uint64LE;
+ var Int64LE;
+ !function(exports3) {
+ var UNDEFINED = "undefined";
+ var BUFFER = UNDEFINED !== typeof Buffer && Buffer;
+ var UINT8ARRAY = UNDEFINED !== typeof Uint8Array && Uint8Array;
+ var ARRAYBUFFER = UNDEFINED !== typeof ArrayBuffer && ArrayBuffer;
+ var ZERO = [0, 0, 0, 0, 0, 0, 0, 0];
+ var isArray = Array.isArray || _isArray;
+ var BIT32 = 4294967296;
+ var BIT24 = 16777216;
+ var storage;
+ Uint64BE = factory("Uint64BE", true, true);
+ Int64BE = factory("Int64BE", true, false);
+ Uint64LE = factory("Uint64LE", false, true);
+ Int64LE = factory("Int64LE", false, false);
+ function factory(name2, bigendian, unsigned) {
+ var posH = bigendian ? 0 : 4;
+ var posL = bigendian ? 4 : 0;
+ var pos0 = bigendian ? 0 : 3;
+ var pos1 = bigendian ? 1 : 2;
+ var pos2 = bigendian ? 2 : 1;
+ var pos3 = bigendian ? 3 : 0;
+ var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE;
+ var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE;
+ var proto = Int64.prototype;
+ var isName = "is" + name2;
+ var _isInt64 = "_" + isName;
+ proto.buffer = void 0;
+ proto.offset = 0;
+ proto[_isInt64] = true;
+ proto.toNumber = toNumber;
+ proto.toString = toString;
+ proto.toJSON = toNumber;
+ proto.toArray = toArray;
+ if (BUFFER)
+ proto.toBuffer = toBuffer;
+ if (UINT8ARRAY)
+ proto.toArrayBuffer = toArrayBuffer;
+ Int64[isName] = isInt64;
+ exports3[name2] = Int64;
+ return Int64;
+ function Int64(buffer, offset, value, raddix) {
+ if (!(this instanceof Int64))
+ return new Int64(buffer, offset, value, raddix);
+ return init(this, buffer, offset, value, raddix);
+ }
+ function isInt64(b) {
+ return !!(b && b[_isInt64]);
+ }
+ function init(that, buffer, offset, value, raddix) {
+ if (UINT8ARRAY && ARRAYBUFFER) {
+ if (buffer instanceof ARRAYBUFFER)
+ buffer = new UINT8ARRAY(buffer);
+ if (value instanceof ARRAYBUFFER)
+ value = new UINT8ARRAY(value);
+ }
+ if (!buffer && !offset && !value && !storage) {
+ that.buffer = newArray(ZERO, 0);
+ return;
+ }
+ if (!isValidBuffer(buffer, offset)) {
+ var _storage = storage || Array;
+ raddix = offset;
+ value = buffer;
+ offset = 0;
+ buffer = new _storage(8);
+ }
+ that.buffer = buffer;
+ that.offset = offset |= 0;
+ if (UNDEFINED === typeof value)
+ return;
+ if (typeof value === "string") {
+ fromString(buffer, offset, value, raddix || 10);
+ } else if (isValidBuffer(value, raddix)) {
+ fromArray(buffer, offset, value, raddix);
+ } else if (typeof raddix === "number") {
+ writeInt32(buffer, offset + posH, value);
+ writeInt32(buffer, offset + posL, raddix);
+ } else if (value > 0) {
+ fromPositive(buffer, offset, value);
+ } else if (value < 0) {
+ fromNegative(buffer, offset, value);
+ } else {
+ fromArray(buffer, offset, ZERO, 0);
+ }
+ }
+ function fromString(buffer, offset, str, raddix) {
+ var pos = 0;
+ var len = str.length;
+ var high = 0;
+ var low = 0;
+ if (str[0] === "-")
+ pos++;
+ var sign = pos;
+ while (pos < len) {
+ var chr = parseInt(str[pos++], raddix);
+ if (!(chr >= 0))
+ break;
+ low = low * raddix + chr;
+ high = high * raddix + Math.floor(low / BIT32);
+ low %= BIT32;
+ }
+ if (sign) {
+ high = ~high;
+ if (low) {
+ low = BIT32 - low;
+ } else {
+ high++;
+ }
+ }
+ writeInt32(buffer, offset + posH, high);
+ writeInt32(buffer, offset + posL, low);
+ }
+ function toNumber() {
+ var buffer = this.buffer;
+ var offset = this.offset;
+ var high = readInt32(buffer, offset + posH);
+ var low = readInt32(buffer, offset + posL);
+ if (!unsigned)
+ high |= 0;
+ return high ? high * BIT32 + low : low;
+ }
+ function toString(radix) {
+ var buffer = this.buffer;
+ var offset = this.offset;
+ var high = readInt32(buffer, offset + posH);
+ var low = readInt32(buffer, offset + posL);
+ var str = "";
+ var sign = !unsigned && high & 2147483648;
+ if (sign) {
+ high = ~high;
+ low = BIT32 - low;
+ }
+ radix = radix || 10;
+ while (1) {
+ var mod = high % radix * BIT32 + low;
+ high = Math.floor(high / radix);
+ low = Math.floor(mod / radix);
+ str = (mod % radix).toString(radix) + str;
+ if (!high && !low)
+ break;
+ }
+ if (sign) {
+ str = "-" + str;
+ }
+ return str;
+ }
+ function writeInt32(buffer, offset, value) {
+ buffer[offset + pos3] = value & 255;
+ value = value >> 8;
+ buffer[offset + pos2] = value & 255;
+ value = value >> 8;
+ buffer[offset + pos1] = value & 255;
+ value = value >> 8;
+ buffer[offset + pos0] = value & 255;
+ }
+ function readInt32(buffer, offset) {
+ return buffer[offset + pos0] * BIT24 + (buffer[offset + pos1] << 16) + (buffer[offset + pos2] << 8) + buffer[offset + pos3];
+ }
+ }
+ function toArray(raw) {
+ var buffer = this.buffer;
+ var offset = this.offset;
+ storage = null;
+ if (raw !== false && offset === 0 && buffer.length === 8 && isArray(buffer))
+ return buffer;
+ return newArray(buffer, offset);
+ }
+ function toBuffer(raw) {
+ var buffer = this.buffer;
+ var offset = this.offset;
+ storage = BUFFER;
+ if (raw !== false && offset === 0 && buffer.length === 8 && Buffer.isBuffer(buffer))
+ return buffer;
+ var dest = new BUFFER(8);
+ fromArray(dest, 0, buffer, offset);
+ return dest;
+ }
+ function toArrayBuffer(raw) {
+ var buffer = this.buffer;
+ var offset = this.offset;
+ var arrbuf = buffer.buffer;
+ storage = UINT8ARRAY;
+ if (raw !== false && offset === 0 && arrbuf instanceof ARRAYBUFFER && arrbuf.byteLength === 8)
+ return arrbuf;
+ var dest = new UINT8ARRAY(8);
+ fromArray(dest, 0, buffer, offset);
+ return dest.buffer;
+ }
+ function isValidBuffer(buffer, offset) {
+ var len = buffer && buffer.length;
+ offset |= 0;
+ return len && offset + 8 <= len && typeof buffer[offset] !== "string";
+ }
+ function fromArray(destbuf, destoff, srcbuf, srcoff) {
+ destoff |= 0;
+ srcoff |= 0;
+ for (var i = 0; i < 8; i++) {
+ destbuf[destoff++] = srcbuf[srcoff++] & 255;
+ }
+ }
+ function newArray(buffer, offset) {
+ return Array.prototype.slice.call(buffer, offset, offset + 8);
+ }
+ function fromPositiveBE(buffer, offset, value) {
+ var pos = offset + 8;
+ while (pos > offset) {
+ buffer[--pos] = value & 255;
+ value /= 256;
+ }
+ }
+ function fromNegativeBE(buffer, offset, value) {
+ var pos = offset + 8;
+ value++;
+ while (pos > offset) {
+ buffer[--pos] = -value & 255 ^ 255;
+ value /= 256;
+ }
+ }
+ function fromPositiveLE(buffer, offset, value) {
+ var end = offset + 8;
+ while (offset < end) {
+ buffer[offset++] = value & 255;
+ value /= 256;
+ }
+ }
+ function fromNegativeLE(buffer, offset, value) {
+ var end = offset + 8;
+ value++;
+ while (offset < end) {
+ buffer[offset++] = -value & 255 ^ 255;
+ value /= 256;
+ }
+ }
+ function _isArray(val) {
+ return !!val && Object.prototype.toString.call(val) == "[object Array]";
+ }
+ }(typeof exports2 === "object" && typeof exports2.nodeName !== "string" ? exports2 : exports2 || {});
+ }
+});
+
+// node_modules/ieee754/index.js
+var require_ieee754 = __commonJS({
+ "node_modules/ieee754/index.js"(exports2) {
+ exports2.read = function(buffer, offset, isLE, mLen, nBytes) {
+ var e, m;
+ var eLen = nBytes * 8 - mLen - 1;
+ var eMax = (1 << eLen) - 1;
+ var eBias = eMax >> 1;
+ var nBits = -7;
+ var i = isLE ? nBytes - 1 : 0;
+ var d = isLE ? -1 : 1;
+ var s = buffer[offset + i];
+ i += d;
+ e = s & (1 << -nBits) - 1;
+ s >>= -nBits;
+ nBits += eLen;
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {
+ }
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {
+ }
+ if (e === 0) {
+ e = 1 - eBias;
+ } else if (e === eMax) {
+ return m ? NaN : (s ? -1 : 1) * Infinity;
+ } else {
+ m = m + Math.pow(2, mLen);
+ e = e - eBias;
+ }
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
+ };
+ exports2.write = function(buffer, value, offset, isLE, mLen, nBytes) {
+ var e, m, c;
+ var eLen = nBytes * 8 - mLen - 1;
+ var eMax = (1 << eLen) - 1;
+ var eBias = eMax >> 1;
+ var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
+ var i = isLE ? 0 : nBytes - 1;
+ var d = isLE ? 1 : -1;
+ var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
+ value = Math.abs(value);
+ if (isNaN(value) || value === Infinity) {
+ m = isNaN(value) ? 1 : 0;
+ e = eMax;
+ } else {
+ e = Math.floor(Math.log(value) / Math.LN2);
+ if (value * (c = Math.pow(2, -e)) < 1) {
+ e--;
+ c *= 2;
+ }
+ if (e + eBias >= 1) {
+ value += rt / c;
+ } else {
+ value += rt * Math.pow(2, 1 - eBias);
+ }
+ if (value * c >= 2) {
+ e++;
+ c /= 2;
+ }
+ if (e + eBias >= eMax) {
+ m = 0;
+ e = eMax;
+ } else if (e + eBias >= 1) {
+ m = (value * c - 1) * Math.pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
+ e = 0;
+ }
+ }
+ for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {
+ }
+ e = e << mLen | m;
+ eLen += mLen;
+ for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {
+ }
+ buffer[offset + i - d] |= s * 128;
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/write-uint8.js
+var require_write_uint8 = __commonJS({
+ "node_modules/msgpack-lite/lib/write-uint8.js"(exports2) {
+ var constant = exports2.uint8 = new Array(256);
+ for (var i = 0; i <= 255; i++) {
+ constant[i] = write0(i);
+ }
+ function write0(type) {
+ return function(encoder) {
+ var offset = encoder.reserve(1);
+ encoder.buffer[offset] = type;
+ };
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/write-token.js
+var require_write_token = __commonJS({
+ "node_modules/msgpack-lite/lib/write-token.js"(exports2) {
+ var ieee754 = require_ieee754();
+ var Int64Buffer = require_int64_buffer();
+ var Uint64BE = Int64Buffer.Uint64BE;
+ var Int64BE = Int64Buffer.Int64BE;
+ var uint8 = require_write_uint8().uint8;
+ var Bufferish = require_bufferish();
+ var Buffer4 = Bufferish.global;
+ var IS_BUFFER_SHIM = Bufferish.hasBuffer && "TYPED_ARRAY_SUPPORT" in Buffer4;
+ var NO_TYPED_ARRAY = IS_BUFFER_SHIM && !Buffer4.TYPED_ARRAY_SUPPORT;
+ var Buffer_prototype = Bufferish.hasBuffer && Buffer4.prototype || {};
+ exports2.getWriteToken = getWriteToken;
+ function getWriteToken(options) {
+ if (options && options.uint8array) {
+ return init_uint8array();
+ } else if (NO_TYPED_ARRAY || Bufferish.hasBuffer && options && options.safe) {
+ return init_safe();
+ } else {
+ return init_token();
+ }
+ }
+ function init_uint8array() {
+ var token = init_token();
+ token[202] = writeN(202, 4, writeFloatBE);
+ token[203] = writeN(203, 8, writeDoubleBE);
+ return token;
+ }
+ function init_token() {
+ var token = uint8.slice();
+ token[196] = write1(196);
+ token[197] = write2(197);
+ token[198] = write4(198);
+ token[199] = write1(199);
+ token[200] = write2(200);
+ token[201] = write4(201);
+ token[202] = writeN(202, 4, Buffer_prototype.writeFloatBE || writeFloatBE, true);
+ token[203] = writeN(203, 8, Buffer_prototype.writeDoubleBE || writeDoubleBE, true);
+ token[204] = write1(204);
+ token[205] = write2(205);
+ token[206] = write4(206);
+ token[207] = writeN(207, 8, writeUInt64BE);
+ token[208] = write1(208);
+ token[209] = write2(209);
+ token[210] = write4(210);
+ token[211] = writeN(211, 8, writeInt64BE);
+ token[217] = write1(217);
+ token[218] = write2(218);
+ token[219] = write4(219);
+ token[220] = write2(220);
+ token[221] = write4(221);
+ token[222] = write2(222);
+ token[223] = write4(223);
+ return token;
+ }
+ function init_safe() {
+ var token = uint8.slice();
+ token[196] = writeN(196, 1, Buffer4.prototype.writeUInt8);
+ token[197] = writeN(197, 2, Buffer4.prototype.writeUInt16BE);
+ token[198] = writeN(198, 4, Buffer4.prototype.writeUInt32BE);
+ token[199] = writeN(199, 1, Buffer4.prototype.writeUInt8);
+ token[200] = writeN(200, 2, Buffer4.prototype.writeUInt16BE);
+ token[201] = writeN(201, 4, Buffer4.prototype.writeUInt32BE);
+ token[202] = writeN(202, 4, Buffer4.prototype.writeFloatBE);
+ token[203] = writeN(203, 8, Buffer4.prototype.writeDoubleBE);
+ token[204] = writeN(204, 1, Buffer4.prototype.writeUInt8);
+ token[205] = writeN(205, 2, Buffer4.prototype.writeUInt16BE);
+ token[206] = writeN(206, 4, Buffer4.prototype.writeUInt32BE);
+ token[207] = writeN(207, 8, writeUInt64BE);
+ token[208] = writeN(208, 1, Buffer4.prototype.writeInt8);
+ token[209] = writeN(209, 2, Buffer4.prototype.writeInt16BE);
+ token[210] = writeN(210, 4, Buffer4.prototype.writeInt32BE);
+ token[211] = writeN(211, 8, writeInt64BE);
+ token[217] = writeN(217, 1, Buffer4.prototype.writeUInt8);
+ token[218] = writeN(218, 2, Buffer4.prototype.writeUInt16BE);
+ token[219] = writeN(219, 4, Buffer4.prototype.writeUInt32BE);
+ token[220] = writeN(220, 2, Buffer4.prototype.writeUInt16BE);
+ token[221] = writeN(221, 4, Buffer4.prototype.writeUInt32BE);
+ token[222] = writeN(222, 2, Buffer4.prototype.writeUInt16BE);
+ token[223] = writeN(223, 4, Buffer4.prototype.writeUInt32BE);
+ return token;
+ }
+ function write1(type) {
+ return function(encoder, value) {
+ var offset = encoder.reserve(2);
+ var buffer = encoder.buffer;
+ buffer[offset++] = type;
+ buffer[offset] = value;
+ };
+ }
+ function write2(type) {
+ return function(encoder, value) {
+ var offset = encoder.reserve(3);
+ var buffer = encoder.buffer;
+ buffer[offset++] = type;
+ buffer[offset++] = value >>> 8;
+ buffer[offset] = value;
+ };
+ }
+ function write4(type) {
+ return function(encoder, value) {
+ var offset = encoder.reserve(5);
+ var buffer = encoder.buffer;
+ buffer[offset++] = type;
+ buffer[offset++] = value >>> 24;
+ buffer[offset++] = value >>> 16;
+ buffer[offset++] = value >>> 8;
+ buffer[offset] = value;
+ };
+ }
+ function writeN(type, len, method, noAssert) {
+ return function(encoder, value) {
+ var offset = encoder.reserve(len + 1);
+ encoder.buffer[offset++] = type;
+ method.call(encoder.buffer, value, offset, noAssert);
+ };
+ }
+ function writeUInt64BE(value, offset) {
+ new Uint64BE(this, offset, value);
+ }
+ function writeInt64BE(value, offset) {
+ new Int64BE(this, offset, value);
+ }
+ function writeFloatBE(value, offset) {
+ ieee754.write(this, value, offset, false, 23, 4);
+ }
+ function writeDoubleBE(value, offset) {
+ ieee754.write(this, value, offset, false, 52, 8);
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/write-type.js
+var require_write_type = __commonJS({
+ "node_modules/msgpack-lite/lib/write-type.js"(exports2) {
+ var IS_ARRAY = require_isarray();
+ var Int64Buffer = require_int64_buffer();
+ var Uint64BE = Int64Buffer.Uint64BE;
+ var Int64BE = Int64Buffer.Int64BE;
+ var Bufferish = require_bufferish();
+ var BufferProto = require_bufferish_proto();
+ var WriteToken = require_write_token();
+ var uint8 = require_write_uint8().uint8;
+ var ExtBuffer = require_ext_buffer().ExtBuffer;
+ var HAS_UINT8ARRAY = typeof Uint8Array !== "undefined";
+ var HAS_MAP = typeof Map !== "undefined";
+ var extmap = [];
+ extmap[1] = 212;
+ extmap[2] = 213;
+ extmap[4] = 214;
+ extmap[8] = 215;
+ extmap[16] = 216;
+ exports2.getWriteType = getWriteType;
+ function getWriteType(options) {
+ var token = WriteToken.getWriteToken(options);
+ var useraw = options && options.useraw;
+ var binarraybuffer = HAS_UINT8ARRAY && options && options.binarraybuffer;
+ var isBuffer = binarraybuffer ? Bufferish.isArrayBuffer : Bufferish.isBuffer;
+ var bin = binarraybuffer ? bin_arraybuffer : bin_buffer;
+ var usemap = HAS_MAP && options && options.usemap;
+ var map = usemap ? map_to_map : obj_to_map;
+ var writeType = {
+ "boolean": bool,
+ "function": nil,
+ "number": number2,
+ "object": useraw ? object_raw : object,
+ "string": _string(useraw ? raw_head_size : str_head_size),
+ "symbol": nil,
+ "undefined": nil
+ };
+ return writeType;
+ function bool(encoder, value) {
+ var type = value ? 195 : 194;
+ token[type](encoder, value);
+ }
+ function number2(encoder, value) {
+ var ivalue = value | 0;
+ var type;
+ if (value !== ivalue) {
+ type = 203;
+ token[type](encoder, value);
+ return;
+ } else if (-32 <= ivalue && ivalue <= 127) {
+ type = ivalue & 255;
+ } else if (0 <= ivalue) {
+ type = ivalue <= 255 ? 204 : ivalue <= 65535 ? 205 : 206;
+ } else {
+ type = -128 <= ivalue ? 208 : -32768 <= ivalue ? 209 : 210;
+ }
+ token[type](encoder, ivalue);
+ }
+ function uint64(encoder, value) {
+ var type = 207;
+ token[type](encoder, value.toArray());
+ }
+ function int64(encoder, value) {
+ var type = 211;
+ token[type](encoder, value.toArray());
+ }
+ function str_head_size(length) {
+ return length < 32 ? 1 : length <= 255 ? 2 : length <= 65535 ? 3 : 5;
+ }
+ function raw_head_size(length) {
+ return length < 32 ? 1 : length <= 65535 ? 3 : 5;
+ }
+ function _string(head_size) {
+ return string2;
+ function string2(encoder, value) {
+ var length = value.length;
+ var maxsize = 5 + length * 3;
+ encoder.offset = encoder.reserve(maxsize);
+ var buffer = encoder.buffer;
+ var expected = head_size(length);
+ var start = encoder.offset + expected;
+ length = BufferProto.write.call(buffer, value, start);
+ var actual = head_size(length);
+ if (expected !== actual) {
+ var targetStart = start + actual - expected;
+ var end = start + length;
+ BufferProto.copy.call(buffer, buffer, targetStart, start, end);
+ }
+ var type = actual === 1 ? 160 + length : actual <= 3 ? 215 + actual : 219;
+ token[type](encoder, length);
+ encoder.offset += length;
+ }
+ }
+ function object(encoder, value) {
+ if (value === null)
+ return nil(encoder, value);
+ if (isBuffer(value))
+ return bin(encoder, value);
+ if (IS_ARRAY(value))
+ return array(encoder, value);
+ if (Uint64BE.isUint64BE(value))
+ return uint64(encoder, value);
+ if (Int64BE.isInt64BE(value))
+ return int64(encoder, value);
+ var packer = encoder.codec.getExtPacker(value);
+ if (packer)
+ value = packer(value);
+ if (value instanceof ExtBuffer)
+ return ext(encoder, value);
+ map(encoder, value);
+ }
+ function object_raw(encoder, value) {
+ if (isBuffer(value))
+ return raw(encoder, value);
+ object(encoder, value);
+ }
+ function nil(encoder, value) {
+ var type = 192;
+ token[type](encoder, value);
+ }
+ function array(encoder, value) {
+ var length = value.length;
+ var type = length < 16 ? 144 + length : length <= 65535 ? 220 : 221;
+ token[type](encoder, length);
+ var encode = encoder.codec.encode;
+ for (var i = 0; i < length; i++) {
+ encode(encoder, value[i]);
+ }
+ }
+ function bin_buffer(encoder, value) {
+ var length = value.length;
+ var type = length < 255 ? 196 : length <= 65535 ? 197 : 198;
+ token[type](encoder, length);
+ encoder.send(value);
+ }
+ function bin_arraybuffer(encoder, value) {
+ bin_buffer(encoder, new Uint8Array(value));
+ }
+ function ext(encoder, value) {
+ var buffer = value.buffer;
+ var length = buffer.length;
+ var type = extmap[length] || (length < 255 ? 199 : length <= 65535 ? 200 : 201);
+ token[type](encoder, length);
+ uint8[value.type](encoder);
+ encoder.send(buffer);
+ }
+ function obj_to_map(encoder, value) {
+ var keys = Object.keys(value);
+ var length = keys.length;
+ var type = length < 16 ? 128 + length : length <= 65535 ? 222 : 223;
+ token[type](encoder, length);
+ var encode = encoder.codec.encode;
+ keys.forEach(function(key) {
+ encode(encoder, key);
+ encode(encoder, value[key]);
+ });
+ }
+ function map_to_map(encoder, value) {
+ if (!(value instanceof Map))
+ return obj_to_map(encoder, value);
+ var length = value.size;
+ var type = length < 16 ? 128 + length : length <= 65535 ? 222 : 223;
+ token[type](encoder, length);
+ var encode = encoder.codec.encode;
+ value.forEach(function(val, key, m) {
+ encode(encoder, key);
+ encode(encoder, val);
+ });
+ }
+ function raw(encoder, value) {
+ var length = value.length;
+ var type = length < 32 ? 160 + length : length <= 65535 ? 218 : 219;
+ token[type](encoder, length);
+ encoder.send(value);
+ }
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/codec-base.js
+var require_codec_base = __commonJS({
+ "node_modules/msgpack-lite/lib/codec-base.js"(exports2) {
+ var IS_ARRAY = require_isarray();
+ exports2.createCodec = createCodec;
+ exports2.install = install;
+ exports2.filter = filter;
+ var Bufferish = require_bufferish();
+ function Codec(options) {
+ if (!(this instanceof Codec))
+ return new Codec(options);
+ this.options = options;
+ this.init();
+ }
+ Codec.prototype.init = function() {
+ var options = this.options;
+ if (options && options.uint8array) {
+ this.bufferish = Bufferish.Uint8Array;
+ }
+ return this;
+ };
+ function install(props) {
+ for (var key in props) {
+ Codec.prototype[key] = add(Codec.prototype[key], props[key]);
+ }
+ }
+ function add(a, b) {
+ return a && b ? ab : a || b;
+ function ab() {
+ a.apply(this, arguments);
+ return b.apply(this, arguments);
+ }
+ }
+ function join2(filters) {
+ filters = filters.slice();
+ return function(value) {
+ return filters.reduce(iterator, value);
+ };
+ function iterator(value, filter2) {
+ return filter2(value);
+ }
+ }
+ function filter(filter2) {
+ return IS_ARRAY(filter2) ? join2(filter2) : filter2;
+ }
+ function createCodec(options) {
+ return new Codec(options);
+ }
+ exports2.preset = createCodec({ preset: true });
+ }
+});
+
+// node_modules/msgpack-lite/lib/write-core.js
+var require_write_core = __commonJS({
+ "node_modules/msgpack-lite/lib/write-core.js"(exports2) {
+ var ExtBuffer = require_ext_buffer().ExtBuffer;
+ var ExtPacker = require_ext_packer();
+ var WriteType = require_write_type();
+ var CodecBase = require_codec_base();
+ CodecBase.install({
+ addExtPacker,
+ getExtPacker,
+ init
+ });
+ exports2.preset = init.call(CodecBase.preset);
+ function getEncoder(options) {
+ var writeType = WriteType.getWriteType(options);
+ return encode;
+ function encode(encoder, value) {
+ var func2 = writeType[typeof value];
+ if (!func2)
+ throw new Error('Unsupported type "' + typeof value + '": ' + value);
+ func2(encoder, value);
+ }
+ }
+ function init() {
+ var options = this.options;
+ this.encode = getEncoder(options);
+ if (options && options.preset) {
+ ExtPacker.setExtPackers(this);
+ }
+ return this;
+ }
+ function addExtPacker(etype, Class, packer) {
+ packer = CodecBase.filter(packer);
+ var name2 = Class.name;
+ if (name2 && name2 !== "Object") {
+ var packers = this.extPackers || (this.extPackers = {});
+ packers[name2] = extPacker;
+ } else {
+ var list2 = this.extEncoderList || (this.extEncoderList = []);
+ list2.unshift([Class, extPacker]);
+ }
+ function extPacker(value) {
+ if (packer)
+ value = packer(value);
+ return new ExtBuffer(value, etype);
+ }
+ }
+ function getExtPacker(value) {
+ var packers = this.extPackers || (this.extPackers = {});
+ var c = value.constructor;
+ var e = c && c.name && packers[c.name];
+ if (e)
+ return e;
+ var list2 = this.extEncoderList || (this.extEncoderList = []);
+ var len = list2.length;
+ for (var i = 0; i < len; i++) {
+ var pair = list2[i];
+ if (c === pair[0])
+ return pair[1];
+ }
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/flex-buffer.js
+var require_flex_buffer = __commonJS({
+ "node_modules/msgpack-lite/lib/flex-buffer.js"(exports2) {
+ exports2.FlexDecoder = FlexDecoder;
+ exports2.FlexEncoder = FlexEncoder;
+ var Bufferish = require_bufferish();
+ var MIN_BUFFER_SIZE = 2048;
+ var MAX_BUFFER_SIZE = 65536;
+ var BUFFER_SHORTAGE = "BUFFER_SHORTAGE";
+ function FlexDecoder() {
+ if (!(this instanceof FlexDecoder))
+ return new FlexDecoder();
+ }
+ function FlexEncoder() {
+ if (!(this instanceof FlexEncoder))
+ return new FlexEncoder();
+ }
+ FlexDecoder.mixin = mixinFactory(getDecoderMethods());
+ FlexDecoder.mixin(FlexDecoder.prototype);
+ FlexEncoder.mixin = mixinFactory(getEncoderMethods());
+ FlexEncoder.mixin(FlexEncoder.prototype);
+ function getDecoderMethods() {
+ return {
+ bufferish: Bufferish,
+ write: write2,
+ fetch: fetch2,
+ flush,
+ push,
+ pull,
+ read,
+ reserve,
+ offset: 0
+ };
+ function write2(chunk) {
+ var prev = this.offset ? Bufferish.prototype.slice.call(this.buffer, this.offset) : this.buffer;
+ this.buffer = prev ? chunk ? this.bufferish.concat([prev, chunk]) : prev : chunk;
+ this.offset = 0;
+ }
+ function flush() {
+ while (this.offset < this.buffer.length) {
+ var start = this.offset;
+ var value;
+ try {
+ value = this.fetch();
+ } catch (e) {
+ if (e && e.message != BUFFER_SHORTAGE)
+ throw e;
+ this.offset = start;
+ break;
+ }
+ this.push(value);
+ }
+ }
+ function reserve(length) {
+ var start = this.offset;
+ var end = start + length;
+ if (end > this.buffer.length)
+ throw new Error(BUFFER_SHORTAGE);
+ this.offset = end;
+ return start;
+ }
+ }
+ function getEncoderMethods() {
+ return {
+ bufferish: Bufferish,
+ write,
+ fetch: fetch3,
+ flush,
+ push,
+ pull: pull2,
+ read,
+ reserve,
+ send,
+ maxBufferSize: MAX_BUFFER_SIZE,
+ minBufferSize: MIN_BUFFER_SIZE,
+ offset: 0,
+ start: 0
+ };
+ function fetch3() {
+ var start = this.start;
+ if (start < this.offset) {
+ var end = this.start = this.offset;
+ return Bufferish.prototype.slice.call(this.buffer, start, end);
+ }
+ }
+ function flush() {
+ while (this.start < this.offset) {
+ var value = this.fetch();
+ if (value)
+ this.push(value);
+ }
+ }
+ function pull2() {
+ var buffers = this.buffers || (this.buffers = []);
+ var chunk = buffers.length > 1 ? this.bufferish.concat(buffers) : buffers[0];
+ buffers.length = 0;
+ return chunk;
+ }
+ function reserve(length) {
+ var req = length | 0;
+ if (this.buffer) {
+ var size = this.buffer.length;
+ var start = this.offset | 0;
+ var end = start + req;
+ if (end < size) {
+ this.offset = end;
+ return start;
+ }
+ this.flush();
+ length = Math.max(length, Math.min(size * 2, this.maxBufferSize));
+ }
+ length = Math.max(length, this.minBufferSize);
+ this.buffer = this.bufferish.alloc(length);
+ this.start = 0;
+ this.offset = req;
+ return 0;
+ }
+ function send(buffer) {
+ var length = buffer.length;
+ if (length > this.minBufferSize) {
+ this.flush();
+ this.push(buffer);
+ } else {
+ var offset = this.reserve(length);
+ Bufferish.prototype.copy.call(buffer, this.buffer, offset);
+ }
+ }
+ }
+ function write() {
+ throw new Error("method not implemented: write()");
+ }
+ function fetch2() {
+ throw new Error("method not implemented: fetch()");
+ }
+ function read() {
+ var length = this.buffers && this.buffers.length;
+ if (!length)
+ return this.fetch();
+ this.flush();
+ return this.pull();
+ }
+ function push(chunk) {
+ var buffers = this.buffers || (this.buffers = []);
+ buffers.push(chunk);
+ }
+ function pull() {
+ var buffers = this.buffers || (this.buffers = []);
+ return buffers.shift();
+ }
+ function mixinFactory(source) {
+ return mixin2;
+ function mixin2(target) {
+ for (var key in source) {
+ target[key] = source[key];
+ }
+ return target;
+ }
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/encode-buffer.js
+var require_encode_buffer = __commonJS({
+ "node_modules/msgpack-lite/lib/encode-buffer.js"(exports2) {
+ exports2.EncodeBuffer = EncodeBuffer;
+ var preset = require_write_core().preset;
+ var FlexEncoder = require_flex_buffer().FlexEncoder;
+ FlexEncoder.mixin(EncodeBuffer.prototype);
+ function EncodeBuffer(options) {
+ if (!(this instanceof EncodeBuffer))
+ return new EncodeBuffer(options);
+ if (options) {
+ this.options = options;
+ if (options.codec) {
+ var codec = this.codec = options.codec;
+ if (codec.bufferish)
+ this.bufferish = codec.bufferish;
+ }
+ }
+ }
+ EncodeBuffer.prototype.codec = preset;
+ EncodeBuffer.prototype.write = function(input) {
+ this.codec.encode(this, input);
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/encode.js
+var require_encode = __commonJS({
+ "node_modules/msgpack-lite/lib/encode.js"(exports2) {
+ exports2.encode = encode;
+ var EncodeBuffer = require_encode_buffer().EncodeBuffer;
+ function encode(input, options) {
+ var encoder = new EncodeBuffer(options);
+ encoder.write(input);
+ return encoder.read();
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/ext-unpacker.js
+var require_ext_unpacker = __commonJS({
+ "node_modules/msgpack-lite/lib/ext-unpacker.js"(exports2) {
+ exports2.setExtUnpackers = setExtUnpackers;
+ var Bufferish = require_bufferish();
+ var Buffer4 = Bufferish.global;
+ var _decode;
+ var ERROR_COLUMNS = { name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1 };
+ function setExtUnpackers(codec) {
+ codec.addExtUnpacker(14, [decode, unpackError(Error)]);
+ codec.addExtUnpacker(1, [decode, unpackError(EvalError)]);
+ codec.addExtUnpacker(2, [decode, unpackError(RangeError)]);
+ codec.addExtUnpacker(3, [decode, unpackError(ReferenceError)]);
+ codec.addExtUnpacker(4, [decode, unpackError(SyntaxError)]);
+ codec.addExtUnpacker(5, [decode, unpackError(TypeError)]);
+ codec.addExtUnpacker(6, [decode, unpackError(URIError)]);
+ codec.addExtUnpacker(10, [decode, unpackRegExp]);
+ codec.addExtUnpacker(11, [decode, unpackClass(Boolean)]);
+ codec.addExtUnpacker(12, [decode, unpackClass(String)]);
+ codec.addExtUnpacker(13, [decode, unpackClass(Date)]);
+ codec.addExtUnpacker(15, [decode, unpackClass(Number)]);
+ if (typeof Uint8Array !== "undefined") {
+ codec.addExtUnpacker(17, unpackClass(Int8Array));
+ codec.addExtUnpacker(18, unpackClass(Uint8Array));
+ codec.addExtUnpacker(19, [unpackArrayBuffer, unpackClass(Int16Array)]);
+ codec.addExtUnpacker(20, [unpackArrayBuffer, unpackClass(Uint16Array)]);
+ codec.addExtUnpacker(21, [unpackArrayBuffer, unpackClass(Int32Array)]);
+ codec.addExtUnpacker(22, [unpackArrayBuffer, unpackClass(Uint32Array)]);
+ codec.addExtUnpacker(23, [unpackArrayBuffer, unpackClass(Float32Array)]);
+ if (typeof Float64Array !== "undefined") {
+ codec.addExtUnpacker(24, [unpackArrayBuffer, unpackClass(Float64Array)]);
+ }
+ if (typeof Uint8ClampedArray !== "undefined") {
+ codec.addExtUnpacker(25, unpackClass(Uint8ClampedArray));
+ }
+ codec.addExtUnpacker(26, unpackArrayBuffer);
+ codec.addExtUnpacker(29, [unpackArrayBuffer, unpackClass(DataView)]);
+ }
+ if (Bufferish.hasBuffer) {
+ codec.addExtUnpacker(27, unpackClass(Buffer4));
+ }
+ }
+ function decode(input) {
+ if (!_decode)
+ _decode = require_decode().decode;
+ return _decode(input);
+ }
+ function unpackRegExp(value) {
+ return RegExp.apply(null, value);
+ }
+ function unpackError(Class) {
+ return function(value) {
+ var out = new Class();
+ for (var key in ERROR_COLUMNS) {
+ out[key] = value[key];
+ }
+ return out;
+ };
+ }
+ function unpackClass(Class) {
+ return function(value) {
+ return new Class(value);
+ };
+ }
+ function unpackArrayBuffer(value) {
+ return new Uint8Array(value).buffer;
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/read-format.js
+var require_read_format = __commonJS({
+ "node_modules/msgpack-lite/lib/read-format.js"(exports2) {
+ var ieee754 = require_ieee754();
+ var Int64Buffer = require_int64_buffer();
+ var Uint64BE = Int64Buffer.Uint64BE;
+ var Int64BE = Int64Buffer.Int64BE;
+ exports2.getReadFormat = getReadFormat;
+ exports2.readUint8 = uint8;
+ var Bufferish = require_bufferish();
+ var BufferProto = require_bufferish_proto();
+ var HAS_MAP = typeof Map !== "undefined";
+ var NO_ASSERT = true;
+ function getReadFormat(options) {
+ var binarraybuffer = Bufferish.hasArrayBuffer && options && options.binarraybuffer;
+ var int64 = options && options.int64;
+ var usemap = HAS_MAP && options && options.usemap;
+ var readFormat = {
+ map: usemap ? map_to_map : map_to_obj,
+ array,
+ str,
+ bin: binarraybuffer ? bin_arraybuffer : bin_buffer,
+ ext,
+ uint8,
+ uint16,
+ uint32,
+ uint64: read(8, int64 ? readUInt64BE_int64 : readUInt64BE),
+ int8,
+ int16,
+ int32,
+ int64: read(8, int64 ? readInt64BE_int64 : readInt64BE),
+ float32: read(4, readFloatBE),
+ float64: read(8, readDoubleBE)
+ };
+ return readFormat;
+ }
+ function map_to_obj(decoder, len) {
+ var value = {};
+ var i;
+ var k = new Array(len);
+ var v = new Array(len);
+ var decode = decoder.codec.decode;
+ for (i = 0; i < len; i++) {
+ k[i] = decode(decoder);
+ v[i] = decode(decoder);
+ }
+ for (i = 0; i < len; i++) {
+ value[k[i]] = v[i];
+ }
+ return value;
+ }
+ function map_to_map(decoder, len) {
+ var value = new Map();
+ var i;
+ var k = new Array(len);
+ var v = new Array(len);
+ var decode = decoder.codec.decode;
+ for (i = 0; i < len; i++) {
+ k[i] = decode(decoder);
+ v[i] = decode(decoder);
+ }
+ for (i = 0; i < len; i++) {
+ value.set(k[i], v[i]);
+ }
+ return value;
+ }
+ function array(decoder, len) {
+ var value = new Array(len);
+ var decode = decoder.codec.decode;
+ for (var i = 0; i < len; i++) {
+ value[i] = decode(decoder);
+ }
+ return value;
+ }
+ function str(decoder, len) {
+ var start = decoder.reserve(len);
+ var end = start + len;
+ return BufferProto.toString.call(decoder.buffer, "utf-8", start, end);
+ }
+ function bin_buffer(decoder, len) {
+ var start = decoder.reserve(len);
+ var end = start + len;
+ var buf = BufferProto.slice.call(decoder.buffer, start, end);
+ return Bufferish.from(buf);
+ }
+ function bin_arraybuffer(decoder, len) {
+ var start = decoder.reserve(len);
+ var end = start + len;
+ var buf = BufferProto.slice.call(decoder.buffer, start, end);
+ return Bufferish.Uint8Array.from(buf).buffer;
+ }
+ function ext(decoder, len) {
+ var start = decoder.reserve(len + 1);
+ var type = decoder.buffer[start++];
+ var end = start + len;
+ var unpack = decoder.codec.getExtUnpacker(type);
+ if (!unpack)
+ throw new Error("Invalid ext type: " + (type ? "0x" + type.toString(16) : type));
+ var buf = BufferProto.slice.call(decoder.buffer, start, end);
+ return unpack(buf);
+ }
+ function uint8(decoder) {
+ var start = decoder.reserve(1);
+ return decoder.buffer[start];
+ }
+ function int8(decoder) {
+ var start = decoder.reserve(1);
+ var value = decoder.buffer[start];
+ return value & 128 ? value - 256 : value;
+ }
+ function uint16(decoder) {
+ var start = decoder.reserve(2);
+ var buffer = decoder.buffer;
+ return buffer[start++] << 8 | buffer[start];
+ }
+ function int16(decoder) {
+ var start = decoder.reserve(2);
+ var buffer = decoder.buffer;
+ var value = buffer[start++] << 8 | buffer[start];
+ return value & 32768 ? value - 65536 : value;
+ }
+ function uint32(decoder) {
+ var start = decoder.reserve(4);
+ var buffer = decoder.buffer;
+ return buffer[start++] * 16777216 + (buffer[start++] << 16) + (buffer[start++] << 8) + buffer[start];
+ }
+ function int32(decoder) {
+ var start = decoder.reserve(4);
+ var buffer = decoder.buffer;
+ return buffer[start++] << 24 | buffer[start++] << 16 | buffer[start++] << 8 | buffer[start];
+ }
+ function read(len, method) {
+ return function(decoder) {
+ var start = decoder.reserve(len);
+ return method.call(decoder.buffer, start, NO_ASSERT);
+ };
+ }
+ function readUInt64BE(start) {
+ return new Uint64BE(this, start).toNumber();
+ }
+ function readInt64BE(start) {
+ return new Int64BE(this, start).toNumber();
+ }
+ function readUInt64BE_int64(start) {
+ return new Uint64BE(this, start);
+ }
+ function readInt64BE_int64(start) {
+ return new Int64BE(this, start);
+ }
+ function readFloatBE(start) {
+ return ieee754.read(this, start, false, 23, 4);
+ }
+ function readDoubleBE(start) {
+ return ieee754.read(this, start, false, 52, 8);
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/read-token.js
+var require_read_token = __commonJS({
+ "node_modules/msgpack-lite/lib/read-token.js"(exports2) {
+ var ReadFormat = require_read_format();
+ exports2.getReadToken = getReadToken;
+ function getReadToken(options) {
+ var format2 = ReadFormat.getReadFormat(options);
+ if (options && options.useraw) {
+ return init_useraw(format2);
+ } else {
+ return init_token(format2);
+ }
+ }
+ function init_token(format2) {
+ var i;
+ var token = new Array(256);
+ for (i = 0; i <= 127; i++) {
+ token[i] = constant(i);
+ }
+ for (i = 128; i <= 143; i++) {
+ token[i] = fix(i - 128, format2.map);
+ }
+ for (i = 144; i <= 159; i++) {
+ token[i] = fix(i - 144, format2.array);
+ }
+ for (i = 160; i <= 191; i++) {
+ token[i] = fix(i - 160, format2.str);
+ }
+ token[192] = constant(null);
+ token[193] = null;
+ token[194] = constant(false);
+ token[195] = constant(true);
+ token[196] = flex(format2.uint8, format2.bin);
+ token[197] = flex(format2.uint16, format2.bin);
+ token[198] = flex(format2.uint32, format2.bin);
+ token[199] = flex(format2.uint8, format2.ext);
+ token[200] = flex(format2.uint16, format2.ext);
+ token[201] = flex(format2.uint32, format2.ext);
+ token[202] = format2.float32;
+ token[203] = format2.float64;
+ token[204] = format2.uint8;
+ token[205] = format2.uint16;
+ token[206] = format2.uint32;
+ token[207] = format2.uint64;
+ token[208] = format2.int8;
+ token[209] = format2.int16;
+ token[210] = format2.int32;
+ token[211] = format2.int64;
+ token[212] = fix(1, format2.ext);
+ token[213] = fix(2, format2.ext);
+ token[214] = fix(4, format2.ext);
+ token[215] = fix(8, format2.ext);
+ token[216] = fix(16, format2.ext);
+ token[217] = flex(format2.uint8, format2.str);
+ token[218] = flex(format2.uint16, format2.str);
+ token[219] = flex(format2.uint32, format2.str);
+ token[220] = flex(format2.uint16, format2.array);
+ token[221] = flex(format2.uint32, format2.array);
+ token[222] = flex(format2.uint16, format2.map);
+ token[223] = flex(format2.uint32, format2.map);
+ for (i = 224; i <= 255; i++) {
+ token[i] = constant(i - 256);
+ }
+ return token;
+ }
+ function init_useraw(format2) {
+ var i;
+ var token = init_token(format2).slice();
+ token[217] = token[196];
+ token[218] = token[197];
+ token[219] = token[198];
+ for (i = 160; i <= 191; i++) {
+ token[i] = fix(i - 160, format2.bin);
+ }
+ return token;
+ }
+ function constant(value) {
+ return function() {
+ return value;
+ };
+ }
+ function flex(lenFunc, decodeFunc) {
+ return function(decoder) {
+ var len = lenFunc(decoder);
+ return decodeFunc(decoder, len);
+ };
+ }
+ function fix(len, method) {
+ return function(decoder) {
+ return method(decoder, len);
+ };
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/read-core.js
+var require_read_core = __commonJS({
+ "node_modules/msgpack-lite/lib/read-core.js"(exports2) {
+ var ExtBuffer = require_ext_buffer().ExtBuffer;
+ var ExtUnpacker = require_ext_unpacker();
+ var readUint8 = require_read_format().readUint8;
+ var ReadToken = require_read_token();
+ var CodecBase = require_codec_base();
+ CodecBase.install({
+ addExtUnpacker,
+ getExtUnpacker,
+ init
+ });
+ exports2.preset = init.call(CodecBase.preset);
+ function getDecoder(options) {
+ var readToken = ReadToken.getReadToken(options);
+ return decode;
+ function decode(decoder) {
+ var type = readUint8(decoder);
+ var func2 = readToken[type];
+ if (!func2)
+ throw new Error("Invalid type: " + (type ? "0x" + type.toString(16) : type));
+ return func2(decoder);
+ }
+ }
+ function init() {
+ var options = this.options;
+ this.decode = getDecoder(options);
+ if (options && options.preset) {
+ ExtUnpacker.setExtUnpackers(this);
+ }
+ return this;
+ }
+ function addExtUnpacker(etype, unpacker) {
+ var unpackers = this.extUnpackers || (this.extUnpackers = []);
+ unpackers[etype] = CodecBase.filter(unpacker);
+ }
+ function getExtUnpacker(type) {
+ var unpackers = this.extUnpackers || (this.extUnpackers = []);
+ return unpackers[type] || extUnpacker;
+ function extUnpacker(buffer) {
+ return new ExtBuffer(buffer, type);
+ }
+ }
+ }
+});
+
+// node_modules/msgpack-lite/lib/decode-buffer.js
+var require_decode_buffer = __commonJS({
+ "node_modules/msgpack-lite/lib/decode-buffer.js"(exports2) {
+ exports2.DecodeBuffer = DecodeBuffer;
+ var preset = require_read_core().preset;
+ var FlexDecoder = require_flex_buffer().FlexDecoder;
+ FlexDecoder.mixin(DecodeBuffer.prototype);
+ function DecodeBuffer(options) {
+ if (!(this instanceof DecodeBuffer))
+ return new DecodeBuffer(options);
+ if (options) {
+ this.options = options;
+ if (options.codec) {
+ var codec = this.codec = options.codec;
+ if (codec.bufferish)
+ this.bufferish = codec.bufferish;
+ }
+ }
+ }
+ DecodeBuffer.prototype.codec = preset;
+ DecodeBuffer.prototype.fetch = function() {
+ return this.codec.decode(this);
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/decode.js
+var require_decode = __commonJS({
+ "node_modules/msgpack-lite/lib/decode.js"(exports2) {
+ exports2.decode = decode;
+ var DecodeBuffer = require_decode_buffer().DecodeBuffer;
+ function decode(input, options) {
+ var decoder = new DecodeBuffer(options);
+ decoder.write(input);
+ return decoder.read();
+ }
+ }
+});
+
+// node_modules/event-lite/event-lite.js
+var require_event_lite = __commonJS({
+ "node_modules/event-lite/event-lite.js"(exports2, module2) {
+ function EventLite() {
+ if (!(this instanceof EventLite))
+ return new EventLite();
+ }
+ (function(EventLite2) {
+ if (typeof module2 !== "undefined")
+ module2.exports = EventLite2;
+ var LISTENERS = "listeners";
+ var methods2 = {
+ on,
+ once,
+ off,
+ emit
+ };
+ mixin2(EventLite2.prototype);
+ EventLite2.mixin = mixin2;
+ function mixin2(target) {
+ for (var key in methods2) {
+ target[key] = methods2[key];
+ }
+ return target;
+ }
+ function on(type, func2) {
+ getListeners(this, type).push(func2);
+ return this;
+ }
+ function once(type, func2) {
+ var that = this;
+ wrap.originalListener = func2;
+ getListeners(that, type).push(wrap);
+ return that;
+ function wrap() {
+ off.call(that, type, wrap);
+ func2.apply(this, arguments);
+ }
+ }
+ function off(type, func2) {
+ var that = this;
+ var listners;
+ if (!arguments.length) {
+ delete that[LISTENERS];
+ } else if (!func2) {
+ listners = that[LISTENERS];
+ if (listners) {
+ delete listners[type];
+ if (!Object.keys(listners).length)
+ return off.call(that);
+ }
+ } else {
+ listners = getListeners(that, type, true);
+ if (listners) {
+ listners = listners.filter(ne);
+ if (!listners.length)
+ return off.call(that, type);
+ that[LISTENERS][type] = listners;
+ }
+ }
+ return that;
+ function ne(test) {
+ return test !== func2 && test.originalListener !== func2;
+ }
+ }
+ function emit(type, value) {
+ var that = this;
+ var listeners = getListeners(that, type, true);
+ if (!listeners)
+ return false;
+ var arglen = arguments.length;
+ if (arglen === 1) {
+ listeners.forEach(zeroarg);
+ } else if (arglen === 2) {
+ listeners.forEach(onearg);
+ } else {
+ var args = Array.prototype.slice.call(arguments, 1);
+ listeners.forEach(moreargs);
+ }
+ return !!listeners.length;
+ function zeroarg(func2) {
+ func2.call(that);
+ }
+ function onearg(func2) {
+ func2.call(that, value);
+ }
+ function moreargs(func2) {
+ func2.apply(that, args);
+ }
+ }
+ function getListeners(that, type, readonly) {
+ if (readonly && !that[LISTENERS])
+ return;
+ var listeners = that[LISTENERS] || (that[LISTENERS] = {});
+ return listeners[type] || (listeners[type] = []);
+ }
+ })(EventLite);
+ }
+});
+
+// node_modules/msgpack-lite/lib/encoder.js
+var require_encoder = __commonJS({
+ "node_modules/msgpack-lite/lib/encoder.js"(exports2) {
+ exports2.Encoder = Encoder;
+ var EventLite = require_event_lite();
+ var EncodeBuffer = require_encode_buffer().EncodeBuffer;
+ function Encoder(options) {
+ if (!(this instanceof Encoder))
+ return new Encoder(options);
+ EncodeBuffer.call(this, options);
+ }
+ Encoder.prototype = new EncodeBuffer();
+ EventLite.mixin(Encoder.prototype);
+ Encoder.prototype.encode = function(chunk) {
+ this.write(chunk);
+ this.emit("data", this.read());
+ };
+ Encoder.prototype.end = function(chunk) {
+ if (arguments.length)
+ this.encode(chunk);
+ this.flush();
+ this.emit("end");
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/decoder.js
+var require_decoder = __commonJS({
+ "node_modules/msgpack-lite/lib/decoder.js"(exports2) {
+ exports2.Decoder = Decoder;
+ var EventLite = require_event_lite();
+ var DecodeBuffer = require_decode_buffer().DecodeBuffer;
+ function Decoder(options) {
+ if (!(this instanceof Decoder))
+ return new Decoder(options);
+ DecodeBuffer.call(this, options);
+ }
+ Decoder.prototype = new DecodeBuffer();
+ EventLite.mixin(Decoder.prototype);
+ Decoder.prototype.decode = function(chunk) {
+ if (arguments.length)
+ this.write(chunk);
+ this.flush();
+ };
+ Decoder.prototype.push = function(chunk) {
+ this.emit("data", chunk);
+ };
+ Decoder.prototype.end = function(chunk) {
+ this.decode(chunk);
+ this.emit("end");
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/encode-stream.js
+var require_encode_stream = __commonJS({
+ "node_modules/msgpack-lite/lib/encode-stream.js"(exports2) {
+ exports2.createEncodeStream = EncodeStream;
+ var util4 = require("util");
+ var Transform2 = require("stream").Transform;
+ var EncodeBuffer = require_encode_buffer().EncodeBuffer;
+ util4.inherits(EncodeStream, Transform2);
+ var DEFAULT_OPTIONS = { objectMode: true };
+ function EncodeStream(options) {
+ if (!(this instanceof EncodeStream))
+ return new EncodeStream(options);
+ if (options) {
+ options.objectMode = true;
+ } else {
+ options = DEFAULT_OPTIONS;
+ }
+ Transform2.call(this, options);
+ var stream = this;
+ var encoder = this.encoder = new EncodeBuffer(options);
+ encoder.push = function(chunk) {
+ stream.push(chunk);
+ };
+ }
+ EncodeStream.prototype._transform = function(chunk, encoding, callback) {
+ this.encoder.write(chunk);
+ if (callback)
+ callback();
+ };
+ EncodeStream.prototype._flush = function(callback) {
+ this.encoder.flush();
+ if (callback)
+ callback();
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/decode-stream.js
+var require_decode_stream = __commonJS({
+ "node_modules/msgpack-lite/lib/decode-stream.js"(exports2) {
+ exports2.createDecodeStream = DecodeStream;
+ var util4 = require("util");
+ var Transform2 = require("stream").Transform;
+ var DecodeBuffer = require_decode_buffer().DecodeBuffer;
+ util4.inherits(DecodeStream, Transform2);
+ var DEFAULT_OPTIONS = { objectMode: true };
+ function DecodeStream(options) {
+ if (!(this instanceof DecodeStream))
+ return new DecodeStream(options);
+ if (options) {
+ options.objectMode = true;
+ } else {
+ options = DEFAULT_OPTIONS;
+ }
+ Transform2.call(this, options);
+ var stream = this;
+ var decoder = this.decoder = new DecodeBuffer(options);
+ decoder.push = function(chunk) {
+ stream.push(chunk);
+ };
+ }
+ DecodeStream.prototype._transform = function(chunk, encoding, callback) {
+ this.decoder.write(chunk);
+ this.decoder.flush();
+ if (callback)
+ callback();
+ };
+ }
+});
+
+// node_modules/msgpack-lite/lib/ext.js
+var require_ext = __commonJS({
+ "node_modules/msgpack-lite/lib/ext.js"(exports2) {
+ require_read_core();
+ require_write_core();
+ exports2.createCodec = require_codec_base().createCodec;
+ }
+});
+
+// node_modules/msgpack-lite/lib/codec.js
+var require_codec = __commonJS({
+ "node_modules/msgpack-lite/lib/codec.js"(exports2) {
+ require_read_core();
+ require_write_core();
+ exports2.codec = {
+ preset: require_codec_base().preset
+ };
+ }
+});
+
+// node_modules/msgpack-lite/index.js
+var require_msgpack_lite = __commonJS({
+ "node_modules/msgpack-lite/index.js"(exports2) {
+ exports2.encode = require_encode().encode;
+ exports2.decode = require_decode().decode;
+ exports2.Encoder = require_encoder().Encoder;
+ exports2.Decoder = require_decoder().Decoder;
+ exports2.createEncodeStream = require_encode_stream().createEncodeStream;
+ exports2.createDecodeStream = require_decode_stream().createDecodeStream;
+ exports2.createCodec = require_ext().createCodec;
+ exports2.codec = require_codec().codec;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/utils/buffered.js
+var require_buffered = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/utils/buffered.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var stream_1 = require("stream");
+ var Buffered = class extends stream_1.Transform {
+ constructor() {
+ super({
+ readableHighWaterMark: 10 * 1024 * 1024,
+ writableHighWaterMark: 10 * 1024 * 1024
+ });
+ this.chunks = null;
+ this.timer = null;
+ }
+ sendData() {
+ const { chunks } = this;
+ if (chunks) {
+ this.chunks = null;
+ const buf = Buffer.concat(chunks);
+ this.push(buf);
+ }
+ }
+ _transform(chunk, _encoding, callback) {
+ const { chunks, timer } = this;
+ const MIN_SIZE = Buffer.poolSize;
+ if (timer)
+ clearTimeout(timer);
+ if (chunk.length < MIN_SIZE) {
+ if (!chunks)
+ return callback(null, chunk);
+ chunks.push(chunk);
+ this.sendData();
+ callback();
+ } else {
+ if (!chunks) {
+ this.chunks = [chunk];
+ } else {
+ chunks.push(chunk);
+ }
+ this.timer = setTimeout(this.sendData.bind(this), 20);
+ callback();
+ }
+ }
+ _flush(callback) {
+ const { chunks } = this;
+ if (chunks) {
+ this.chunks = null;
+ const buf = Buffer.concat(chunks);
+ callback(null, buf);
+ } else {
+ callback();
+ }
+ }
+ };
+ exports2.default = Buffered;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/Base.js
+var require_Base = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/Base.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.BaseApi = void 0;
+ var events_1 = require("events");
+ var isVim7 = process.env.VIM_NODE_RPC == "1";
+ var BaseApi = class extends events_1.EventEmitter {
+ constructor({ transport, data, client }) {
+ super();
+ this.setTransport(transport);
+ this.data = data;
+ this.client = client;
+ }
+ setTransport(transport) {
+ this.transport = transport;
+ }
+ equals(other) {
+ try {
+ return String(this.data) === String(other.data);
+ } catch (e) {
+ return false;
+ }
+ }
+ async request(name2, args = []) {
+ let stack = Error().stack;
+ return new Promise((resolve3, reject) => {
+ this.transport.request(name2, this.getArgsByPrefix(args), (err, res) => {
+ if (err) {
+ let e = new Error(`request error ${name2} - ${err[1]}`);
+ e.stack = stack;
+ if (!name2.endsWith("get_var")) {
+ this.client.logError(`request error on "${name2}"`, args, err[1], stack);
+ }
+ reject(e);
+ } else {
+ resolve3(res);
+ }
+ });
+ });
+ }
+ getArgsByPrefix(args) {
+ if (this.prefix !== "nvim_" && args[0] != this) {
+ let id = isVim7 ? this.data : this;
+ return [id, ...args];
+ }
+ return args;
+ }
+ getVar(name2) {
+ return this.request(`${this.prefix}get_var`, [name2]).then((res) => res, (_err) => {
+ return null;
+ });
+ }
+ setVar(name2, value, isNotify = false) {
+ if (isNotify) {
+ this.notify(`${this.prefix}set_var`, [name2, value]);
+ return;
+ }
+ return this.request(`${this.prefix}set_var`, [name2, value]);
+ }
+ deleteVar(name2) {
+ this.notify(`${this.prefix}del_var`, [name2]);
+ }
+ getOption(name2) {
+ return this.request(`${this.prefix}get_option`, [name2]);
+ }
+ setOption(name2, value, isNotify) {
+ if (isNotify) {
+ this.notify(`${this.prefix}set_option`, [name2, value]);
+ return;
+ }
+ return this.request(`${this.prefix}set_option`, [name2, value]);
+ }
+ notify(name2, args = []) {
+ this.transport.notify(name2, this.getArgsByPrefix(args));
+ }
+ };
+ exports2.BaseApi = BaseApi;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/Buffer.js
+var require_Buffer = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/Buffer.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Buffer = void 0;
+ var Base_1 = require_Base();
+ var Buffer4 = class extends Base_1.BaseApi {
+ constructor() {
+ super(...arguments);
+ this.prefix = "nvim_buf_";
+ }
+ async attach(sendBuffer = false, options = {}) {
+ return await this.request(`${this.prefix}attach`, [sendBuffer, options]);
+ }
+ async detach() {
+ return await this.request(`${this.prefix}detach`, []);
+ }
+ get id() {
+ return this.data;
+ }
+ get length() {
+ return this.request(`${this.prefix}line_count`, []);
+ }
+ get lines() {
+ return this.getLines();
+ }
+ get changedtick() {
+ return this.request(`${this.prefix}get_changedtick`, []);
+ }
+ get commands() {
+ return this.getCommands();
+ }
+ getCommands(options = {}) {
+ return this.request(`${this.prefix}get_commands`, [options]);
+ }
+ getLines({ start, end, strictIndexing } = { start: 0, end: -1, strictIndexing: true }) {
+ const indexing = typeof strictIndexing === "undefined" ? true : strictIndexing;
+ return this.request(`${this.prefix}get_lines`, [
+ start,
+ end,
+ indexing
+ ]);
+ }
+ setLines(_lines, { start: _start, end: _end, strictIndexing } = {
+ strictIndexing: true
+ }, notify = false) {
+ const indexing = typeof strictIndexing === "undefined" ? true : strictIndexing;
+ const lines = typeof _lines === "string" ? [_lines] : _lines;
+ const end = typeof _end !== "undefined" ? _end : _start + 1;
+ const method = notify ? "notify" : "request";
+ return this[method](`${this.prefix}set_lines`, [
+ _start,
+ end,
+ indexing,
+ lines
+ ]);
+ }
+ setVirtualText(src_id, line, chunks, opts = {}) {
+ this.notify(`${this.prefix}set_virtual_text`, [
+ src_id,
+ line,
+ chunks,
+ opts
+ ]);
+ return Promise.resolve(src_id);
+ }
+ insert(lines, start) {
+ return this.setLines(lines, {
+ start,
+ end: start,
+ strictIndexing: true
+ });
+ }
+ replace(_lines, start) {
+ const lines = typeof _lines === "string" ? [_lines] : _lines;
+ return this.setLines(lines, {
+ start,
+ end: start + lines.length,
+ strictIndexing: false
+ });
+ }
+ remove(start, end, strictIndexing = false) {
+ return this.setLines([], { start, end, strictIndexing });
+ }
+ append(lines) {
+ return this.setLines(lines, {
+ start: -1,
+ end: -1,
+ strictIndexing: false
+ });
+ }
+ get name() {
+ return this.request(`${this.prefix}get_name`, []);
+ }
+ setName(value) {
+ return this.request(`${this.prefix}set_name`, [value]);
+ }
+ get valid() {
+ return this.request(`${this.prefix}is_valid`, []);
+ }
+ mark(name2) {
+ return this.request(`${this.prefix}get_mark`, [name2]);
+ }
+ getKeymap(mode) {
+ return this.request(`${this.prefix}get_keymap`, [mode]);
+ }
+ setKeymap(mode, lhs, rhs, opts = {}) {
+ this.client.call("coc#compat#buf_add_keymap", [this.id, mode, lhs, rhs, opts], true);
+ }
+ get loaded() {
+ return this.request(`${this.prefix}is_loaded`, []);
+ }
+ getOffset(index) {
+ return this.request(`${this.prefix}get_offset`, [index]);
+ }
+ addHighlight({ hlGroup, line, colStart: _start, colEnd: _end, srcId: _srcId }) {
+ if (!hlGroup)
+ throw new Error("hlGroup should not empty");
+ const colEnd = typeof _end !== "undefined" ? _end : -1;
+ const colStart = typeof _start !== "undefined" ? _start : -0;
+ const srcId = typeof _srcId !== "undefined" ? _srcId : -1;
+ const method = srcId == 0 ? "request" : "notify";
+ let res = this[method](`${this.prefix}add_highlight`, [
+ srcId,
+ hlGroup,
+ line,
+ colStart,
+ colEnd
+ ]);
+ return method === "request" ? res : Promise.resolve(null);
+ }
+ clearHighlight(args = {}) {
+ const defaults2 = {
+ srcId: -1,
+ lineStart: 0,
+ lineEnd: -1
+ };
+ const { srcId, lineStart, lineEnd } = Object.assign({}, defaults2, args);
+ return this.notify(`${this.prefix}clear_highlight`, [
+ srcId,
+ lineStart,
+ lineEnd
+ ]);
+ }
+ highlightRanges(srcId, hlGroup, ranges) {
+ this.client.call("coc#highlight#ranges", [this.id, srcId, hlGroup, ranges], true);
+ }
+ clearNamespace(key, lineStart = 0, lineEnd = -1) {
+ this.client.call("coc#highlight#clear_highlight", [this.id, key, lineStart, lineEnd], true);
+ }
+ placeSign(sign) {
+ let opts = { lnum: sign.lnum };
+ if (typeof sign.priority === "number")
+ opts.priority = sign.priority;
+ this.client.call("sign_place", [sign.id || 0, sign.group || "", sign.name, this.id, opts], true);
+ }
+ unplaceSign(opts) {
+ let details = { buffer: this.id };
+ if (opts.id != null)
+ details.id = opts.id;
+ this.client.call("sign_unplace", [opts.group || "", details], true);
+ }
+ async getSigns(opts) {
+ let res = await this.client.call("sign_getplaced", [this.id, opts || {}]);
+ return res[0].signs;
+ }
+ async getHighlights(ns, start = 0, end = -1) {
+ let res = [];
+ let obj = await this.client.call("coc#highlight#get", [this.id, ns, start, end]);
+ for (let arr of Object.values(obj)) {
+ if (Array.isArray(arr)) {
+ res.push(...arr);
+ }
+ }
+ return res;
+ }
+ updateHighlights(ns, highlights, start = 0, end = -1) {
+ this.client.call("coc#highlight#update_highlights", [this.id, ns, highlights, start, end], true);
+ }
+ listen(eventName, cb, disposables) {
+ this.client.attachBufferEvent(this, eventName, cb);
+ if (disposables) {
+ disposables.push({
+ dispose: () => {
+ this.client.detachBufferEvent(this, eventName, cb);
+ }
+ });
+ }
+ }
+ };
+ exports2.Buffer = Buffer4;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/Window.js
+var require_Window = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/Window.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Window = void 0;
+ var Base_1 = require_Base();
+ var timers_1 = require("timers");
+ var Window3 = class extends Base_1.BaseApi {
+ constructor() {
+ super(...arguments);
+ this.prefix = "nvim_win_";
+ }
+ get id() {
+ return this.data;
+ }
+ get buffer() {
+ return this.request(`${this.prefix}get_buf`, []);
+ }
+ get tabpage() {
+ return this.request(`${this.prefix}get_tabpage`, []);
+ }
+ get cursor() {
+ return this.request(`${this.prefix}get_cursor`, []);
+ }
+ setCursor(pos, isNotify = false) {
+ let method = isNotify ? "notify" : "request";
+ return this[method](`${this.prefix}set_cursor`, [pos]);
+ }
+ get height() {
+ return this.request(`${this.prefix}get_height`, []);
+ }
+ setHeight(height, isNotify = false) {
+ let method = isNotify ? "notify" : "request";
+ return this[method](`${this.prefix}set_height`, [height]);
+ }
+ get width() {
+ return this.request(`${this.prefix}get_width`, []);
+ }
+ setWidth(width, isNotify = false) {
+ let method = isNotify ? "notify" : "request";
+ return this[method](`${this.prefix}set_height`, [width]);
+ }
+ get position() {
+ return this.request(`${this.prefix}get_position`, []);
+ }
+ get row() {
+ return this.request(`${this.prefix}get_position`, []).then((position) => position[0]);
+ }
+ get col() {
+ return this.request(`${this.prefix}get_position`, []).then((position) => position[1]);
+ }
+ get valid() {
+ return this.request(`${this.prefix}is_valid`, []);
+ }
+ get number() {
+ return this.request(`${this.prefix}get_number`, []);
+ }
+ setConfig(options, isNotify) {
+ let method = isNotify ? "notify" : "request";
+ return this[method](`${this.prefix}set_config`, [options]);
+ }
+ getConfig() {
+ return this.request(`${this.prefix}get_config`, []);
+ }
+ close(force, isNotify) {
+ if (isNotify) {
+ this.notify(`${this.prefix}close`, [force]);
+ let count = 0;
+ let interval = setInterval(() => {
+ if (count == 5)
+ return timers_1.clearInterval(interval);
+ this.request(`${this.prefix}is_valid`, []).then((valid) => {
+ if (!valid) {
+ timers_1.clearInterval(interval);
+ } else {
+ this.notify(`${this.prefix}close`, [force]);
+ }
+ }, () => {
+ timers_1.clearInterval(interval);
+ });
+ count++;
+ }, 50);
+ return null;
+ }
+ return this.request(`${this.prefix}close`, [force]);
+ }
+ highlightRanges(hlGroup, ranges, priority = 10, isNotify) {
+ if (isNotify) {
+ this.client.call("coc#highlight#match_ranges", [this.id, 0, ranges, hlGroup, priority], true);
+ return void 0;
+ }
+ return this.client.call("coc#highlight#match_ranges", [this.id, 0, ranges, hlGroup, priority]);
+ }
+ clearMatchGroup(hlGroup) {
+ this.client.call("coc#highlight#clear_match_group", [this.id, hlGroup], true);
+ }
+ clearMatches(ids) {
+ this.client.call("coc#highlight#clear_matches", [this.id, ids], true);
+ }
+ };
+ exports2.Window = Window3;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/Tabpage.js
+var require_Tabpage = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/Tabpage.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Tabpage = void 0;
+ var Base_1 = require_Base();
+ var Tabpage = class extends Base_1.BaseApi {
+ constructor() {
+ super(...arguments);
+ this.prefix = "nvim_tabpage_";
+ }
+ get windows() {
+ return this.request(`${this.prefix}list_wins`, []);
+ }
+ get window() {
+ return this.request(`${this.prefix}get_win`, []);
+ }
+ get valid() {
+ return this.request(`${this.prefix}is_valid`, []);
+ }
+ get number() {
+ return this.request(`${this.prefix}get_number`, []);
+ }
+ getOption() {
+ throw new Error("Tabpage does not have `getOption`");
+ }
+ setOption() {
+ throw new Error("Tabpage does not have `setOption`");
+ }
+ };
+ exports2.Tabpage = Tabpage;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/types.js
+var require_types = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/types.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Metadata = exports2.ExtType = void 0;
+ var Buffer_1 = require_Buffer();
+ var Window_1 = require_Window();
+ var Tabpage_1 = require_Tabpage();
+ var ExtType;
+ (function(ExtType2) {
+ ExtType2[ExtType2["Buffer"] = 0] = "Buffer";
+ ExtType2[ExtType2["Window"] = 1] = "Window";
+ ExtType2[ExtType2["Tabpage"] = 2] = "Tabpage";
+ })(ExtType = exports2.ExtType || (exports2.ExtType = {}));
+ exports2.Metadata = [
+ {
+ constructor: Buffer_1.Buffer,
+ name: "Buffer",
+ prefix: "nvim_buf_"
+ },
+ {
+ constructor: Window_1.Window,
+ name: "Window",
+ prefix: "nvim_win_"
+ },
+ {
+ constructor: Tabpage_1.Tabpage,
+ name: "Tabpage",
+ prefix: "nvim_tabpage_"
+ }
+ ];
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/utils/logger.js
+var require_logger3 = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/utils/logger.js"(exports2) {
+ "use strict";
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+ return mod && mod.__esModule ? mod : { "default": mod };
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.createLogger = void 0;
+ var fs_1 = __importDefault(require("fs"));
+ var os_1 = __importDefault(require("os"));
+ var path_1 = __importDefault(require("path"));
+ function getLogFile() {
+ let file = process.env.NODE_CLIENT_LOG_FILE;
+ if (file)
+ return file;
+ let dir = process.env.XDG_RUNTIME_DIR;
+ if (dir)
+ return path_1.default.join(dir, "node-client.log");
+ return path_1.default.join(os_1.default.tmpdir(), `node-client-${process.pid}.log`);
+ }
+ var LOG_FILE_PATH = getLogFile();
+ var level = process.env.NODE_CLIENT_LOG_LEVEL || "info";
+ var invalid = process.getuid && process.getuid() == 0;
+ if (!invalid) {
+ try {
+ fs_1.default.mkdirSync(path_1.default.dirname(LOG_FILE_PATH), { recursive: true });
+ fs_1.default.writeFileSync(LOG_FILE_PATH, "", { encoding: "utf8", mode: 438 });
+ } catch (_e) {
+ invalid = true;
+ }
+ }
+ function toObject(arg) {
+ if (arg == null) {
+ return arg;
+ }
+ if (Array.isArray(arg)) {
+ return arg.map((o) => toObject(o));
+ }
+ if (typeof arg == "object" && typeof arg.prefix == "string" && typeof arg.data == "number") {
+ return "[" + arg.prefix + arg.data + "]";
+ }
+ return arg;
+ }
+ function toString(arg) {
+ if (arg == null)
+ return String(arg);
+ if (typeof arg == "object")
+ return JSON.stringify(arg, null, 2);
+ return String(arg);
+ }
+ function toTimeString(d) {
+ return `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${d.getMilliseconds()}`;
+ }
+ var Logger2 = class {
+ constructor(name2) {
+ this.name = name2;
+ }
+ get stream() {
+ if (invalid)
+ return null;
+ if (this._stream)
+ return this._stream;
+ this._stream = fs_1.default.createWriteStream(LOG_FILE_PATH, { encoding: "utf8" });
+ return this._stream;
+ }
+ getText(level2, data, meta) {
+ let more = "";
+ if (meta.length) {
+ let arr = toObject(meta);
+ more = " " + arr.map((o) => toString(o));
+ }
+ return `${toTimeString(new Date())} ${level2.toUpperCase()} [${this.name}] - ${data}${more}
+`;
+ }
+ debug(data, ...meta) {
+ if (level != "debug" || this.stream == null)
+ return;
+ this.stream.write(this.getText("debug", data, meta));
+ }
+ info(data, ...meta) {
+ if (this.stream == null)
+ return;
+ this.stream.write(this.getText("info", data, meta));
+ }
+ error(data, ...meta) {
+ if (this.stream == null)
+ return;
+ this.stream.write(this.getText("error", data, meta));
+ }
+ trace(data, ...meta) {
+ if (level != "trace" || this.stream == null)
+ return;
+ this.stream.write(this.getText("trace", data, meta));
+ }
+ };
+ function createLogger3(name2) {
+ return new Logger2(name2);
+ }
+ exports2.createLogger = createLogger3;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/transport/base.js
+var require_base = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/transport/base.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var events_1 = require("events");
+ var logger_1 = require_logger3();
+ var debug = process.env.NODE_CLIENT_LOG_LEVEL == "debug";
+ var logger113 = logger_1.createLogger("transport");
+ var Transport3 = class extends events_1.EventEmitter {
+ constructor(logger114) {
+ super();
+ this.logger = logger114;
+ this.pauseLevel = 0;
+ this.paused = new Map();
+ }
+ debug(key, ...meta) {
+ if (!debug)
+ return;
+ logger113.debug(key, ...meta);
+ }
+ info(key, ...meta) {
+ logger113.info(key, ...meta);
+ }
+ debugMessage(msg) {
+ if (!debug)
+ return;
+ const msgType = msg[0];
+ if (msgType == 0) {
+ logger113.debug("receive request:", msg.slice(1));
+ } else if (msgType == 1) {
+ } else if (msgType == 2) {
+ logger113.debug("receive notification:", msg.slice(1));
+ } else {
+ logger113.debug("unknown message:", msg);
+ }
+ }
+ pauseNotification() {
+ this.pauseLevel = this.pauseLevel + 1;
+ this.paused.set(this.pauseLevel, []);
+ }
+ cancelNotification() {
+ let { pauseLevel } = this;
+ if (pauseLevel > 0) {
+ this.paused.delete(pauseLevel);
+ this.pauseLevel = pauseLevel - 1;
+ }
+ }
+ resumeNotification(isNotify = false) {
+ let { pauseLevel } = this;
+ if (pauseLevel == 0)
+ return isNotify ? null : Promise.resolve([null, null]);
+ let stack = Error().stack;
+ this.pauseLevel = pauseLevel - 1;
+ let list2 = this.paused.get(pauseLevel);
+ this.paused.delete(pauseLevel);
+ if (list2 && list2.length) {
+ return new Promise((resolve3, reject) => {
+ if (!isNotify) {
+ return this.request("nvim_call_atomic", [list2], (err, res) => {
+ if (err) {
+ let e = new Error(`call_atomic error: ${err[1]}`);
+ e.stack = stack;
+ return reject(e);
+ }
+ if (Array.isArray(res) && res[1] != null) {
+ let [index, errType, message] = res[1];
+ let [fname, args] = list2[index];
+ this.logger.error(`request error ${errType} on "${fname}"`, args, message, stack);
+ }
+ resolve3(res);
+ });
+ }
+ this.notify("nvim_call_atomic", [list2]);
+ resolve3();
+ });
+ }
+ return isNotify ? null : Promise.resolve([[], void 0]);
+ }
+ };
+ exports2.default = Transport3;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/transport/nvim.js
+var require_nvim = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/transport/nvim.js"(exports2) {
+ "use strict";
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
+ return m[k];
+ } });
+ } : function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ o[k2] = m[k];
+ });
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+ } : function(o, v) {
+ o["default"] = v;
+ });
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
+ if (mod && mod.__esModule)
+ return mod;
+ var result = {};
+ if (mod != null) {
+ for (var k in mod)
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
+ __createBinding(result, mod, k);
+ }
+ __setModuleDefault(result, mod);
+ return result;
+ };
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+ return mod && mod.__esModule ? mod : { "default": mod };
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.NvimTransport = void 0;
+ var msgpack = __importStar(require_msgpack_lite());
+ var buffered_1 = __importDefault(require_buffered());
+ var types_1 = require_types();
+ var base_1 = __importDefault(require_base());
+ var NvimTransport = class extends base_1.default {
+ constructor(logger113) {
+ super(logger113);
+ this.pending = new Map();
+ this.nextRequestId = 1;
+ this.attached = false;
+ const codec = this.setupCodec();
+ this.encodeStream = msgpack.createEncodeStream({ codec });
+ this.decodeStream = msgpack.createDecodeStream({ codec });
+ this.decodeStream.on("data", (msg) => {
+ this.parseMessage(msg);
+ });
+ this.decodeStream.on("end", () => {
+ this.detach();
+ this.emit("detach");
+ });
+ }
+ parseMessage(msg) {
+ const msgType = msg[0];
+ this.debugMessage(msg);
+ if (msgType === 0) {
+ this.emit("request", msg[2].toString(), msg[3], this.createResponse(msg[1]));
+ } else if (msgType === 1) {
+ const id = msg[1];
+ const handler = this.pending.get(id);
+ if (handler) {
+ this.pending.delete(id);
+ let err = msg[2];
+ if (err && err.length != 2) {
+ err = [0, err instanceof Error ? err.message : err];
+ }
+ handler(err, msg[3]);
+ }
+ } else if (msgType === 2) {
+ this.emit("notification", msg[1].toString(), msg[2]);
+ } else {
+ console.error(`Invalid message type ${msgType}`);
+ }
+ }
+ setupCodec() {
+ const codec = msgpack.createCodec();
+ types_1.Metadata.forEach(({ constructor }, id) => {
+ codec.addExtPacker(id, constructor, (obj) => msgpack.encode(obj.data));
+ codec.addExtUnpacker(id, (data) => new constructor({
+ transport: this,
+ client: this.client,
+ data: msgpack.decode(data)
+ }));
+ });
+ this.codec = codec;
+ return this.codec;
+ }
+ attach(writer, reader, client) {
+ this.encodeStream = this.encodeStream.pipe(writer);
+ const buffered = new buffered_1.default();
+ reader.pipe(buffered).pipe(this.decodeStream);
+ this.writer = writer;
+ this.reader = reader;
+ this.client = client;
+ this.attached = true;
+ }
+ detach() {
+ if (!this.attached)
+ return;
+ this.attached = false;
+ this.encodeStream.unpipe(this.writer);
+ this.reader.unpipe(this.decodeStream);
+ }
+ request(method, args, cb) {
+ if (!this.attached)
+ return;
+ let id = this.nextRequestId;
+ this.nextRequestId = this.nextRequestId + 1;
+ let startTs = Date.now();
+ this.debug("request to nvim:", id, method, args);
+ this.encodeStream.write(msgpack.encode([0, id, method, args], {
+ codec: this.codec
+ }));
+ let stack = Error().stack;
+ let timer = setTimeout(() => {
+ this.debug(`request to vim blocked more than 1s: ${method}`, args, stack);
+ }, 1e3);
+ this.pending.set(id, (err, res) => {
+ clearTimeout(timer);
+ this.debug("response of nvim:", id, `${Date.now() - startTs}ms`, res, err);
+ cb(err, res);
+ });
+ }
+ notify(method, args) {
+ if (!this.attached)
+ return;
+ if (this.pauseLevel != 0) {
+ let arr = this.paused.get(this.pauseLevel);
+ if (arr) {
+ arr.push([method, args]);
+ return;
+ }
+ }
+ this.debug("nvim notification:", method, args);
+ this.encodeStream.write(msgpack.encode([2, method, args], {
+ codec: this.codec
+ }));
+ }
+ send(arr) {
+ this.encodeStream.write(msgpack.encode(arr, {
+ codec: this.codec
+ }));
+ }
+ createResponse(requestId) {
+ let { encodeStream } = this;
+ let startTs = Date.now();
+ let called = false;
+ let timer = setTimeout(() => {
+ this.debug(`request to client cost more than 1s`, requestId);
+ }, 1e3);
+ return {
+ send: (resp, isError) => {
+ clearTimeout(timer);
+ if (called || !this.attached)
+ return;
+ this.debug("response of client:", requestId, `${Date.now() - startTs}ms`, resp, isError == true);
+ called = true;
+ encodeStream.write(msgpack.encode([
+ 1,
+ requestId,
+ isError ? resp : null,
+ !isError ? resp : null
+ ]));
+ }
+ };
+ }
+ };
+ exports2.NvimTransport = NvimTransport;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/transport/connection.js
+var require_connection = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/transport/connection.js"(exports2) {
+ "use strict";
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+ return mod && mod.__esModule ? mod : { "default": mod };
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var events_1 = __importDefault(require("events"));
+ var readline_1 = __importDefault(require("readline"));
+ var logger_1 = require_logger3();
+ var logger113 = logger_1.createLogger("connection");
+ var Connection = class extends events_1.default {
+ constructor(readable, writeable) {
+ super();
+ this.readable = readable;
+ this.writeable = writeable;
+ const rl = readline_1.default.createInterface(this.readable);
+ rl.on("line", (line) => {
+ this.parseData(line);
+ });
+ rl.on("close", () => {
+ logger113.error("connection closed");
+ process.exit(0);
+ });
+ }
+ parseData(str) {
+ if (str.length == 0)
+ return;
+ let arr;
+ try {
+ arr = JSON.parse(str);
+ } catch (e) {
+ console.error(`Invalid data from vim: ${str}`);
+ return;
+ }
+ let [id, obj] = arr;
+ if (id > 0) {
+ logger113.debug("received request:", id, obj);
+ this.emit("request", id, obj);
+ } else if (id == 0) {
+ logger113.debug("received notification:", obj);
+ this.emit("notification", obj);
+ } else {
+ logger113.debug("received response:", id, obj);
+ this.emit("response", id, obj);
+ }
+ }
+ response(requestId, data) {
+ this.send([requestId, data || null]);
+ }
+ notify(event, data) {
+ this.send([0, [event, data || null]]);
+ }
+ send(arr) {
+ logger113.debug("send to vim:", arr);
+ try {
+ this.writeable.write(JSON.stringify(arr) + "\n");
+ } catch (e) {
+ logger113.error("Send error:", arr);
+ }
+ }
+ redraw(force = false) {
+ this.send(["redraw", force ? "force" : ""]);
+ }
+ command(cmd) {
+ this.send(["ex", cmd]);
+ }
+ expr(expr) {
+ this.send(["expr", expr]);
+ }
+ call(func2, args, requestId) {
+ if (!requestId) {
+ this.send(["call", func2, args]);
+ return;
+ }
+ this.send(["call", func2, args, requestId]);
+ }
+ dispose() {
+ this.removeAllListeners();
+ }
+ };
+ exports2.default = Connection;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/transport/request.js
+var require_request = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/transport/request.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var logger_1 = require_logger3();
+ var logger113 = logger_1.createLogger("request");
+ var debug = process.env.NODE_CLIENT_LOG_LEVEL == "debug";
+ var func2 = process.env.COC_NVIM == "1" ? "coc#api#call" : "nvim#api#call";
+ var Request = class {
+ constructor(connection, cb, id) {
+ this.connection = connection;
+ this.cb = cb;
+ this.id = id;
+ }
+ request(method, args = []) {
+ this.method = method;
+ this.args = args;
+ this.connection.call(func2, [method.slice(5), args], this.id);
+ }
+ callback(client, err, result) {
+ let { method, cb } = this;
+ if (debug && err) {
+ logger113.debug(`request ${this.method} error:`, err, this.args);
+ }
+ if (err)
+ return cb([0, err.toString()]);
+ switch (method) {
+ case "nvim_list_wins":
+ case "nvim_tabpage_list_wins":
+ return cb(null, result.map((o) => client.createWindow(o)));
+ case "nvim_tabpage_get_win":
+ case "nvim_get_current_win":
+ case "nvim_open_win":
+ return cb(null, client.createWindow(result));
+ case "nvim_list_bufs":
+ return cb(null, result.map((o) => client.createBuffer(o)));
+ case "nvim_win_get_buf":
+ case "nvim_create_buf":
+ case "nvim_get_current_buf":
+ return cb(null, client.createBuffer(result));
+ case "nvim_list_tabpages":
+ return cb(null, result.map((o) => client.createTabpage(o)));
+ case "nvim_get_current_tabpage":
+ return cb(null, client.createTabpage(result));
+ default:
+ return cb(null, result);
+ }
+ }
+ };
+ exports2.default = Request;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/transport/vim.js
+var require_vim = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/transport/vim.js"(exports2) {
+ "use strict";
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
+ return mod && mod.__esModule ? mod : { "default": mod };
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.VimTransport = void 0;
+ var base_1 = __importDefault(require_base());
+ var connection_1 = __importDefault(require_connection());
+ var request_1 = __importDefault(require_request());
+ var VimTransport = class extends base_1.default {
+ constructor(logger113) {
+ super(logger113);
+ this.pending = new Map();
+ this.nextRequestId = -1;
+ this.attached = false;
+ this.errText = "";
+ this.outText = "";
+ this.notifyMethod = process.env.COC_NVIM == "1" ? "coc#api#notify" : "nvim#api#notify";
+ }
+ attach(writer, reader, client) {
+ let connection = this.connection = new connection_1.default(reader, writer);
+ this.attached = true;
+ this.client = client;
+ connection.on("request", (id, obj) => {
+ let [method, args] = obj;
+ this.emit("request", method, args, this.createResponse(id));
+ });
+ connection.on("notification", (obj) => {
+ let [event, args] = obj;
+ this.emit("notification", event.toString(), args);
+ });
+ connection.on("response", (id, obj) => {
+ let req = this.pending.get(id);
+ if (req) {
+ this.pending.delete(id);
+ let err = null;
+ let result = null;
+ if (!Array.isArray(obj)) {
+ err = obj;
+ } else {
+ err = obj[0];
+ result = obj[1];
+ }
+ req.callback(this.client, err, result);
+ }
+ });
+ }
+ send(arr) {
+ this.connection.send(arr);
+ }
+ detach() {
+ if (!this.attached)
+ return;
+ this.attached = false;
+ this.connection.dispose();
+ }
+ request(method, args, cb) {
+ if (!this.attached)
+ return cb([0, "transport disconnected"]);
+ let id = this.nextRequestId;
+ this.nextRequestId = this.nextRequestId - 1;
+ let startTs = Date.now();
+ this.debug("request to vim:", id, method, args);
+ let timer = setTimeout(() => {
+ this.debug(`request to vim cost more than 1s`, method, args);
+ }, 1e3);
+ let req = new request_1.default(this.connection, (err, res) => {
+ clearTimeout(timer);
+ this.debug(`response from vim cost:`, id, `${Date.now() - startTs}ms`);
+ cb(err, res);
+ }, id);
+ this.pending.set(id, req);
+ req.request(method, args);
+ }
+ notify(method, args) {
+ if (!this.attached)
+ return;
+ if (this.pauseLevel != 0) {
+ let arr = this.paused.get(this.pauseLevel);
+ if (arr) {
+ arr.push([method, args]);
+ return;
+ }
+ }
+ let fname = method.slice(5);
+ if (fname == "err_write") {
+ this.errText = this.errText + args[0].toString();
+ return;
+ }
+ if (fname == "out_write") {
+ let msg = args[0].toString() || "";
+ if (!msg.includes("\n")) {
+ this.outText = this.outText + msg;
+ } else {
+ let text = this.outText + args[0].toString();
+ this.outText = "";
+ this.connection.call(this.notifyMethod, [fname, [text]]);
+ }
+ return;
+ }
+ if (fname == "err_writeln") {
+ let text = this.errText + args[0].toString();
+ this.errText = "";
+ this.connection.call(this.notifyMethod, [fname, [text]]);
+ return;
+ }
+ this.connection.call(this.notifyMethod, [fname, args]);
+ }
+ createResponse(requestId) {
+ let called = false;
+ let { connection } = this;
+ let startTs = Date.now();
+ let timer = setTimeout(() => {
+ this.debug(`request to client cost more than 1s`, requestId);
+ }, 1e3);
+ return {
+ send: (resp, isError) => {
+ clearTimeout(timer);
+ if (called || !this.attached)
+ return;
+ called = true;
+ let err = null;
+ if (isError)
+ err = typeof resp === "string" ? resp : resp.toString();
+ this.debug("response of client cost:", requestId, `${Date.now() - startTs}ms`);
+ connection.response(requestId, [err, isError ? null : resp]);
+ }
+ };
+ }
+ };
+ exports2.VimTransport = VimTransport;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/Neovim.js
+var require_Neovim = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/Neovim.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Neovim = void 0;
+ var Base_1 = require_Base();
+ var Buffer_1 = require_Buffer();
+ var Tabpage_1 = require_Tabpage();
+ var Window_1 = require_Window();
+ var isVim7 = process.env.VIM_NODE_RPC == "1";
+ var Neovim2 = class extends Base_1.BaseApi {
+ constructor() {
+ super(...arguments);
+ this.prefix = "nvim_";
+ this.Buffer = Buffer_1.Buffer;
+ this.Window = Window_1.Window;
+ this.Tabpage = Tabpage_1.Tabpage;
+ }
+ getArgs(args) {
+ if (!args)
+ return [];
+ if (Array.isArray(args))
+ return args;
+ return [args];
+ }
+ get apiInfo() {
+ return this.request(`${this.prefix}get_api_info`);
+ }
+ get buffers() {
+ return this.request(`${this.prefix}list_bufs`);
+ }
+ get buffer() {
+ return this.request(`${this.prefix}get_current_buf`);
+ }
+ async setBuffer(buffer) {
+ await this.request(`${this.prefix}set_current_buf`, [buffer]);
+ }
+ get chans() {
+ return this.request(`${this.prefix}list_chans`);
+ }
+ getChanInfo(chan) {
+ return this.request(`${this.prefix}get_chan_info`, [chan]);
+ }
+ createNamespace(name2 = "") {
+ return this.request(`${this.prefix}create_namespace`, [name2]);
+ }
+ get namespaces() {
+ return this.request(`${this.prefix}get_namespaces`, []);
+ }
+ get commands() {
+ return this.getCommands();
+ }
+ getCommands(options = {}) {
+ return this.request(`${this.prefix}get_commands`, [options]);
+ }
+ get tabpages() {
+ return this.request(`${this.prefix}list_tabpages`);
+ }
+ get tabpage() {
+ return this.request(`${this.prefix}get_current_tabpage`);
+ }
+ async setTabpage(tabpage) {
+ await this.request(`${this.prefix}set_current_tabpage`, [tabpage]);
+ }
+ get windows() {
+ return this.getWindows();
+ }
+ get window() {
+ return this.request(`${this.prefix}get_current_win`);
+ }
+ getWindows() {
+ return this.request(`${this.prefix}list_wins`);
+ }
+ async setWindow(win) {
+ await this.request(`${this.prefix}set_current_win`, [win]);
+ }
+ get runtimePaths() {
+ return this.request(`${this.prefix}list_runtime_paths`);
+ }
+ setDirectory(dir) {
+ return this.request(`${this.prefix}set_current_dir`, [dir]);
+ }
+ get line() {
+ return this.getLine();
+ }
+ createNewBuffer(listed = false, scratch = false) {
+ return this.request(`${this.prefix}create_buf`, [listed, scratch]);
+ }
+ openFloatWindow(buffer, enter, options) {
+ return this.request(`${this.prefix}open_win`, [buffer, enter, options]);
+ }
+ getLine() {
+ return this.request(`${this.prefix}get_current_line`);
+ }
+ setLine(line) {
+ return this.request(`${this.prefix}set_current_line`, [line]);
+ }
+ getKeymap(mode) {
+ return this.request(`${this.prefix}get_keymap`, [mode]);
+ }
+ get mode() {
+ return this.request(`${this.prefix}get_mode`);
+ }
+ get colorMap() {
+ return this.request(`${this.prefix}get_color_map`);
+ }
+ getColorByName(name2) {
+ return this.request(`${this.prefix}get_color_by_name`, [name2]);
+ }
+ getHighlight(nameOrId, isRgb = true) {
+ const functionName = typeof nameOrId === "string" ? "by_name" : "by_id";
+ return this.request(`${this.prefix}get_hl_${functionName}`, [
+ nameOrId,
+ isRgb
+ ]);
+ }
+ getHighlightByName(name2, isRgb = true) {
+ return this.request(`${this.prefix}get_hl_by_name`, [name2, isRgb]);
+ }
+ getHighlightById(id, isRgb = true) {
+ return this.request(`${this.prefix}get_hl_by_id`, [id, isRgb]);
+ }
+ deleteCurrentLine() {
+ return this.request(`${this.prefix}del_current_line`);
+ }
+ eval(expr) {
+ return this.request(`${this.prefix}eval`, [expr]);
+ }
+ lua(code, args = []) {
+ const _args = this.getArgs(args);
+ return this.request(`${this.prefix}execute_lua`, [code, _args]);
+ }
+ executeLua(code, args = []) {
+ return this.lua(code, args);
+ }
+ callDictFunction(dict, fname, args = []) {
+ const _args = this.getArgs(args);
+ return this.request(`${this.prefix}call_dict_function`, [
+ dict,
+ fname,
+ _args
+ ]);
+ }
+ call(fname, args = [], isNotify) {
+ const _args = this.getArgs(args);
+ if (isNotify) {
+ this.notify(`${this.prefix}call_function`, [fname, _args]);
+ return null;
+ }
+ return this.request(`${this.prefix}call_function`, [fname, _args]);
+ }
+ callTimer(fname, args = [], isNotify) {
+ const _args = this.getArgs(args);
+ if (isNotify) {
+ this.notify(`${this.prefix}call_function`, ["coc#util#timer", [fname, _args]]);
+ return null;
+ }
+ if (isVim7) {
+ this.notify(`${this.prefix}call_function`, ["coc#util#timer", [fname, _args]]);
+ return new Promise((resolve3) => {
+ setTimeout(() => {
+ resolve3(null);
+ }, 20);
+ });
+ }
+ return this.request(`${this.prefix}call_function`, ["coc#util#timer", [fname, _args]]);
+ }
+ callAsync(fname, args = []) {
+ const _args = this.getArgs(args);
+ return this.client.sendAsyncRequest(fname, _args);
+ }
+ callFunction(fname, args = []) {
+ return this.call(fname, args);
+ }
+ callAtomic(calls) {
+ return this.request(`${this.prefix}call_atomic`, [calls]);
+ }
+ command(arg, isNotify) {
+ if (isNotify) {
+ this.notify(`${this.prefix}command`, [arg]);
+ return null;
+ }
+ return this.request(`${this.prefix}command`, [arg]);
+ }
+ commandOutput(arg) {
+ return this.request(`${this.prefix}command_output`, [arg]);
+ }
+ getVvar(name2) {
+ return this.request(`${this.prefix}get_vvar`, [name2]);
+ }
+ feedKeys(keys, mode, escapeCsi) {
+ return this.request(`${this.prefix}feedkeys`, [keys, mode, escapeCsi]);
+ }
+ input(keys) {
+ return this.request(`${this.prefix}input`, [keys]);
+ }
+ parseExpression(expr, flags, highlight) {
+ return this.request(`${this.prefix}parse_expression`, [
+ expr,
+ flags,
+ highlight
+ ]);
+ }
+ getProc(pid) {
+ return this.request(`${this.prefix}get_proc`, [pid]);
+ }
+ getProcChildren(pid) {
+ return this.request(`${this.prefix}get_proc_children`, [pid]);
+ }
+ replaceTermcodes(str, fromPart, doIt, special) {
+ return this.request(`${this.prefix}replace_termcodes`, [
+ str,
+ fromPart,
+ doIt,
+ special
+ ]);
+ }
+ strWidth(str) {
+ return this.request(`${this.prefix}strwidth`, [str]);
+ }
+ outWrite(str) {
+ this.notify(`${this.prefix}out_write`, [str]);
+ }
+ outWriteLine(str) {
+ this.outWrite(`${str}
+`);
+ }
+ errWrite(str) {
+ this.notify(`${this.prefix}err_write`, [str]);
+ }
+ errWriteLine(str) {
+ this.notify(`${this.prefix}err_writeln`, [str]);
+ }
+ get uis() {
+ return this.request(`${this.prefix}list_uis`);
+ }
+ uiAttach(width, height, options) {
+ return this.request(`${this.prefix}ui_attach`, [width, height, options]);
+ }
+ uiDetach() {
+ return this.request(`${this.prefix}ui_detach`, []);
+ }
+ uiTryResize(width, height) {
+ return this.request(`${this.prefix}ui_try_resize`, [width, height]);
+ }
+ uiSetOption(name2, value) {
+ return this.request(`${this.prefix}ui_set_option`, [name2, value]);
+ }
+ subscribe(event) {
+ return this.request(`${this.prefix}subscribe`, [event]);
+ }
+ unsubscribe(event) {
+ return this.request(`${this.prefix}unsubscribe`, [event]);
+ }
+ setClientInfo(name2, version2, type, methods2, attributes) {
+ this.notify(`${this.prefix}set_client_info`, [
+ name2,
+ version2,
+ type,
+ methods2,
+ attributes
+ ]);
+ }
+ async quit() {
+ this.command("qa!", true);
+ if (this.transport) {
+ this.transport.detach();
+ }
+ }
+ };
+ exports2.Neovim = Neovim2;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/client.js
+var require_client = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/client.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.NeovimClient = exports2.AsyncResponse = void 0;
+ var nvim_1 = require_nvim();
+ var vim_1 = require_vim();
+ var Neovim_1 = require_Neovim();
+ var Buffer_1 = require_Buffer();
+ var Window_1 = require_Window();
+ var Tabpage_1 = require_Tabpage();
+ var logger_1 = require_logger3();
+ var logger113 = logger_1.createLogger("client");
+ var isVim7 = process.env.VIM_NODE_RPC == "1";
+ var AsyncResponse = class {
+ constructor(requestId, cb) {
+ this.requestId = requestId;
+ this.cb = cb;
+ this.finished = false;
+ }
+ finish(err, res) {
+ if (this.finished)
+ return;
+ this.finished = true;
+ if (err) {
+ this.cb(new Error(err));
+ return;
+ }
+ this.cb(null, res);
+ }
+ };
+ exports2.AsyncResponse = AsyncResponse;
+ var NeovimClient2 = class extends Neovim_1.Neovim {
+ constructor(logger114) {
+ super({});
+ this.logger = logger114;
+ this.requestId = 1;
+ this.responses = new Map();
+ this.attachedBuffers = new Map();
+ Object.defineProperty(this, "client", {
+ value: this
+ });
+ let transport = isVim7 ? new vim_1.VimTransport(logger114) : new nvim_1.NvimTransport(logger114);
+ this.setTransport(transport);
+ this.transportAttached = false;
+ this.handleRequest = this.handleRequest.bind(this);
+ this.handleNotification = this.handleNotification.bind(this);
+ }
+ echoError(msg) {
+ let prefix = process.env.COC_NVIM == "1" ? "[coc.nvim] " : "";
+ if (typeof msg === "string") {
+ this.errWriteLine(prefix + msg);
+ this.logError(msg, Error().stack);
+ } else {
+ this.errWriteLine(prefix + msg.message + " use :CocOpenLog for details");
+ this.logError(msg.message || "Unknown error", msg.stack);
+ }
+ }
+ logError(msg, ...args) {
+ if (!this.logger)
+ return;
+ this.logger.error(msg, ...args);
+ }
+ createBuffer(id) {
+ return new Buffer_1.Buffer({
+ transport: this.transport,
+ data: id,
+ client: this
+ });
+ }
+ createWindow(id) {
+ return new Window_1.Window({
+ transport: this.transport,
+ data: id,
+ client: this
+ });
+ }
+ createTabpage(id) {
+ return new Tabpage_1.Tabpage({
+ transport: this.transport,
+ data: id,
+ client: this
+ });
+ }
+ send(arr) {
+ this.transport.send(arr);
+ }
+ redrawVim(force) {
+ if (!isVim7)
+ return;
+ this.transport.send(["redraw", force ? "force" : ""]);
+ }
+ attach({ reader, writer }, requestApi = true) {
+ this.transport.attach(writer, reader, this);
+ this.transportAttached = true;
+ this.setupTransport(requestApi);
+ }
+ detach() {
+ this.transport.detach();
+ this.transportAttached = false;
+ }
+ get isApiReady() {
+ return this.transportAttached && typeof this._channelId !== "undefined";
+ }
+ get channelId() {
+ return this._isReady.then(() => {
+ return this._channelId;
+ });
+ }
+ isAttached(bufnr) {
+ return this.attachedBuffers.has(bufnr);
+ }
+ handleRequest(method, args, resp) {
+ this.emit("request", method, args, resp);
+ }
+ sendAsyncRequest(method, args) {
+ let id = this.requestId;
+ this.requestId = id + 1;
+ this.notify("nvim_call_function", ["coc#rpc#async_request", [id, method, args || []]]);
+ return new Promise((resolve3, reject) => {
+ let response = new AsyncResponse(id, (err, res) => {
+ if (err)
+ return reject(err);
+ resolve3(res);
+ });
+ this.responses.set(id, response);
+ });
+ }
+ emitNotification(method, args) {
+ if (method.endsWith("_event")) {
+ if (method.startsWith("nvim_buf_")) {
+ const shortName = method.replace(/nvim_buf_(.*)_event/, "$1");
+ const { id } = args[0];
+ if (!this.attachedBuffers.has(id))
+ return;
+ const bufferMap = this.attachedBuffers.get(id);
+ const cbs = bufferMap.get(shortName) || [];
+ cbs.forEach((cb) => cb(...args));
+ if (shortName === "detach") {
+ this.attachedBuffers.delete(id);
+ }
+ return;
+ }
+ if (method.startsWith("nvim_async_request")) {
+ const [id, method2, arr] = args;
+ this.handleRequest(method2, arr, {
+ send: (resp, isError) => {
+ this.notify("nvim_call_function", ["coc#rpc#async_response", [id, resp, isError]]);
+ }
+ });
+ }
+ if (method.startsWith("nvim_async_response")) {
+ const [id, err, res] = args;
+ const response = this.responses.get(id);
+ if (!response) {
+ console.error(`Response not found for request ${id}`);
+ return;
+ }
+ this.responses.delete(id);
+ response.finish(err, res);
+ return;
+ }
+ } else {
+ this.emit("notification", method, args);
+ }
+ }
+ handleNotification(method, args) {
+ this.emitNotification(method, args);
+ }
+ setupTransport(requestApi = true) {
+ if (!this.transportAttached) {
+ throw new Error("Not attached to input/output");
+ }
+ this.transport.on("request", this.handleRequest);
+ this.transport.on("notification", this.handleNotification);
+ this.transport.on("detach", () => {
+ this.emit("disconnect");
+ this.transport.removeAllListeners("request");
+ this.transport.removeAllListeners("notification");
+ this.transport.removeAllListeners("detach");
+ });
+ if (requestApi) {
+ this._isReady = this.generateApi();
+ } else {
+ this._channelId = 0;
+ this._isReady = Promise.resolve(true);
+ }
+ }
+ requestApi() {
+ return new Promise((resolve3, reject) => {
+ this.transport.request("nvim_get_api_info", [], (err, res) => {
+ if (err) {
+ reject(new Error(Array.isArray(err) ? err[1] : err.message || err.toString()));
+ } else {
+ resolve3(res);
+ }
+ });
+ });
+ }
+ async generateApi() {
+ let results;
+ try {
+ results = await this.requestApi();
+ } catch (err) {
+ console.error("Could not get vim api results");
+ logger113.error(err);
+ }
+ if (results) {
+ try {
+ const [channelId, metadata] = results;
+ this.functions = metadata.functions.map((f) => f.name);
+ this._channelId = channelId;
+ return true;
+ } catch (err) {
+ logger113.error(err.stack);
+ return null;
+ }
+ }
+ return null;
+ }
+ attachBufferEvent(buffer, eventName, cb) {
+ const bufferMap = this.attachedBuffers.get(buffer.id) || new Map();
+ const cbs = bufferMap.get(eventName) || [];
+ if (cbs.includes(cb))
+ return;
+ cbs.push(cb);
+ bufferMap.set(eventName, cbs);
+ this.attachedBuffers.set(buffer.id, bufferMap);
+ return;
+ }
+ detachBufferEvent(buffer, eventName, cb) {
+ const bufferMap = this.attachedBuffers.get(buffer.id);
+ if (!bufferMap || !bufferMap.has(eventName))
+ return;
+ const handlers = bufferMap.get(eventName).filter((handler) => handler !== cb);
+ bufferMap.set(eventName, handlers);
+ }
+ pauseNotification() {
+ this.transport.pauseNotification();
+ let stack = Error().stack;
+ process.nextTick(() => {
+ if (this.transport.pauseLevel > 0) {
+ this.logError(`resumeNotification not called within same tick:`, stack);
+ }
+ });
+ }
+ resumeNotification(cancel, notify) {
+ if (cancel)
+ return Promise.resolve(this.transport.cancelNotification());
+ if (notify) {
+ return Promise.resolve(this.transport.resumeNotification(true));
+ }
+ return Promise.resolve(this.transport.resumeNotification());
+ }
+ hasFunction(name2) {
+ if (!this.functions)
+ return true;
+ return this.functions.indexOf(name2) !== -1;
+ }
+ };
+ exports2.NeovimClient = NeovimClient2;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/attach/attach.js
+var require_attach = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/attach/attach.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.attach = void 0;
+ var net_1 = require("net");
+ var client_1 = require_client();
+ function attach3({ reader: _reader, writer: _writer, proc, socket }, logger113 = null, requestApi = true) {
+ let writer;
+ let reader;
+ let neovim;
+ if (socket) {
+ const client = net_1.createConnection(socket);
+ writer = client;
+ reader = client;
+ client.once("close", () => {
+ neovim.detach();
+ });
+ } else if (_reader && _writer) {
+ writer = _writer;
+ reader = _reader;
+ } else if (proc) {
+ writer = proc.stdin;
+ reader = proc.stdout;
+ proc.once("disconnect", () => {
+ neovim.detach();
+ });
+ }
+ writer.on("error", (err) => {
+ if (err.code == "EPIPE") {
+ neovim.detach();
+ }
+ });
+ if (writer && reader) {
+ neovim = new client_1.NeovimClient(logger113);
+ neovim.attach({
+ writer,
+ reader
+ }, requestApi);
+ return neovim;
+ }
+ throw new Error("Invalid arguments, could not attach");
+ }
+ exports2.attach = attach3;
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/api/index.js
+var require_api = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/api/index.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Tabpage = exports2.Window = exports2.Buffer = exports2.NeovimClient = exports2.Neovim = void 0;
+ var client_1 = require_client();
+ Object.defineProperty(exports2, "Neovim", { enumerable: true, get: function() {
+ return client_1.NeovimClient;
+ } });
+ var client_2 = require_client();
+ Object.defineProperty(exports2, "NeovimClient", { enumerable: true, get: function() {
+ return client_2.NeovimClient;
+ } });
+ var Buffer_1 = require_Buffer();
+ Object.defineProperty(exports2, "Buffer", { enumerable: true, get: function() {
+ return Buffer_1.Buffer;
+ } });
+ var Window_1 = require_Window();
+ Object.defineProperty(exports2, "Window", { enumerable: true, get: function() {
+ return Window_1.Window;
+ } });
+ var Tabpage_1 = require_Tabpage();
+ Object.defineProperty(exports2, "Tabpage", { enumerable: true, get: function() {
+ return Tabpage_1.Tabpage;
+ } });
+ }
+});
+
+// node_modules/@chemzqm/neovim/lib/index.js
+var require_lib6 = __commonJS({
+ "node_modules/@chemzqm/neovim/lib/index.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Window = exports2.Tabpage = exports2.Buffer = exports2.NeovimClient = exports2.Neovim = exports2.attach = void 0;
+ var attach_1 = require_attach();
+ Object.defineProperty(exports2, "attach", { enumerable: true, get: function() {
+ return attach_1.attach;
+ } });
+ var index_1 = require_api();
+ Object.defineProperty(exports2, "Neovim", { enumerable: true, get: function() {
+ return index_1.Neovim;
+ } });
+ Object.defineProperty(exports2, "NeovimClient", { enumerable: true, get: function() {
+ return index_1.NeovimClient;
+ } });
+ Object.defineProperty(exports2, "Buffer", { enumerable: true, get: function() {
+ return index_1.Buffer;
+ } });
+ Object.defineProperty(exports2, "Tabpage", { enumerable: true, get: function() {
+ return index_1.Tabpage;
+ } });
+ Object.defineProperty(exports2, "Window", { enumerable: true, get: function() {
+ return index_1.Window;
+ } });
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/ral.js
+var require_ral = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/ral.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var _ral;
+ function RAL2() {
+ if (_ral === void 0) {
+ throw new Error(`No runtime abstraction layer installed`);
+ }
+ return _ral;
+ }
+ (function(RAL3) {
+ function install(ral) {
+ if (ral === void 0) {
+ throw new Error(`No runtime abstraction layer provided`);
+ }
+ _ral = ral;
+ }
+ RAL3.install = install;
+ })(RAL2 || (RAL2 = {}));
+ exports2.default = RAL2;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/disposable.js
+var require_disposable = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/disposable.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Disposable = void 0;
+ var Disposable80;
+ (function(Disposable81) {
+ function create(func2) {
+ return {
+ dispose: func2
+ };
+ }
+ Disposable81.create = create;
+ })(Disposable80 = exports2.Disposable || (exports2.Disposable = {}));
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/messageBuffer.js
+var require_messageBuffer = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.AbstractMessageBuffer = void 0;
+ var CR = 13;
+ var LF = 10;
+ var CRLF = "\r\n";
+ var AbstractMessageBuffer = class {
+ constructor(encoding = "utf-8") {
+ this._encoding = encoding;
+ this._chunks = [];
+ this._totalLength = 0;
+ }
+ get encoding() {
+ return this._encoding;
+ }
+ append(chunk) {
+ const toAppend = typeof chunk === "string" ? this.fromString(chunk, this._encoding) : chunk;
+ this._chunks.push(toAppend);
+ this._totalLength += toAppend.byteLength;
+ }
+ tryReadHeaders() {
+ if (this._chunks.length === 0) {
+ return void 0;
+ }
+ let state = 0;
+ let chunkIndex = 0;
+ let offset = 0;
+ let chunkBytesRead = 0;
+ row:
+ while (chunkIndex < this._chunks.length) {
+ const chunk = this._chunks[chunkIndex];
+ offset = 0;
+ column:
+ while (offset < chunk.length) {
+ const value = chunk[offset];
+ switch (value) {
+ case CR:
+ switch (state) {
+ case 0:
+ state = 1;
+ break;
+ case 2:
+ state = 3;
+ break;
+ default:
+ state = 0;
+ }
+ break;
+ case LF:
+ switch (state) {
+ case 1:
+ state = 2;
+ break;
+ case 3:
+ state = 4;
+ offset++;
+ break row;
+ default:
+ state = 0;
+ }
+ break;
+ default:
+ state = 0;
+ }
+ offset++;
+ }
+ chunkBytesRead += chunk.byteLength;
+ chunkIndex++;
+ }
+ if (state !== 4) {
+ return void 0;
+ }
+ const buffer = this._read(chunkBytesRead + offset);
+ const result = new Map();
+ const headers = this.toString(buffer, "ascii").split(CRLF);
+ if (headers.length < 2) {
+ return result;
+ }
+ for (let i = 0; i < headers.length - 2; i++) {
+ const header = headers[i];
+ const index = header.indexOf(":");
+ if (index === -1) {
+ throw new Error("Message header must separate key and value using :");
+ }
+ const key = header.substr(0, index);
+ const value = header.substr(index + 1).trim();
+ result.set(key, value);
+ }
+ return result;
+ }
+ tryReadBody(length) {
+ if (this._totalLength < length) {
+ return void 0;
+ }
+ return this._read(length);
+ }
+ get numberOfBytes() {
+ return this._totalLength;
+ }
+ _read(byteCount) {
+ if (byteCount === 0) {
+ return this.emptyBuffer();
+ }
+ if (byteCount > this._totalLength) {
+ throw new Error(`Cannot read so many bytes!`);
+ }
+ if (this._chunks[0].byteLength === byteCount) {
+ const chunk = this._chunks[0];
+ this._chunks.shift();
+ this._totalLength -= byteCount;
+ return this.asNative(chunk);
+ }
+ if (this._chunks[0].byteLength > byteCount) {
+ const chunk = this._chunks[0];
+ const result2 = this.asNative(chunk, byteCount);
+ this._chunks[0] = chunk.slice(byteCount);
+ this._totalLength -= byteCount;
+ return result2;
+ }
+ const result = this.allocNative(byteCount);
+ let resultOffset = 0;
+ let chunkIndex = 0;
+ while (byteCount > 0) {
+ const chunk = this._chunks[chunkIndex];
+ if (chunk.byteLength > byteCount) {
+ const chunkPart = chunk.slice(0, byteCount);
+ result.set(chunkPart, resultOffset);
+ resultOffset += byteCount;
+ this._chunks[chunkIndex] = chunk.slice(byteCount);
+ this._totalLength -= byteCount;
+ byteCount -= byteCount;
+ } else {
+ result.set(chunk, resultOffset);
+ resultOffset += chunk.byteLength;
+ this._chunks.shift();
+ this._totalLength -= chunk.byteLength;
+ byteCount -= chunk.byteLength;
+ }
+ }
+ return result;
+ }
+ };
+ exports2.AbstractMessageBuffer = AbstractMessageBuffer;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/node/ril.js
+var require_ril = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/node/ril.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ var ral_1 = require_ral();
+ var util_1 = require("util");
+ var disposable_1 = require_disposable();
+ var messageBuffer_1 = require_messageBuffer();
+ var MessageBuffer = class extends messageBuffer_1.AbstractMessageBuffer {
+ constructor(encoding = "utf-8") {
+ super(encoding);
+ }
+ emptyBuffer() {
+ return MessageBuffer.emptyBuffer;
+ }
+ fromString(value, encoding) {
+ return Buffer.from(value, encoding);
+ }
+ toString(value, encoding) {
+ if (value instanceof Buffer) {
+ return value.toString(encoding);
+ } else {
+ return new util_1.TextDecoder(encoding).decode(value);
+ }
+ }
+ asNative(buffer, length) {
+ if (length === void 0) {
+ return buffer instanceof Buffer ? buffer : Buffer.from(buffer);
+ } else {
+ return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);
+ }
+ }
+ allocNative(length) {
+ return Buffer.allocUnsafe(length);
+ }
+ };
+ MessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);
+ var ReadableStreamWrapper = class {
+ constructor(stream) {
+ this.stream = stream;
+ }
+ onClose(listener) {
+ this.stream.on("close", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("close", listener));
+ }
+ onError(listener) {
+ this.stream.on("error", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("error", listener));
+ }
+ onEnd(listener) {
+ this.stream.on("end", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("end", listener));
+ }
+ onData(listener) {
+ this.stream.on("data", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("data", listener));
+ }
+ };
+ var WritableStreamWrapper = class {
+ constructor(stream) {
+ this.stream = stream;
+ }
+ onClose(listener) {
+ this.stream.on("close", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("close", listener));
+ }
+ onError(listener) {
+ this.stream.on("error", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("error", listener));
+ }
+ onEnd(listener) {
+ this.stream.on("end", listener);
+ return disposable_1.Disposable.create(() => this.stream.off("end", listener));
+ }
+ write(data, encoding) {
+ return new Promise((resolve3, reject) => {
+ const callback = (error) => {
+ if (error === void 0 || error === null) {
+ resolve3();
+ } else {
+ reject(error);
+ }
+ };
+ if (typeof data === "string") {
+ this.stream.write(data, encoding, callback);
+ } else {
+ this.stream.write(data, callback);
+ }
+ });
+ }
+ end() {
+ this.stream.end();
+ }
+ };
+ var _ril = Object.freeze({
+ messageBuffer: Object.freeze({
+ create: (encoding) => new MessageBuffer(encoding)
+ }),
+ applicationJson: Object.freeze({
+ encoder: Object.freeze({
+ name: "application/json",
+ encode: (msg, options) => {
+ try {
+ return Promise.resolve(Buffer.from(JSON.stringify(msg, void 0, 0), options.charset));
+ } catch (err) {
+ return Promise.reject(err);
+ }
+ }
+ }),
+ decoder: Object.freeze({
+ name: "application/json",
+ decode: (buffer, options) => {
+ try {
+ if (buffer instanceof Buffer) {
+ return Promise.resolve(JSON.parse(buffer.toString(options.charset)));
+ } else {
+ return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));
+ }
+ } catch (err) {
+ return Promise.reject(err);
+ }
+ }
+ })
+ }),
+ stream: Object.freeze({
+ asReadableStream: (stream) => new ReadableStreamWrapper(stream),
+ asWritableStream: (stream) => new WritableStreamWrapper(stream)
+ }),
+ console,
+ timer: Object.freeze({
+ setTimeout(callback, ms, ...args) {
+ return setTimeout(callback, ms, ...args);
+ },
+ clearTimeout(handle) {
+ clearTimeout(handle);
+ },
+ setImmediate(callback, ...args) {
+ return setImmediate(callback, ...args);
+ },
+ clearImmediate(handle) {
+ clearImmediate(handle);
+ }
+ })
+ });
+ function RIL() {
+ return _ril;
+ }
+ (function(RIL2) {
+ function install() {
+ ral_1.default.install(_ril);
+ }
+ RIL2.install = install;
+ })(RIL || (RIL = {}));
+ exports2.default = RIL;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/is.js
+var require_is = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/is.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0;
+ function boolean2(value) {
+ return value === true || value === false;
+ }
+ exports2.boolean = boolean2;
+ function string2(value) {
+ return typeof value === "string" || value instanceof String;
+ }
+ exports2.string = string2;
+ function number2(value) {
+ return typeof value === "number" || value instanceof Number;
+ }
+ exports2.number = number2;
+ function error(value) {
+ return value instanceof Error;
+ }
+ exports2.error = error;
+ function func2(value) {
+ return typeof value === "function";
+ }
+ exports2.func = func2;
+ function array(value) {
+ return Array.isArray(value);
+ }
+ exports2.array = array;
+ function stringArray(value) {
+ return array(value) && value.every((elem) => string2(elem));
+ }
+ exports2.stringArray = stringArray;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/messages.js
+var require_messages = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/messages.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.isResponseMessage = exports2.isNotificationMessage = exports2.isRequestMessage = exports2.NotificationType9 = exports2.NotificationType8 = exports2.NotificationType7 = exports2.NotificationType6 = exports2.NotificationType5 = exports2.NotificationType4 = exports2.NotificationType3 = exports2.NotificationType2 = exports2.NotificationType1 = exports2.NotificationType0 = exports2.NotificationType = exports2.RequestType9 = exports2.RequestType8 = exports2.RequestType7 = exports2.RequestType6 = exports2.RequestType5 = exports2.RequestType4 = exports2.RequestType3 = exports2.RequestType2 = exports2.RequestType1 = exports2.RequestType = exports2.RequestType0 = exports2.AbstractMessageSignature = exports2.ParameterStructures = exports2.ResponseError = exports2.ErrorCodes = void 0;
+ var is = require_is();
+ var ErrorCodes;
+ (function(ErrorCodes2) {
+ ErrorCodes2.ParseError = -32700;
+ ErrorCodes2.InvalidRequest = -32600;
+ ErrorCodes2.MethodNotFound = -32601;
+ ErrorCodes2.InvalidParams = -32602;
+ ErrorCodes2.InternalError = -32603;
+ ErrorCodes2.jsonrpcReservedErrorRangeStart = -32099;
+ ErrorCodes2.serverErrorStart = ErrorCodes2.jsonrpcReservedErrorRangeStart;
+ ErrorCodes2.MessageWriteError = -32099;
+ ErrorCodes2.MessageReadError = -32098;
+ ErrorCodes2.ServerNotInitialized = -32002;
+ ErrorCodes2.UnknownErrorCode = -32001;
+ ErrorCodes2.jsonrpcReservedErrorRangeEnd = -32e3;
+ ErrorCodes2.serverErrorEnd = ErrorCodes2.jsonrpcReservedErrorRangeEnd;
+ })(ErrorCodes = exports2.ErrorCodes || (exports2.ErrorCodes = {}));
+ var ResponseError2 = class extends Error {
+ constructor(code, message, data) {
+ super(message);
+ this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;
+ this.data = data;
+ Object.setPrototypeOf(this, ResponseError2.prototype);
+ }
+ toJson() {
+ return {
+ code: this.code,
+ message: this.message,
+ data: this.data
+ };
+ }
+ };
+ exports2.ResponseError = ResponseError2;
+ var ParameterStructures = class {
+ constructor(kind) {
+ this.kind = kind;
+ }
+ static is(value) {
+ return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;
+ }
+ toString() {
+ return this.kind;
+ }
+ };
+ exports2.ParameterStructures = ParameterStructures;
+ ParameterStructures.auto = new ParameterStructures("auto");
+ ParameterStructures.byPosition = new ParameterStructures("byPosition");
+ ParameterStructures.byName = new ParameterStructures("byName");
+ var AbstractMessageSignature = class {
+ constructor(method, numberOfParams) {
+ this.method = method;
+ this.numberOfParams = numberOfParams;
+ }
+ get parameterStructures() {
+ return ParameterStructures.auto;
+ }
+ };
+ exports2.AbstractMessageSignature = AbstractMessageSignature;
+ var RequestType03 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 0);
+ }
+ };
+ exports2.RequestType0 = RequestType03;
+ var RequestType3 = class extends AbstractMessageSignature {
+ constructor(method, _parameterStructures = ParameterStructures.auto) {
+ super(method, 1);
+ this._parameterStructures = _parameterStructures;
+ }
+ get parameterStructures() {
+ return this._parameterStructures;
+ }
+ };
+ exports2.RequestType = RequestType3;
+ var RequestType1 = class extends AbstractMessageSignature {
+ constructor(method, _parameterStructures = ParameterStructures.auto) {
+ super(method, 1);
+ this._parameterStructures = _parameterStructures;
+ }
+ get parameterStructures() {
+ return this._parameterStructures;
+ }
+ };
+ exports2.RequestType1 = RequestType1;
+ var RequestType22 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 2);
+ }
+ };
+ exports2.RequestType2 = RequestType22;
+ var RequestType32 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 3);
+ }
+ };
+ exports2.RequestType3 = RequestType32;
+ var RequestType4 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 4);
+ }
+ };
+ exports2.RequestType4 = RequestType4;
+ var RequestType5 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 5);
+ }
+ };
+ exports2.RequestType5 = RequestType5;
+ var RequestType6 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 6);
+ }
+ };
+ exports2.RequestType6 = RequestType6;
+ var RequestType7 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 7);
+ }
+ };
+ exports2.RequestType7 = RequestType7;
+ var RequestType8 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 8);
+ }
+ };
+ exports2.RequestType8 = RequestType8;
+ var RequestType9 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 9);
+ }
+ };
+ exports2.RequestType9 = RequestType9;
+ var NotificationType3 = class extends AbstractMessageSignature {
+ constructor(method, _parameterStructures = ParameterStructures.auto) {
+ super(method, 1);
+ this._parameterStructures = _parameterStructures;
+ }
+ get parameterStructures() {
+ return this._parameterStructures;
+ }
+ };
+ exports2.NotificationType = NotificationType3;
+ var NotificationType03 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 0);
+ }
+ };
+ exports2.NotificationType0 = NotificationType03;
+ var NotificationType1 = class extends AbstractMessageSignature {
+ constructor(method, _parameterStructures = ParameterStructures.auto) {
+ super(method, 1);
+ this._parameterStructures = _parameterStructures;
+ }
+ get parameterStructures() {
+ return this._parameterStructures;
+ }
+ };
+ exports2.NotificationType1 = NotificationType1;
+ var NotificationType22 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 2);
+ }
+ };
+ exports2.NotificationType2 = NotificationType22;
+ var NotificationType32 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 3);
+ }
+ };
+ exports2.NotificationType3 = NotificationType32;
+ var NotificationType4 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 4);
+ }
+ };
+ exports2.NotificationType4 = NotificationType4;
+ var NotificationType5 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 5);
+ }
+ };
+ exports2.NotificationType5 = NotificationType5;
+ var NotificationType6 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 6);
+ }
+ };
+ exports2.NotificationType6 = NotificationType6;
+ var NotificationType7 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 7);
+ }
+ };
+ exports2.NotificationType7 = NotificationType7;
+ var NotificationType8 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 8);
+ }
+ };
+ exports2.NotificationType8 = NotificationType8;
+ var NotificationType9 = class extends AbstractMessageSignature {
+ constructor(method) {
+ super(method, 9);
+ }
+ };
+ exports2.NotificationType9 = NotificationType9;
+ function isRequestMessage(message) {
+ const candidate = message;
+ return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));
+ }
+ exports2.isRequestMessage = isRequestMessage;
+ function isNotificationMessage(message) {
+ const candidate = message;
+ return candidate && is.string(candidate.method) && message.id === void 0;
+ }
+ exports2.isNotificationMessage = isNotificationMessage;
+ function isResponseMessage(message) {
+ const candidate = message;
+ return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);
+ }
+ exports2.isResponseMessage = isResponseMessage;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/events.js
+var require_events = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/events.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Emitter = exports2.Event = void 0;
+ var ral_1 = require_ral();
+ var Event27;
+ (function(Event28) {
+ const _disposable = { dispose() {
+ } };
+ Event28.None = function() {
+ return _disposable;
+ };
+ })(Event27 = exports2.Event || (exports2.Event = {}));
+ var CallbackList = class {
+ add(callback, context = null, bucket) {
+ if (!this._callbacks) {
+ this._callbacks = [];
+ this._contexts = [];
+ }
+ this._callbacks.push(callback);
+ this._contexts.push(context);
+ if (Array.isArray(bucket)) {
+ bucket.push({ dispose: () => this.remove(callback, context) });
+ }
+ }
+ remove(callback, context = null) {
+ if (!this._callbacks) {
+ return;
+ }
+ let foundCallbackWithDifferentContext = false;
+ for (let i = 0, len = this._callbacks.length; i < len; i++) {
+ if (this._callbacks[i] === callback) {
+ if (this._contexts[i] === context) {
+ this._callbacks.splice(i, 1);
+ this._contexts.splice(i, 1);
+ return;
+ } else {
+ foundCallbackWithDifferentContext = true;
+ }
+ }
+ }
+ if (foundCallbackWithDifferentContext) {
+ throw new Error("When adding a listener with a context, you should remove it with the same context");
+ }
+ }
+ invoke(...args) {
+ if (!this._callbacks) {
+ return [];
+ }
+ const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);
+ for (let i = 0, len = callbacks.length; i < len; i++) {
+ try {
+ ret.push(callbacks[i].apply(contexts[i], args));
+ } catch (e) {
+ ral_1.default().console.error(e);
+ }
+ }
+ return ret;
+ }
+ isEmpty() {
+ return !this._callbacks || this._callbacks.length === 0;
+ }
+ dispose() {
+ this._callbacks = void 0;
+ this._contexts = void 0;
+ }
+ };
+ var Emitter28 = class {
+ constructor(_options) {
+ this._options = _options;
+ }
+ get event() {
+ if (!this._event) {
+ this._event = (listener, thisArgs, disposables) => {
+ if (!this._callbacks) {
+ this._callbacks = new CallbackList();
+ }
+ if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {
+ this._options.onFirstListenerAdd(this);
+ }
+ this._callbacks.add(listener, thisArgs);
+ const result = {
+ dispose: () => {
+ if (!this._callbacks) {
+ return;
+ }
+ this._callbacks.remove(listener, thisArgs);
+ result.dispose = Emitter28._noop;
+ if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {
+ this._options.onLastListenerRemove(this);
+ }
+ }
+ };
+ if (Array.isArray(disposables)) {
+ disposables.push(result);
+ }
+ return result;
+ };
+ }
+ return this._event;
+ }
+ fire(event) {
+ if (this._callbacks) {
+ this._callbacks.invoke.call(this._callbacks, event);
+ }
+ }
+ dispose() {
+ if (this._callbacks) {
+ this._callbacks.dispose();
+ this._callbacks = void 0;
+ }
+ }
+ };
+ exports2.Emitter = Emitter28;
+ Emitter28._noop = function() {
+ };
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/cancellation.js
+var require_cancellation = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/cancellation.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.CancellationTokenSource = exports2.CancellationToken = void 0;
+ var ral_1 = require_ral();
+ var Is7 = require_is();
+ var events_1 = require_events();
+ var CancellationToken53;
+ (function(CancellationToken54) {
+ CancellationToken54.None = Object.freeze({
+ isCancellationRequested: false,
+ onCancellationRequested: events_1.Event.None
+ });
+ CancellationToken54.Cancelled = Object.freeze({
+ isCancellationRequested: true,
+ onCancellationRequested: events_1.Event.None
+ });
+ function is(value) {
+ const candidate = value;
+ return candidate && (candidate === CancellationToken54.None || candidate === CancellationToken54.Cancelled || Is7.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested);
+ }
+ CancellationToken54.is = is;
+ })(CancellationToken53 = exports2.CancellationToken || (exports2.CancellationToken = {}));
+ var shortcutEvent = Object.freeze(function(callback, context) {
+ const handle = ral_1.default().timer.setTimeout(callback.bind(context), 0);
+ return { dispose() {
+ ral_1.default().timer.clearTimeout(handle);
+ } };
+ });
+ var MutableToken = class {
+ constructor() {
+ this._isCancelled = false;
+ }
+ cancel() {
+ if (!this._isCancelled) {
+ this._isCancelled = true;
+ if (this._emitter) {
+ this._emitter.fire(void 0);
+ this.dispose();
+ }
+ }
+ }
+ get isCancellationRequested() {
+ return this._isCancelled;
+ }
+ get onCancellationRequested() {
+ if (this._isCancelled) {
+ return shortcutEvent;
+ }
+ if (!this._emitter) {
+ this._emitter = new events_1.Emitter();
+ }
+ return this._emitter.event;
+ }
+ dispose() {
+ if (this._emitter) {
+ this._emitter.dispose();
+ this._emitter = void 0;
+ }
+ }
+ };
+ var CancellationTokenSource26 = class {
+ get token() {
+ if (!this._token) {
+ this._token = new MutableToken();
+ }
+ return this._token;
+ }
+ cancel() {
+ if (!this._token) {
+ this._token = CancellationToken53.Cancelled;
+ } else {
+ this._token.cancel();
+ }
+ }
+ dispose() {
+ if (!this._token) {
+ this._token = CancellationToken53.None;
+ } else if (this._token instanceof MutableToken) {
+ this._token.dispose();
+ }
+ }
+ };
+ exports2.CancellationTokenSource = CancellationTokenSource26;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/messageReader.js
+var require_messageReader = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/messageReader.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = void 0;
+ var ral_1 = require_ral();
+ var Is7 = require_is();
+ var events_1 = require_events();
+ var MessageReader2;
+ (function(MessageReader3) {
+ function is(value) {
+ let candidate = value;
+ return candidate && Is7.func(candidate.listen) && Is7.func(candidate.dispose) && Is7.func(candidate.onError) && Is7.func(candidate.onClose) && Is7.func(candidate.onPartialMessage);
+ }
+ MessageReader3.is = is;
+ })(MessageReader2 = exports2.MessageReader || (exports2.MessageReader = {}));
+ var AbstractMessageReader = class {
+ constructor() {
+ this.errorEmitter = new events_1.Emitter();
+ this.closeEmitter = new events_1.Emitter();
+ this.partialMessageEmitter = new events_1.Emitter();
+ }
+ dispose() {
+ this.errorEmitter.dispose();
+ this.closeEmitter.dispose();
+ }
+ get onError() {
+ return this.errorEmitter.event;
+ }
+ fireError(error) {
+ this.errorEmitter.fire(this.asError(error));
+ }
+ get onClose() {
+ return this.closeEmitter.event;
+ }
+ fireClose() {
+ this.closeEmitter.fire(void 0);
+ }
+ get onPartialMessage() {
+ return this.partialMessageEmitter.event;
+ }
+ firePartialMessage(info) {
+ this.partialMessageEmitter.fire(info);
+ }
+ asError(error) {
+ if (error instanceof Error) {
+ return error;
+ } else {
+ return new Error(`Reader received error. Reason: ${Is7.string(error.message) ? error.message : "unknown"}`);
+ }
+ }
+ };
+ exports2.AbstractMessageReader = AbstractMessageReader;
+ var ResolvedMessageReaderOptions;
+ (function(ResolvedMessageReaderOptions2) {
+ function fromOptions(options) {
+ var _a2;
+ let charset;
+ let result;
+ let contentDecoder;
+ const contentDecoders = new Map();
+ let contentTypeDecoder;
+ const contentTypeDecoders = new Map();
+ if (options === void 0 || typeof options === "string") {
+ charset = options !== null && options !== void 0 ? options : "utf-8";
+ } else {
+ charset = (_a2 = options.charset) !== null && _a2 !== void 0 ? _a2 : "utf-8";
+ if (options.contentDecoder !== void 0) {
+ contentDecoder = options.contentDecoder;
+ contentDecoders.set(contentDecoder.name, contentDecoder);
+ }
+ if (options.contentDecoders !== void 0) {
+ for (const decoder of options.contentDecoders) {
+ contentDecoders.set(decoder.name, decoder);
+ }
+ }
+ if (options.contentTypeDecoder !== void 0) {
+ contentTypeDecoder = options.contentTypeDecoder;
+ contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);
+ }
+ if (options.contentTypeDecoders !== void 0) {
+ for (const decoder of options.contentTypeDecoders) {
+ contentTypeDecoders.set(decoder.name, decoder);
+ }
+ }
+ }
+ if (contentTypeDecoder === void 0) {
+ contentTypeDecoder = ral_1.default().applicationJson.decoder;
+ contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);
+ }
+ return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };
+ }
+ ResolvedMessageReaderOptions2.fromOptions = fromOptions;
+ })(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));
+ var ReadableStreamMessageReader = class extends AbstractMessageReader {
+ constructor(readable, options) {
+ super();
+ this.readable = readable;
+ this.options = ResolvedMessageReaderOptions.fromOptions(options);
+ this.buffer = ral_1.default().messageBuffer.create(this.options.charset);
+ this._partialMessageTimeout = 1e4;
+ this.nextMessageLength = -1;
+ this.messageToken = 0;
+ }
+ set partialMessageTimeout(timeout) {
+ this._partialMessageTimeout = timeout;
+ }
+ get partialMessageTimeout() {
+ return this._partialMessageTimeout;
+ }
+ listen(callback) {
+ this.nextMessageLength = -1;
+ this.messageToken = 0;
+ this.partialMessageTimer = void 0;
+ this.callback = callback;
+ const result = this.readable.onData((data) => {
+ this.onData(data);
+ });
+ this.readable.onError((error) => this.fireError(error));
+ this.readable.onClose(() => this.fireClose());
+ return result;
+ }
+ onData(data) {
+ this.buffer.append(data);
+ while (true) {
+ if (this.nextMessageLength === -1) {
+ const headers = this.buffer.tryReadHeaders();
+ if (!headers) {
+ return;
+ }
+ const contentLength = headers.get("Content-Length");
+ if (!contentLength) {
+ throw new Error("Header must provide a Content-Length property.");
+ }
+ const length = parseInt(contentLength);
+ if (isNaN(length)) {
+ throw new Error("Content-Length value must be a number.");
+ }
+ this.nextMessageLength = length;
+ }
+ const body = this.buffer.tryReadBody(this.nextMessageLength);
+ if (body === void 0) {
+ this.setPartialMessageTimer();
+ return;
+ }
+ this.clearPartialMessageTimer();
+ this.nextMessageLength = -1;
+ let p;
+ if (this.options.contentDecoder !== void 0) {
+ p = this.options.contentDecoder.decode(body);
+ } else {
+ p = Promise.resolve(body);
+ }
+ p.then((value) => {
+ this.options.contentTypeDecoder.decode(value, this.options).then((msg) => {
+ this.callback(msg);
+ }, (error) => {
+ this.fireError(error);
+ });
+ }, (error) => {
+ this.fireError(error);
+ });
+ }
+ }
+ clearPartialMessageTimer() {
+ if (this.partialMessageTimer) {
+ ral_1.default().timer.clearTimeout(this.partialMessageTimer);
+ this.partialMessageTimer = void 0;
+ }
+ }
+ setPartialMessageTimer() {
+ this.clearPartialMessageTimer();
+ if (this._partialMessageTimeout <= 0) {
+ return;
+ }
+ this.partialMessageTimer = ral_1.default().timer.setTimeout((token, timeout) => {
+ this.partialMessageTimer = void 0;
+ if (token === this.messageToken) {
+ this.firePartialMessage({ messageToken: token, waitingTime: timeout });
+ this.setPartialMessageTimer();
+ }
+ }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);
+ }
+ };
+ exports2.ReadableStreamMessageReader = ReadableStreamMessageReader;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/semaphore.js
+var require_semaphore = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/semaphore.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.Semaphore = void 0;
+ var ral_1 = require_ral();
+ var Semaphore = class {
+ constructor(capacity = 1) {
+ if (capacity <= 0) {
+ throw new Error("Capacity must be greater than 0");
+ }
+ this._capacity = capacity;
+ this._active = 0;
+ this._waiting = [];
+ }
+ lock(thunk) {
+ return new Promise((resolve3, reject) => {
+ this._waiting.push({ thunk, resolve: resolve3, reject });
+ this.runNext();
+ });
+ }
+ get active() {
+ return this._active;
+ }
+ runNext() {
+ if (this._waiting.length === 0 || this._active === this._capacity) {
+ return;
+ }
+ ral_1.default().timer.setImmediate(() => this.doRunNext());
+ }
+ doRunNext() {
+ if (this._waiting.length === 0 || this._active === this._capacity) {
+ return;
+ }
+ const next = this._waiting.shift();
+ this._active++;
+ if (this._active > this._capacity) {
+ throw new Error(`To many thunks active`);
+ }
+ try {
+ const result = next.thunk();
+ if (result instanceof Promise) {
+ result.then((value) => {
+ this._active--;
+ next.resolve(value);
+ this.runNext();
+ }, (err) => {
+ this._active--;
+ next.reject(err);
+ this.runNext();
+ });
+ } else {
+ this._active--;
+ next.resolve(result);
+ this.runNext();
+ }
+ } catch (err) {
+ this._active--;
+ next.reject(err);
+ this.runNext();
+ }
+ }
+ };
+ exports2.Semaphore = Semaphore;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/messageWriter.js
+var require_messageWriter = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = void 0;
+ var ral_1 = require_ral();
+ var Is7 = require_is();
+ var semaphore_1 = require_semaphore();
+ var events_1 = require_events();
+ var ContentLength = "Content-Length: ";
+ var CRLF = "\r\n";
+ var MessageWriter2;
+ (function(MessageWriter3) {
+ function is(value) {
+ let candidate = value;
+ return candidate && Is7.func(candidate.dispose) && Is7.func(candidate.onClose) && Is7.func(candidate.onError) && Is7.func(candidate.write);
+ }
+ MessageWriter3.is = is;
+ })(MessageWriter2 = exports2.MessageWriter || (exports2.MessageWriter = {}));
+ var AbstractMessageWriter = class {
+ constructor() {
+ this.errorEmitter = new events_1.Emitter();
+ this.closeEmitter = new events_1.Emitter();
+ }
+ dispose() {
+ this.errorEmitter.dispose();
+ this.closeEmitter.dispose();
+ }
+ get onError() {
+ return this.errorEmitter.event;
+ }
+ fireError(error, message, count) {
+ this.errorEmitter.fire([this.asError(error), message, count]);
+ }
+ get onClose() {
+ return this.closeEmitter.event;
+ }
+ fireClose() {
+ this.closeEmitter.fire(void 0);
+ }
+ asError(error) {
+ if (error instanceof Error) {
+ return error;
+ } else {
+ return new Error(`Writer received error. Reason: ${Is7.string(error.message) ? error.message : "unknown"}`);
+ }
+ }
+ };
+ exports2.AbstractMessageWriter = AbstractMessageWriter;
+ var ResolvedMessageWriterOptions;
+ (function(ResolvedMessageWriterOptions2) {
+ function fromOptions(options) {
+ var _a2, _b;
+ if (options === void 0 || typeof options === "string") {
+ return { charset: options !== null && options !== void 0 ? options : "utf-8", contentTypeEncoder: ral_1.default().applicationJson.encoder };
+ } else {
+ return { charset: (_a2 = options.charset) !== null && _a2 !== void 0 ? _a2 : "utf-8", contentEncoder: options.contentEncoder, contentTypeEncoder: (_b = options.contentTypeEncoder) !== null && _b !== void 0 ? _b : ral_1.default().applicationJson.encoder };
+ }
+ }
+ ResolvedMessageWriterOptions2.fromOptions = fromOptions;
+ })(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));
+ var WriteableStreamMessageWriter = class extends AbstractMessageWriter {
+ constructor(writable, options) {
+ super();
+ this.writable = writable;
+ this.options = ResolvedMessageWriterOptions.fromOptions(options);
+ this.errorCount = 0;
+ this.writeSemaphore = new semaphore_1.Semaphore(1);
+ this.writable.onError((error) => this.fireError(error));
+ this.writable.onClose(() => this.fireClose());
+ }
+ async write(msg) {
+ return this.writeSemaphore.lock(async () => {
+ const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {
+ if (this.options.contentEncoder !== void 0) {
+ return this.options.contentEncoder.encode(buffer);
+ } else {
+ return buffer;
+ }
+ });
+ return payload.then((buffer) => {
+ const headers = [];
+ headers.push(ContentLength, buffer.byteLength.toString(), CRLF);
+ headers.push(CRLF);
+ return this.doWrite(msg, headers, buffer);
+ }, (error) => {
+ this.fireError(error);
+ throw error;
+ });
+ });
+ }
+ async doWrite(msg, headers, data) {
+ try {
+ await this.writable.write(headers.join(""), "ascii");
+ return this.writable.write(data);
+ } catch (error) {
+ this.handleError(error, msg);
+ return Promise.reject(error);
+ }
+ }
+ handleError(error, msg) {
+ this.errorCount++;
+ this.fireError(error, msg, this.errorCount);
+ }
+ end() {
+ this.writable.end();
+ }
+ };
+ exports2.WriteableStreamMessageWriter = WriteableStreamMessageWriter;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/linkedMap.js
+var require_linkedMap = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.LRUCache = exports2.LinkedMap = exports2.Touch = void 0;
+ var Touch;
+ (function(Touch2) {
+ Touch2.None = 0;
+ Touch2.First = 1;
+ Touch2.AsOld = Touch2.First;
+ Touch2.Last = 2;
+ Touch2.AsNew = Touch2.Last;
+ })(Touch = exports2.Touch || (exports2.Touch = {}));
+ var LinkedMap = class {
+ constructor() {
+ this[Symbol.toStringTag] = "LinkedMap";
+ this._map = new Map();
+ this._head = void 0;
+ this._tail = void 0;
+ this._size = 0;
+ this._state = 0;
+ }
+ clear() {
+ this._map.clear();
+ this._head = void 0;
+ this._tail = void 0;
+ this._size = 0;
+ this._state++;
+ }
+ isEmpty() {
+ return !this._head && !this._tail;
+ }
+ get size() {
+ return this._size;
+ }
+ get first() {
+ var _a2;
+ return (_a2 = this._head) === null || _a2 === void 0 ? void 0 : _a2.value;
+ }
+ get last() {
+ var _a2;
+ return (_a2 = this._tail) === null || _a2 === void 0 ? void 0 : _a2.value;
+ }
+ has(key) {
+ return this._map.has(key);
+ }
+ get(key, touch = Touch.None) {
+ const item = this._map.get(key);
+ if (!item) {
+ return void 0;
+ }
+ if (touch !== Touch.None) {
+ this.touch(item, touch);
+ }
+ return item.value;
+ }
+ set(key, value, touch = Touch.None) {
+ let item = this._map.get(key);
+ if (item) {
+ item.value = value;
+ if (touch !== Touch.None) {
+ this.touch(item, touch);
+ }
+ } else {
+ item = { key, value, next: void 0, previous: void 0 };
+ switch (touch) {
+ case Touch.None:
+ this.addItemLast(item);
+ break;
+ case Touch.First:
+ this.addItemFirst(item);
+ break;
+ case Touch.Last:
+ this.addItemLast(item);
+ break;
+ default:
+ this.addItemLast(item);
+ break;
+ }
+ this._map.set(key, item);
+ this._size++;
+ }
+ return this;
+ }
+ delete(key) {
+ return !!this.remove(key);
+ }
+ remove(key) {
+ const item = this._map.get(key);
+ if (!item) {
+ return void 0;
+ }
+ this._map.delete(key);
+ this.removeItem(item);
+ this._size--;
+ return item.value;
+ }
+ shift() {
+ if (!this._head && !this._tail) {
+ return void 0;
+ }
+ if (!this._head || !this._tail) {
+ throw new Error("Invalid list");
+ }
+ const item = this._head;
+ this._map.delete(item.key);
+ this.removeItem(item);
+ this._size--;
+ return item.value;
+ }
+ forEach(callbackfn, thisArg) {
+ const state = this._state;
+ let current = this._head;
+ while (current) {
+ if (thisArg) {
+ callbackfn.bind(thisArg)(current.value, current.key, this);
+ } else {
+ callbackfn(current.value, current.key, this);
+ }
+ if (this._state !== state) {
+ throw new Error(`LinkedMap got modified during iteration.`);
+ }
+ current = current.next;
+ }
+ }
+ keys() {
+ const map = this;
+ const state = this._state;
+ let current = this._head;
+ const iterator = {
+ [Symbol.iterator]() {
+ return iterator;
+ },
+ next() {
+ if (map._state !== state) {
+ throw new Error(`LinkedMap got modified during iteration.`);
+ }
+ if (current) {
+ const result = { value: current.key, done: false };
+ current = current.next;
+ return result;
+ } else {
+ return { value: void 0, done: true };
+ }
+ }
+ };
+ return iterator;
+ }
+ values() {
+ const map = this;
+ const state = this._state;
+ let current = this._head;
+ const iterator = {
+ [Symbol.iterator]() {
+ return iterator;
+ },
+ next() {
+ if (map._state !== state) {
+ throw new Error(`LinkedMap got modified during iteration.`);
+ }
+ if (current) {
+ const result = { value: current.value, done: false };
+ current = current.next;
+ return result;
+ } else {
+ return { value: void 0, done: true };
+ }
+ }
+ };
+ return iterator;
+ }
+ entries() {
+ const map = this;
+ const state = this._state;
+ let current = this._head;
+ const iterator = {
+ [Symbol.iterator]() {
+ return iterator;
+ },
+ next() {
+ if (map._state !== state) {
+ throw new Error(`LinkedMap got modified during iteration.`);
+ }
+ if (current) {
+ const result = { value: [current.key, current.value], done: false };
+ current = current.next;
+ return result;
+ } else {
+ return { value: void 0, done: true };
+ }
+ }
+ };
+ return iterator;
+ }
+ [Symbol.iterator]() {
+ return this.entries();
+ }
+ trimOld(newSize) {
+ if (newSize >= this.size) {
+ return;
+ }
+ if (newSize === 0) {
+ this.clear();
+ return;
+ }
+ let current = this._head;
+ let currentSize = this.size;
+ while (current && currentSize > newSize) {
+ this._map.delete(current.key);
+ current = current.next;
+ currentSize--;
+ }
+ this._head = current;
+ this._size = currentSize;
+ if (current) {
+ current.previous = void 0;
+ }
+ this._state++;
+ }
+ addItemFirst(item) {
+ if (!this._head && !this._tail) {
+ this._tail = item;
+ } else if (!this._head) {
+ throw new Error("Invalid list");
+ } else {
+ item.next = this._head;
+ this._head.previous = item;
+ }
+ this._head = item;
+ this._state++;
+ }
+ addItemLast(item) {
+ if (!this._head && !this._tail) {
+ this._head = item;
+ } else if (!this._tail) {
+ throw new Error("Invalid list");
+ } else {
+ item.previous = this._tail;
+ this._tail.next = item;
+ }
+ this._tail = item;
+ this._state++;
+ }
+ removeItem(item) {
+ if (item === this._head && item === this._tail) {
+ this._head = void 0;
+ this._tail = void 0;
+ } else if (item === this._head) {
+ if (!item.next) {
+ throw new Error("Invalid list");
+ }
+ item.next.previous = void 0;
+ this._head = item.next;
+ } else if (item === this._tail) {
+ if (!item.previous) {
+ throw new Error("Invalid list");
+ }
+ item.previous.next = void 0;
+ this._tail = item.previous;
+ } else {
+ const next = item.next;
+ const previous = item.previous;
+ if (!next || !previous) {
+ throw new Error("Invalid list");
+ }
+ next.previous = previous;
+ previous.next = next;
+ }
+ item.next = void 0;
+ item.previous = void 0;
+ this._state++;
+ }
+ touch(item, touch) {
+ if (!this._head || !this._tail) {
+ throw new Error("Invalid list");
+ }
+ if (touch !== Touch.First && touch !== Touch.Last) {
+ return;
+ }
+ if (touch === Touch.First) {
+ if (item === this._head) {
+ return;
+ }
+ const next = item.next;
+ const previous = item.previous;
+ if (item === this._tail) {
+ previous.next = void 0;
+ this._tail = previous;
+ } else {
+ next.previous = previous;
+ previous.next = next;
+ }
+ item.previous = void 0;
+ item.next = this._head;
+ this._head.previous = item;
+ this._head = item;
+ this._state++;
+ } else if (touch === Touch.Last) {
+ if (item === this._tail) {
+ return;
+ }
+ const next = item.next;
+ const previous = item.previous;
+ if (item === this._head) {
+ next.previous = void 0;
+ this._head = next;
+ } else {
+ next.previous = previous;
+ previous.next = next;
+ }
+ item.next = void 0;
+ item.previous = this._tail;
+ this._tail.next = item;
+ this._tail = item;
+ this._state++;
+ }
+ }
+ toJSON() {
+ const data = [];
+ this.forEach((value, key) => {
+ data.push([key, value]);
+ });
+ return data;
+ }
+ fromJSON(data) {
+ this.clear();
+ for (const [key, value] of data) {
+ this.set(key, value);
+ }
+ }
+ };
+ exports2.LinkedMap = LinkedMap;
+ var LRUCache = class extends LinkedMap {
+ constructor(limit, ratio = 1) {
+ super();
+ this._limit = limit;
+ this._ratio = Math.min(Math.max(0, ratio), 1);
+ }
+ get limit() {
+ return this._limit;
+ }
+ set limit(limit) {
+ this._limit = limit;
+ this.checkTrim();
+ }
+ get ratio() {
+ return this._ratio;
+ }
+ set ratio(ratio) {
+ this._ratio = Math.min(Math.max(0, ratio), 1);
+ this.checkTrim();
+ }
+ get(key, touch = Touch.AsNew) {
+ return super.get(key, touch);
+ }
+ peek(key) {
+ return super.get(key, Touch.None);
+ }
+ set(key, value) {
+ super.set(key, value, Touch.Last);
+ this.checkTrim();
+ return this;
+ }
+ checkTrim() {
+ if (this.size > this._limit) {
+ this.trimOld(Math.round(this._limit * this._ratio));
+ }
+ }
+ };
+ exports2.LRUCache = LRUCache;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/connection.js
+var require_connection2 = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/connection.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.createMessageConnection = exports2.ConnectionOptions = exports2.CancellationStrategy = exports2.CancellationSenderStrategy = exports2.CancellationReceiverStrategy = exports2.ConnectionStrategy = exports2.ConnectionError = exports2.ConnectionErrors = exports2.LogTraceNotification = exports2.SetTraceNotification = exports2.TraceFormat = exports2.Trace = exports2.NullLogger = exports2.ProgressType = void 0;
+ var ral_1 = require_ral();
+ var Is7 = require_is();
+ var messages_1 = require_messages();
+ var linkedMap_1 = require_linkedMap();
+ var events_1 = require_events();
+ var cancellation_1 = require_cancellation();
+ var CancelNotification;
+ (function(CancelNotification2) {
+ CancelNotification2.type = new messages_1.NotificationType("$/cancelRequest");
+ })(CancelNotification || (CancelNotification = {}));
+ var ProgressNotification2;
+ (function(ProgressNotification3) {
+ ProgressNotification3.type = new messages_1.NotificationType("$/progress");
+ })(ProgressNotification2 || (ProgressNotification2 = {}));
+ var ProgressType4 = class {
+ constructor() {
+ }
+ };
+ exports2.ProgressType = ProgressType4;
+ var StarRequestHandler;
+ (function(StarRequestHandler2) {
+ function is(value) {
+ return Is7.func(value);
+ }
+ StarRequestHandler2.is = is;
+ })(StarRequestHandler || (StarRequestHandler = {}));
+ exports2.NullLogger = Object.freeze({
+ error: () => {
+ },
+ warn: () => {
+ },
+ info: () => {
+ },
+ log: () => {
+ }
+ });
+ var Trace2;
+ (function(Trace3) {
+ Trace3[Trace3["Off"] = 0] = "Off";
+ Trace3[Trace3["Messages"] = 1] = "Messages";
+ Trace3[Trace3["Verbose"] = 2] = "Verbose";
+ })(Trace2 = exports2.Trace || (exports2.Trace = {}));
+ (function(Trace3) {
+ function fromString(value) {
+ if (!Is7.string(value)) {
+ return Trace3.Off;
+ }
+ value = value.toLowerCase();
+ switch (value) {
+ case "off":
+ return Trace3.Off;
+ case "messages":
+ return Trace3.Messages;
+ case "verbose":
+ return Trace3.Verbose;
+ default:
+ return Trace3.Off;
+ }
+ }
+ Trace3.fromString = fromString;
+ function toString(value) {
+ switch (value) {
+ case Trace3.Off:
+ return "off";
+ case Trace3.Messages:
+ return "messages";
+ case Trace3.Verbose:
+ return "verbose";
+ default:
+ return "off";
+ }
+ }
+ Trace3.toString = toString;
+ })(Trace2 = exports2.Trace || (exports2.Trace = {}));
+ var TraceFormat2;
+ (function(TraceFormat3) {
+ TraceFormat3["Text"] = "text";
+ TraceFormat3["JSON"] = "json";
+ })(TraceFormat2 = exports2.TraceFormat || (exports2.TraceFormat = {}));
+ (function(TraceFormat3) {
+ function fromString(value) {
+ value = value.toLowerCase();
+ if (value === "json") {
+ return TraceFormat3.JSON;
+ } else {
+ return TraceFormat3.Text;
+ }
+ }
+ TraceFormat3.fromString = fromString;
+ })(TraceFormat2 = exports2.TraceFormat || (exports2.TraceFormat = {}));
+ var SetTraceNotification;
+ (function(SetTraceNotification2) {
+ SetTraceNotification2.type = new messages_1.NotificationType("$/setTrace");
+ })(SetTraceNotification = exports2.SetTraceNotification || (exports2.SetTraceNotification = {}));
+ var LogTraceNotification;
+ (function(LogTraceNotification2) {
+ LogTraceNotification2.type = new messages_1.NotificationType("$/logTrace");
+ })(LogTraceNotification = exports2.LogTraceNotification || (exports2.LogTraceNotification = {}));
+ var ConnectionErrors;
+ (function(ConnectionErrors2) {
+ ConnectionErrors2[ConnectionErrors2["Closed"] = 1] = "Closed";
+ ConnectionErrors2[ConnectionErrors2["Disposed"] = 2] = "Disposed";
+ ConnectionErrors2[ConnectionErrors2["AlreadyListening"] = 3] = "AlreadyListening";
+ })(ConnectionErrors = exports2.ConnectionErrors || (exports2.ConnectionErrors = {}));
+ var ConnectionError = class extends Error {
+ constructor(code, message) {
+ super(message);
+ this.code = code;
+ Object.setPrototypeOf(this, ConnectionError.prototype);
+ }
+ };
+ exports2.ConnectionError = ConnectionError;
+ var ConnectionStrategy;
+ (function(ConnectionStrategy2) {
+ function is(value) {
+ const candidate = value;
+ return candidate && Is7.func(candidate.cancelUndispatched);
+ }
+ ConnectionStrategy2.is = is;
+ })(ConnectionStrategy = exports2.ConnectionStrategy || (exports2.ConnectionStrategy = {}));
+ var CancellationReceiverStrategy;
+ (function(CancellationReceiverStrategy2) {
+ CancellationReceiverStrategy2.Message = Object.freeze({
+ createCancellationTokenSource(_) {
+ return new cancellation_1.CancellationTokenSource();
+ }
+ });
+ function is(value) {
+ const candidate = value;
+ return candidate && Is7.func(candidate.createCancellationTokenSource);
+ }
+ CancellationReceiverStrategy2.is = is;
+ })(CancellationReceiverStrategy = exports2.CancellationReceiverStrategy || (exports2.CancellationReceiverStrategy = {}));
+ var CancellationSenderStrategy;
+ (function(CancellationSenderStrategy2) {
+ CancellationSenderStrategy2.Message = Object.freeze({
+ sendCancellation(conn, id) {
+ conn.sendNotification(CancelNotification.type, { id });
+ },
+ cleanup(_) {
+ }
+ });
+ function is(value) {
+ const candidate = value;
+ return candidate && Is7.func(candidate.sendCancellation) && Is7.func(candidate.cleanup);
+ }
+ CancellationSenderStrategy2.is = is;
+ })(CancellationSenderStrategy = exports2.CancellationSenderStrategy || (exports2.CancellationSenderStrategy = {}));
+ var CancellationStrategy2;
+ (function(CancellationStrategy3) {
+ CancellationStrategy3.Message = Object.freeze({
+ receiver: CancellationReceiverStrategy.Message,
+ sender: CancellationSenderStrategy.Message
+ });
+ function is(value) {
+ const candidate = value;
+ return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);
+ }
+ CancellationStrategy3.is = is;
+ })(CancellationStrategy2 = exports2.CancellationStrategy || (exports2.CancellationStrategy = {}));
+ var ConnectionOptions;
+ (function(ConnectionOptions2) {
+ function is(value) {
+ const candidate = value;
+ return candidate && (CancellationStrategy2.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy));
+ }
+ ConnectionOptions2.is = is;
+ })(ConnectionOptions = exports2.ConnectionOptions || (exports2.ConnectionOptions = {}));
+ var ConnectionState;
+ (function(ConnectionState2) {
+ ConnectionState2[ConnectionState2["New"] = 1] = "New";
+ ConnectionState2[ConnectionState2["Listening"] = 2] = "Listening";
+ ConnectionState2[ConnectionState2["Closed"] = 3] = "Closed";
+ ConnectionState2[ConnectionState2["Disposed"] = 4] = "Disposed";
+ })(ConnectionState || (ConnectionState = {}));
+ function createMessageConnection(messageReader, messageWriter, _logger, options) {
+ const logger113 = _logger !== void 0 ? _logger : exports2.NullLogger;
+ let sequenceNumber = 0;
+ let notificationSquenceNumber = 0;
+ let unknownResponseSquenceNumber = 0;
+ const version2 = "2.0";
+ let starRequestHandler = void 0;
+ const requestHandlers = Object.create(null);
+ let starNotificationHandler = void 0;
+ const notificationHandlers = Object.create(null);
+ const progressHandlers = new Map();
+ let timer;
+ let messageQueue = new linkedMap_1.LinkedMap();
+ let responsePromises = Object.create(null);
+ let requestTokens = Object.create(null);
+ let trace = Trace2.Off;
+ let traceFormat = TraceFormat2.Text;
+ let tracer;
+ let state = ConnectionState.New;
+ const errorEmitter = new events_1.Emitter();
+ const closeEmitter = new events_1.Emitter();
+ const unhandledNotificationEmitter = new events_1.Emitter();
+ const unhandledProgressEmitter = new events_1.Emitter();
+ const disposeEmitter = new events_1.Emitter();
+ const cancellationStrategy = options && options.cancellationStrategy ? options.cancellationStrategy : CancellationStrategy2.Message;
+ function createRequestQueueKey(id) {
+ if (id === null) {
+ throw new Error(`Can't send requests with id null since the response can't be correlated.`);
+ }
+ return "req-" + id.toString();
+ }
+ function createResponseQueueKey(id) {
+ if (id === null) {
+ return "res-unknown-" + (++unknownResponseSquenceNumber).toString();
+ } else {
+ return "res-" + id.toString();
+ }
+ }
+ function createNotificationQueueKey() {
+ return "not-" + (++notificationSquenceNumber).toString();
+ }
+ function addMessageToQueue(queue, message) {
+ if (messages_1.isRequestMessage(message)) {
+ queue.set(createRequestQueueKey(message.id), message);
+ } else if (messages_1.isResponseMessage(message)) {
+ queue.set(createResponseQueueKey(message.id), message);
+ } else {
+ queue.set(createNotificationQueueKey(), message);
+ }
+ }
+ function cancelUndispatched(_message) {
+ return void 0;
+ }
+ function isListening() {
+ return state === ConnectionState.Listening;
+ }
+ function isClosed() {
+ return state === ConnectionState.Closed;
+ }
+ function isDisposed() {
+ return state === ConnectionState.Disposed;
+ }
+ function closeHandler() {
+ if (state === ConnectionState.New || state === ConnectionState.Listening) {
+ state = ConnectionState.Closed;
+ closeEmitter.fire(void 0);
+ }
+ }
+ function readErrorHandler(error) {
+ errorEmitter.fire([error, void 0, void 0]);
+ }
+ function writeErrorHandler(data) {
+ errorEmitter.fire(data);
+ }
+ messageReader.onClose(closeHandler);
+ messageReader.onError(readErrorHandler);
+ messageWriter.onClose(closeHandler);
+ messageWriter.onError(writeErrorHandler);
+ function triggerMessageQueue() {
+ if (timer || messageQueue.size === 0) {
+ return;
+ }
+ timer = ral_1.default().timer.setImmediate(() => {
+ timer = void 0;
+ processMessageQueue();
+ });
+ }
+ function processMessageQueue() {
+ if (messageQueue.size === 0) {
+ return;
+ }
+ const message = messageQueue.shift();
+ try {
+ if (messages_1.isRequestMessage(message)) {
+ handleRequest(message);
+ } else if (messages_1.isNotificationMessage(message)) {
+ handleNotification(message);
+ } else if (messages_1.isResponseMessage(message)) {
+ handleResponse(message);
+ } else {
+ handleInvalidMessage(message);
+ }
+ } finally {
+ triggerMessageQueue();
+ }
+ }
+ const callback = (message) => {
+ try {
+ if (messages_1.isNotificationMessage(message) && message.method === CancelNotification.type.method) {
+ const key = createRequestQueueKey(message.params.id);
+ const toCancel = messageQueue.get(key);
+ if (messages_1.isRequestMessage(toCancel)) {
+ const strategy = options === null || options === void 0 ? void 0 : options.connectionStrategy;
+ const response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);
+ if (response && (response.error !== void 0 || response.result !== void 0)) {
+ messageQueue.delete(key);
+ response.id = toCancel.id;
+ traceSendingResponse(response, message.method, Date.now());
+ messageWriter.write(response);
+ return;
+ }
+ }
+ }
+ addMessageToQueue(messageQueue, message);
+ } finally {
+ triggerMessageQueue();
+ }
+ };
+ function handleRequest(requestMessage) {
+ if (isDisposed()) {
+ return;
+ }
+ function reply(resultOrError, method, startTime2) {
+ const message = {
+ jsonrpc: version2,
+ id: requestMessage.id
+ };
+ if (resultOrError instanceof messages_1.ResponseError) {
+ message.error = resultOrError.toJson();
+ } else {
+ message.result = resultOrError === void 0 ? null : resultOrError;
+ }
+ traceSendingResponse(message, method, startTime2);
+ messageWriter.write(message);
+ }
+ function replyError(error, method, startTime2) {
+ const message = {
+ jsonrpc: version2,
+ id: requestMessage.id,
+ error: error.toJson()
+ };
+ traceSendingResponse(message, method, startTime2);
+ messageWriter.write(message);
+ }
+ function replySuccess(result, method, startTime2) {
+ if (result === void 0) {
+ result = null;
+ }
+ const message = {
+ jsonrpc: version2,
+ id: requestMessage.id,
+ result
+ };
+ traceSendingResponse(message, method, startTime2);
+ messageWriter.write(message);
+ }
+ traceReceivedRequest(requestMessage);
+ const element = requestHandlers[requestMessage.method];
+ let type;
+ let requestHandler;
+ if (element) {
+ type = element.type;
+ requestHandler = element.handler;
+ }
+ const startTime = Date.now();
+ if (requestHandler || starRequestHandler) {
+ const tokenKey = String(requestMessage.id);
+ const cancellationSource = cancellationStrategy.receiver.createCancellationTokenSource(tokenKey);
+ requestTokens[tokenKey] = cancellationSource;
+ try {
+ let handlerResult;
+ if (requestHandler) {
+ if (requestMessage.params === void 0) {
+ if (type !== void 0 && type.numberOfParams !== 0) {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but recevied none.`), requestMessage.method, startTime);
+ return;
+ }
+ handlerResult = requestHandler(cancellationSource.token);
+ } else if (Array.isArray(requestMessage.params)) {
+ if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byName) {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);
+ return;
+ }
+ handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);
+ } else {
+ if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);
+ return;
+ }
+ handlerResult = requestHandler(requestMessage.params, cancellationSource.token);
+ }
+ } else if (starRequestHandler) {
+ handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);
+ }
+ const promise = handlerResult;
+ if (!handlerResult) {
+ delete requestTokens[tokenKey];
+ replySuccess(handlerResult, requestMessage.method, startTime);
+ } else if (promise.then) {
+ promise.then((resultOrError) => {
+ delete requestTokens[tokenKey];
+ reply(resultOrError, requestMessage.method, startTime);
+ }, (error) => {
+ delete requestTokens[tokenKey];
+ if (error instanceof messages_1.ResponseError) {
+ replyError(error, requestMessage.method, startTime);
+ } else if (error && Is7.string(error.message)) {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);
+ } else {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);
+ }
+ });
+ } else {
+ delete requestTokens[tokenKey];
+ reply(handlerResult, requestMessage.method, startTime);
+ }
+ } catch (error) {
+ delete requestTokens[tokenKey];
+ if (error instanceof messages_1.ResponseError) {
+ reply(error, requestMessage.method, startTime);
+ } else if (error && Is7.string(error.message)) {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);
+ } else {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);
+ }
+ }
+ } else {
+ replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);
+ }
+ }
+ function handleResponse(responseMessage) {
+ if (isDisposed()) {
+ return;
+ }
+ if (responseMessage.id === null) {
+ if (responseMessage.error) {
+ logger113.error(`Received response message without id: Error is:
+${JSON.stringify(responseMessage.error, void 0, 4)}`);
+ } else {
+ logger113.error(`Received response message without id. No further error information provided.`);
+ }
+ } else {
+ const key = String(responseMessage.id);
+ const responsePromise = responsePromises[key];
+ traceReceivedResponse(responseMessage, responsePromise);
+ if (responsePromise) {
+ delete responsePromises[key];
+ try {
+ if (responseMessage.error) {
+ const error = responseMessage.error;
+ responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));
+ } else if (responseMessage.result !== void 0) {
+ responsePromise.resolve(responseMessage.result);
+ } else {
+ throw new Error("Should never happen.");
+ }
+ } catch (error) {
+ if (error.message) {
+ logger113.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);
+ } else {
+ logger113.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);
+ }
+ }
+ }
+ }
+ }
+ function handleNotification(message) {
+ if (isDisposed()) {
+ return;
+ }
+ let type = void 0;
+ let notificationHandler;
+ if (message.method === CancelNotification.type.method) {
+ notificationHandler = (params) => {
+ const id = params.id;
+ const source = requestTokens[String(id)];
+ if (source) {
+ source.cancel();
+ }
+ };
+ } else {
+ const element = notificationHandlers[message.method];
+ if (element) {
+ notificationHandler = element.handler;
+ type = element.type;
+ }
+ }
+ if (notificationHandler || starNotificationHandler) {
+ try {
+ traceReceivedNotification(message);
+ if (notificationHandler) {
+ if (message.params === void 0) {
+ if (type !== void 0) {
+ if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {
+ logger113.error(`Notification ${message.method} defines ${type.numberOfParams} params but recevied none.`);
+ }
+ }
+ notificationHandler();
+ } else if (Array.isArray(message.params)) {
+ if (type !== void 0) {
+ if (type.parameterStructures === messages_1.ParameterStructures.byName) {
+ logger113.error(`Notification ${message.method} defines parameters by name but received parameters by position`);
+ }
+ if (type.numberOfParams !== message.params.length) {
+ logger113.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${message.params.length} argumennts`);
+ }
+ }
+ notificationHandler(...message.params);
+ } else {
+ if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) {
+ logger113.error(`Notification ${message.method} defines parameters by position but received parameters by name`);
+ }
+ notificationHandler(message.params);
+ }
+ } else if (starNotificationHandler) {
+ starNotificationHandler(message.method, message.params);
+ }
+ } catch (error) {
+ if (error.message) {
+ logger113.error(`Notification handler '${message.method}' failed with message: ${error.message}`);
+ } else {
+ logger113.error(`Notification handler '${message.method}' failed unexpectedly.`);
+ }
+ }
+ } else {
+ unhandledNotificationEmitter.fire(message);
+ }
+ }
+ function handleInvalidMessage(message) {
+ if (!message) {
+ logger113.error("Received empty message.");
+ return;
+ }
+ logger113.error(`Received message which is neither a response nor a notification message:
+${JSON.stringify(message, null, 4)}`);
+ const responseMessage = message;
+ if (Is7.string(responseMessage.id) || Is7.number(responseMessage.id)) {
+ const key = String(responseMessage.id);
+ const responseHandler = responsePromises[key];
+ if (responseHandler) {
+ responseHandler.reject(new Error("The received response has neither a result nor an error property."));
+ }
+ }
+ }
+ function traceSendingRequest(message) {
+ if (trace === Trace2.Off || !tracer) {
+ return;
+ }
+ if (traceFormat === TraceFormat2.Text) {
+ let data = void 0;
+ if (trace === Trace2.Verbose && message.params) {
+ data = `Params: ${JSON.stringify(message.params, null, 4)}
+
+`;
+ }
+ tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);
+ } else {
+ logLSPMessage("send-request", message);
+ }
+ }
+ function traceSendingNotification(message) {
+ if (trace === Trace2.Off || !tracer) {
+ return;
+ }
+ if (traceFormat === TraceFormat2.Text) {
+ let data = void 0;
+ if (trace === Trace2.Verbose) {
+ if (message.params) {
+ data = `Params: ${JSON.stringify(message.params, null, 4)}
+
+`;
+ } else {
+ data = "No parameters provided.\n\n";
+ }
+ }
+ tracer.log(`Sending notification '${message.method}'.`, data);
+ } else {
+ logLSPMessage("send-notification", message);
+ }
+ }
+ function traceSendingResponse(message, method, startTime) {
+ if (trace === Trace2.Off || !tracer) {
+ return;
+ }
+ if (traceFormat === TraceFormat2.Text) {
+ let data = void 0;
+ if (trace === Trace2.Verbose) {
+ if (message.error && message.error.data) {
+ data = `Error data: ${JSON.stringify(message.error.data, null, 4)}
+
+`;
+ } else {
+ if (message.result) {
+ data = `Result: ${JSON.stringify(message.result, null, 4)}
+
+`;
+ } else if (message.error === void 0) {
+ data = "No result returned.\n\n";
+ }
+ }
+ }
+ tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);
+ } else {
+ logLSPMessage("send-response", message);
+ }
+ }
+ function traceReceivedRequest(message) {
+ if (trace === Trace2.Off || !tracer) {
+ return;
+ }
+ if (traceFormat === TraceFormat2.Text) {
+ let data = void 0;
+ if (trace === Trace2.Verbose && message.params) {
+ data = `Params: ${JSON.stringify(message.params, null, 4)}
+
+`;
+ }
+ tracer.log(`Received request '${message.method} - (${message.id})'.`, data);
+ } else {
+ logLSPMessage("receive-request", message);
+ }
+ }
+ function traceReceivedNotification(message) {
+ if (trace === Trace2.Off || !tracer || message.method === LogTraceNotification.type.method) {
+ return;
+ }
+ if (traceFormat === TraceFormat2.Text) {
+ let data = void 0;
+ if (trace === Trace2.Verbose) {
+ if (message.params) {
+ data = `Params: ${JSON.stringify(message.params, null, 4)}
+
+`;
+ } else {
+ data = "No parameters provided.\n\n";
+ }
+ }
+ tracer.log(`Received notification '${message.method}'.`, data);
+ } else {
+ logLSPMessage("receive-notification", message);
+ }
+ }
+ function traceReceivedResponse(message, responsePromise) {
+ if (trace === Trace2.Off || !tracer) {
+ return;
+ }
+ if (traceFormat === TraceFormat2.Text) {
+ let data = void 0;
+ if (trace === Trace2.Verbose) {
+ if (message.error && message.error.data) {
+ data = `Error data: ${JSON.stringify(message.error.data, null, 4)}
+
+`;
+ } else {
+ if (message.result) {
+ data = `Result: ${JSON.stringify(message.result, null, 4)}
+
+`;
+ } else if (message.error === void 0) {
+ data = "No result returned.\n\n";
+ }
+ }
+ }
+ if (responsePromise) {
+ const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : "";
+ tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);
+ } else {
+ tracer.log(`Received response ${message.id} without active response promise.`, data);
+ }
+ } else {
+ logLSPMessage("receive-response", message);
+ }
+ }
+ function logLSPMessage(type, message) {
+ if (!tracer || trace === Trace2.Off) {
+ return;
+ }
+ const lspMessage = {
+ isLSPMessage: true,
+ type,
+ message,
+ timestamp: Date.now()
+ };
+ tracer.log(lspMessage);
+ }
+ function throwIfClosedOrDisposed() {
+ if (isClosed()) {
+ throw new ConnectionError(ConnectionErrors.Closed, "Connection is closed.");
+ }
+ if (isDisposed()) {
+ throw new ConnectionError(ConnectionErrors.Disposed, "Connection is disposed.");
+ }
+ }
+ function throwIfListening() {
+ if (isListening()) {
+ throw new ConnectionError(ConnectionErrors.AlreadyListening, "Connection is already listening");
+ }
+ }
+ function throwIfNotListening() {
+ if (!isListening()) {
+ throw new Error("Call listen() first.");
+ }
+ }
+ function undefinedToNull(param) {
+ if (param === void 0) {
+ return null;
+ } else {
+ return param;
+ }
+ }
+ function nullToUndefined(param) {
+ if (param === null) {
+ return void 0;
+ } else {
+ return param;
+ }
+ }
+ function isNamedParam(param) {
+ return param !== void 0 && param !== null && !Array.isArray(param) && typeof param === "object";
+ }
+ function computeSingleParam(parameterStructures, param) {
+ switch (parameterStructures) {
+ case messages_1.ParameterStructures.auto:
+ if (isNamedParam(param)) {
+ return nullToUndefined(param);
+ } else {
+ return [undefinedToNull(param)];
+ }
+ break;
+ case messages_1.ParameterStructures.byName:
+ if (!isNamedParam(param)) {
+ throw new Error(`Recevied parameters by name but param is not an object literal.`);
+ }
+ return nullToUndefined(param);
+ case messages_1.ParameterStructures.byPosition:
+ return [undefinedToNull(param)];
+ default:
+ throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);
+ }
+ }
+ function computeMessageParams(type, params) {
+ let result;
+ const numberOfParams = type.numberOfParams;
+ switch (numberOfParams) {
+ case 0:
+ result = void 0;
+ break;
+ case 1:
+ result = computeSingleParam(type.parameterStructures, params[0]);
+ break;
+ default:
+ result = [];
+ for (let i = 0; i < params.length && i < numberOfParams; i++) {
+ result.push(undefinedToNull(params[i]));
+ }
+ if (params.length < numberOfParams) {
+ for (let i = params.length; i < numberOfParams; i++) {
+ result.push(null);
+ }
+ }
+ break;
+ }
+ return result;
+ }
+ const connection = {
+ sendNotification: (type, ...args) => {
+ throwIfClosedOrDisposed();
+ let method;
+ let messageParams;
+ if (Is7.string(type)) {
+ method = type;
+ const first = args[0];
+ let paramStart = 0;
+ let parameterStructures = messages_1.ParameterStructures.auto;
+ if (messages_1.ParameterStructures.is(first)) {
+ paramStart = 1;
+ parameterStructures = first;
+ }
+ let paramEnd = args.length;
+ const numberOfParams = paramEnd - paramStart;
+ switch (numberOfParams) {
+ case 0:
+ messageParams = void 0;
+ break;
+ case 1:
+ messageParams = computeSingleParam(parameterStructures, args[paramStart]);
+ break;
+ default:
+ if (parameterStructures === messages_1.ParameterStructures.byName) {
+ throw new Error(`Recevied ${numberOfParams} parameters for 'by Name' notification parameter structure.`);
+ }
+ messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value));
+ break;
+ }
+ } else {
+ const params = args;
+ method = type.method;
+ messageParams = computeMessageParams(type, params);
+ }
+ const notificationMessage = {
+ jsonrpc: version2,
+ method,
+ params: messageParams
+ };
+ traceSendingNotification(notificationMessage);
+ messageWriter.write(notificationMessage);
+ },
+ onNotification: (type, handler) => {
+ throwIfClosedOrDisposed();
+ let method;
+ if (Is7.func(type)) {
+ starNotificationHandler = type;
+ } else if (handler) {
+ if (Is7.string(type)) {
+ method = type;
+ notificationHandlers[type] = { type: void 0, handler };
+ } else {
+ method = type.method;
+ notificationHandlers[type.method] = { type, handler };
+ }
+ }
+ return {
+ dispose: () => {
+ if (method !== void 0) {
+ delete notificationHandlers[method];
+ } else {
+ starNotificationHandler = void 0;
+ }
+ }
+ };
+ },
+ onProgress: (_type, token, handler) => {
+ if (progressHandlers.has(token)) {
+ throw new Error(`Progress handler for token ${token} already registered`);
+ }
+ progressHandlers.set(token, handler);
+ return {
+ dispose: () => {
+ progressHandlers.delete(token);
+ }
+ };
+ },
+ sendProgress: (_type, token, value) => {
+ connection.sendNotification(ProgressNotification2.type, { token, value });
+ },
+ onUnhandledProgress: unhandledProgressEmitter.event,
+ sendRequest: (type, ...args) => {
+ throwIfClosedOrDisposed();
+ throwIfNotListening();
+ let method;
+ let messageParams;
+ let token = void 0;
+ if (Is7.string(type)) {
+ method = type;
+ const first = args[0];
+ const last = args[args.length - 1];
+ let paramStart = 0;
+ let parameterStructures = messages_1.ParameterStructures.auto;
+ if (messages_1.ParameterStructures.is(first)) {
+ paramStart = 1;
+ parameterStructures = first;
+ }
+ let paramEnd = args.length;
+ if (cancellation_1.CancellationToken.is(last)) {
+ paramEnd = paramEnd - 1;
+ token = last;
+ }
+ const numberOfParams = paramEnd - paramStart;
+ switch (numberOfParams) {
+ case 0:
+ messageParams = void 0;
+ break;
+ case 1:
+ messageParams = computeSingleParam(parameterStructures, args[paramStart]);
+ break;
+ default:
+ if (parameterStructures === messages_1.ParameterStructures.byName) {
+ throw new Error(`Recevied ${numberOfParams} parameters for 'by Name' request parameter structure.`);
+ }
+ messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value));
+ break;
+ }
+ } else {
+ const params = args;
+ method = type.method;
+ messageParams = computeMessageParams(type, params);
+ const numberOfParams = type.numberOfParams;
+ token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : void 0;
+ }
+ const id = sequenceNumber++;
+ let disposable;
+ if (token) {
+ disposable = token.onCancellationRequested(() => {
+ cancellationStrategy.sender.sendCancellation(connection, id);
+ });
+ }
+ const result = new Promise((resolve3, reject) => {
+ const requestMessage = {
+ jsonrpc: version2,
+ id,
+ method,
+ params: messageParams
+ };
+ const resolveWithCleanup = (r) => {
+ resolve3(r);
+ cancellationStrategy.sender.cleanup(id);
+ disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
+ };
+ const rejectWithCleanup = (r) => {
+ reject(r);
+ cancellationStrategy.sender.cleanup(id);
+ disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
+ };
+ let responsePromise = { method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };
+ traceSendingRequest(requestMessage);
+ try {
+ messageWriter.write(requestMessage);
+ } catch (e) {
+ responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, e.message ? e.message : "Unknown reason"));
+ responsePromise = null;
+ }
+ if (responsePromise) {
+ responsePromises[String(id)] = responsePromise;
+ }
+ });
+ return result;
+ },
+ onRequest: (type, handler) => {
+ throwIfClosedOrDisposed();
+ let method = null;
+ if (StarRequestHandler.is(type)) {
+ method = void 0;
+ starRequestHandler = type;
+ } else if (Is7.string(type)) {
+ method = null;
+ if (handler !== void 0) {
+ method = type;
+ requestHandlers[type] = { handler, type: void 0 };
+ }
+ } else {
+ if (handler !== void 0) {
+ method = type.method;
+ requestHandlers[type.method] = { type, handler };
+ }
+ }
+ return {
+ dispose: () => {
+ if (method === null) {
+ return;
+ }
+ if (method !== void 0) {
+ delete requestHandlers[method];
+ } else {
+ starRequestHandler = void 0;
+ }
+ }
+ };
+ },
+ trace: (_value, _tracer, sendNotificationOrTraceOptions) => {
+ let _sendNotification = false;
+ let _traceFormat = TraceFormat2.Text;
+ if (sendNotificationOrTraceOptions !== void 0) {
+ if (Is7.boolean(sendNotificationOrTraceOptions)) {
+ _sendNotification = sendNotificationOrTraceOptions;
+ } else {
+ _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;
+ _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat2.Text;
+ }
+ }
+ trace = _value;
+ traceFormat = _traceFormat;
+ if (trace === Trace2.Off) {
+ tracer = void 0;
+ } else {
+ tracer = _tracer;
+ }
+ if (_sendNotification && !isClosed() && !isDisposed()) {
+ connection.sendNotification(SetTraceNotification.type, { value: Trace2.toString(_value) });
+ }
+ },
+ onError: errorEmitter.event,
+ onClose: closeEmitter.event,
+ onUnhandledNotification: unhandledNotificationEmitter.event,
+ onDispose: disposeEmitter.event,
+ end: () => {
+ messageWriter.end();
+ },
+ dispose: () => {
+ if (isDisposed()) {
+ return;
+ }
+ state = ConnectionState.Disposed;
+ disposeEmitter.fire(void 0);
+ const error = new Error("Connection got disposed.");
+ Object.keys(responsePromises).forEach((key) => {
+ responsePromises[key].reject(error);
+ });
+ responsePromises = Object.create(null);
+ requestTokens = Object.create(null);
+ messageQueue = new linkedMap_1.LinkedMap();
+ if (Is7.func(messageWriter.dispose)) {
+ messageWriter.dispose();
+ }
+ if (Is7.func(messageReader.dispose)) {
+ messageReader.dispose();
+ }
+ },
+ listen: () => {
+ throwIfClosedOrDisposed();
+ throwIfListening();
+ state = ConnectionState.Listening;
+ messageReader.listen(callback);
+ },
+ inspect: () => {
+ ral_1.default().console.log("inspect");
+ }
+ };
+ connection.onNotification(LogTraceNotification.type, (params) => {
+ if (trace === Trace2.Off || !tracer) {
+ return;
+ }
+ tracer.log(params.message, trace === Trace2.Verbose ? params.verbose : void 0);
+ });
+ connection.onNotification(ProgressNotification2.type, (params) => {
+ const handler = progressHandlers.get(params.token);
+ if (handler) {
+ handler(params.value);
+ } else {
+ unhandledProgressEmitter.fire(params);
+ }
+ });
+ return connection;
+ }
+ exports2.createMessageConnection = createMessageConnection;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/common/api.js
+var require_api2 = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/common/api.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.CancellationSenderStrategy = exports2.CancellationReceiverStrategy = exports2.ConnectionError = exports2.ConnectionErrors = exports2.LogTraceNotification = exports2.SetTraceNotification = exports2.TraceFormat = exports2.Trace = exports2.ProgressType = exports2.createMessageConnection = exports2.NullLogger = exports2.ConnectionOptions = exports2.ConnectionStrategy = exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = exports2.CancellationToken = exports2.CancellationTokenSource = exports2.Emitter = exports2.Event = exports2.Disposable = exports2.ParameterStructures = exports2.NotificationType9 = exports2.NotificationType8 = exports2.NotificationType7 = exports2.NotificationType6 = exports2.NotificationType5 = exports2.NotificationType4 = exports2.NotificationType3 = exports2.NotificationType2 = exports2.NotificationType1 = exports2.NotificationType0 = exports2.NotificationType = exports2.ErrorCodes = exports2.ResponseError = exports2.RequestType9 = exports2.RequestType8 = exports2.RequestType7 = exports2.RequestType6 = exports2.RequestType5 = exports2.RequestType4 = exports2.RequestType3 = exports2.RequestType2 = exports2.RequestType1 = exports2.RequestType0 = exports2.RequestType = exports2.RAL = void 0;
+ exports2.CancellationStrategy = void 0;
+ var messages_1 = require_messages();
+ Object.defineProperty(exports2, "RequestType", { enumerable: true, get: function() {
+ return messages_1.RequestType;
+ } });
+ Object.defineProperty(exports2, "RequestType0", { enumerable: true, get: function() {
+ return messages_1.RequestType0;
+ } });
+ Object.defineProperty(exports2, "RequestType1", { enumerable: true, get: function() {
+ return messages_1.RequestType1;
+ } });
+ Object.defineProperty(exports2, "RequestType2", { enumerable: true, get: function() {
+ return messages_1.RequestType2;
+ } });
+ Object.defineProperty(exports2, "RequestType3", { enumerable: true, get: function() {
+ return messages_1.RequestType3;
+ } });
+ Object.defineProperty(exports2, "RequestType4", { enumerable: true, get: function() {
+ return messages_1.RequestType4;
+ } });
+ Object.defineProperty(exports2, "RequestType5", { enumerable: true, get: function() {
+ return messages_1.RequestType5;
+ } });
+ Object.defineProperty(exports2, "RequestType6", { enumerable: true, get: function() {
+ return messages_1.RequestType6;
+ } });
+ Object.defineProperty(exports2, "RequestType7", { enumerable: true, get: function() {
+ return messages_1.RequestType7;
+ } });
+ Object.defineProperty(exports2, "RequestType8", { enumerable: true, get: function() {
+ return messages_1.RequestType8;
+ } });
+ Object.defineProperty(exports2, "RequestType9", { enumerable: true, get: function() {
+ return messages_1.RequestType9;
+ } });
+ Object.defineProperty(exports2, "ResponseError", { enumerable: true, get: function() {
+ return messages_1.ResponseError;
+ } });
+ Object.defineProperty(exports2, "ErrorCodes", { enumerable: true, get: function() {
+ return messages_1.ErrorCodes;
+ } });
+ Object.defineProperty(exports2, "NotificationType", { enumerable: true, get: function() {
+ return messages_1.NotificationType;
+ } });
+ Object.defineProperty(exports2, "NotificationType0", { enumerable: true, get: function() {
+ return messages_1.NotificationType0;
+ } });
+ Object.defineProperty(exports2, "NotificationType1", { enumerable: true, get: function() {
+ return messages_1.NotificationType1;
+ } });
+ Object.defineProperty(exports2, "NotificationType2", { enumerable: true, get: function() {
+ return messages_1.NotificationType2;
+ } });
+ Object.defineProperty(exports2, "NotificationType3", { enumerable: true, get: function() {
+ return messages_1.NotificationType3;
+ } });
+ Object.defineProperty(exports2, "NotificationType4", { enumerable: true, get: function() {
+ return messages_1.NotificationType4;
+ } });
+ Object.defineProperty(exports2, "NotificationType5", { enumerable: true, get: function() {
+ return messages_1.NotificationType5;
+ } });
+ Object.defineProperty(exports2, "NotificationType6", { enumerable: true, get: function() {
+ return messages_1.NotificationType6;
+ } });
+ Object.defineProperty(exports2, "NotificationType7", { enumerable: true, get: function() {
+ return messages_1.NotificationType7;
+ } });
+ Object.defineProperty(exports2, "NotificationType8", { enumerable: true, get: function() {
+ return messages_1.NotificationType8;
+ } });
+ Object.defineProperty(exports2, "NotificationType9", { enumerable: true, get: function() {
+ return messages_1.NotificationType9;
+ } });
+ Object.defineProperty(exports2, "ParameterStructures", { enumerable: true, get: function() {
+ return messages_1.ParameterStructures;
+ } });
+ var disposable_1 = require_disposable();
+ Object.defineProperty(exports2, "Disposable", { enumerable: true, get: function() {
+ return disposable_1.Disposable;
+ } });
+ var events_1 = require_events();
+ Object.defineProperty(exports2, "Event", { enumerable: true, get: function() {
+ return events_1.Event;
+ } });
+ Object.defineProperty(exports2, "Emitter", { enumerable: true, get: function() {
+ return events_1.Emitter;
+ } });
+ var cancellation_1 = require_cancellation();
+ Object.defineProperty(exports2, "CancellationTokenSource", { enumerable: true, get: function() {
+ return cancellation_1.CancellationTokenSource;
+ } });
+ Object.defineProperty(exports2, "CancellationToken", { enumerable: true, get: function() {
+ return cancellation_1.CancellationToken;
+ } });
+ var messageReader_1 = require_messageReader();
+ Object.defineProperty(exports2, "MessageReader", { enumerable: true, get: function() {
+ return messageReader_1.MessageReader;
+ } });
+ Object.defineProperty(exports2, "AbstractMessageReader", { enumerable: true, get: function() {
+ return messageReader_1.AbstractMessageReader;
+ } });
+ Object.defineProperty(exports2, "ReadableStreamMessageReader", { enumerable: true, get: function() {
+ return messageReader_1.ReadableStreamMessageReader;
+ } });
+ var messageWriter_1 = require_messageWriter();
+ Object.defineProperty(exports2, "MessageWriter", { enumerable: true, get: function() {
+ return messageWriter_1.MessageWriter;
+ } });
+ Object.defineProperty(exports2, "AbstractMessageWriter", { enumerable: true, get: function() {
+ return messageWriter_1.AbstractMessageWriter;
+ } });
+ Object.defineProperty(exports2, "WriteableStreamMessageWriter", { enumerable: true, get: function() {
+ return messageWriter_1.WriteableStreamMessageWriter;
+ } });
+ var connection_1 = require_connection2();
+ Object.defineProperty(exports2, "ConnectionStrategy", { enumerable: true, get: function() {
+ return connection_1.ConnectionStrategy;
+ } });
+ Object.defineProperty(exports2, "ConnectionOptions", { enumerable: true, get: function() {
+ return connection_1.ConnectionOptions;
+ } });
+ Object.defineProperty(exports2, "NullLogger", { enumerable: true, get: function() {
+ return connection_1.NullLogger;
+ } });
+ Object.defineProperty(exports2, "createMessageConnection", { enumerable: true, get: function() {
+ return connection_1.createMessageConnection;
+ } });
+ Object.defineProperty(exports2, "ProgressType", { enumerable: true, get: function() {
+ return connection_1.ProgressType;
+ } });
+ Object.defineProperty(exports2, "Trace", { enumerable: true, get: function() {
+ return connection_1.Trace;
+ } });
+ Object.defineProperty(exports2, "TraceFormat", { enumerable: true, get: function() {
+ return connection_1.TraceFormat;
+ } });
+ Object.defineProperty(exports2, "SetTraceNotification", { enumerable: true, get: function() {
+ return connection_1.SetTraceNotification;
+ } });
+ Object.defineProperty(exports2, "LogTraceNotification", { enumerable: true, get: function() {
+ return connection_1.LogTraceNotification;
+ } });
+ Object.defineProperty(exports2, "ConnectionErrors", { enumerable: true, get: function() {
+ return connection_1.ConnectionErrors;
+ } });
+ Object.defineProperty(exports2, "ConnectionError", { enumerable: true, get: function() {
+ return connection_1.ConnectionError;
+ } });
+ Object.defineProperty(exports2, "CancellationReceiverStrategy", { enumerable: true, get: function() {
+ return connection_1.CancellationReceiverStrategy;
+ } });
+ Object.defineProperty(exports2, "CancellationSenderStrategy", { enumerable: true, get: function() {
+ return connection_1.CancellationSenderStrategy;
+ } });
+ Object.defineProperty(exports2, "CancellationStrategy", { enumerable: true, get: function() {
+ return connection_1.CancellationStrategy;
+ } });
+ var ral_1 = require_ral();
+ exports2.RAL = ral_1.default;
+ }
+});
+
+// node_modules/vscode-jsonrpc/lib/node/main.js
+var require_main = __commonJS({
+ "node_modules/vscode-jsonrpc/lib/node/main.js"(exports2) {
+ "use strict";
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
+ return m[k];
+ } });
+ } : function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ o[k2] = m[k];
+ });
+ var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
+ for (var p in m)
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p))
+ __createBinding(exports3, m, p);
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.createMessageConnection = exports2.createServerSocketTransport = exports2.createClientSocketTransport = exports2.createServerPipeTransport = exports2.createClientPipeTransport = exports2.generateRandomPipeName = exports2.StreamMessageWriter = exports2.StreamMessageReader = exports2.SocketMessageWriter = exports2.SocketMessageReader = exports2.IPCMessageWriter = exports2.IPCMessageReader = void 0;
+ var ril_1 = require_ril();
+ ril_1.default.install();
+ var api_1 = require_api2();
+ var path36 = require("path");
+ var os10 = require("os");
+ var crypto_1 = require("crypto");
+ var net_1 = require("net");
+ __exportStar(require_api2(), exports2);
+ var IPCMessageReader2 = class extends api_1.AbstractMessageReader {
+ constructor(process2) {
+ super();
+ this.process = process2;
+ let eventEmitter = this.process;
+ eventEmitter.on("error", (error) => this.fireError(error));
+ eventEmitter.on("close", () => this.fireClose());
+ }
+ listen(callback) {
+ this.process.on("message", callback);
+ return api_1.Disposable.create(() => this.process.off("message", callback));
+ }
+ };
+ exports2.IPCMessageReader = IPCMessageReader2;
+ var IPCMessageWriter2 = class extends api_1.AbstractMessageWriter {
+ constructor(process2) {
+ super();
+ this.process = process2;
+ this.errorCount = 0;
+ let eventEmitter = this.process;
+ eventEmitter.on("error", (error) => this.fireError(error));
+ eventEmitter.on("close", () => this.fireClose);
+ }
+ write(msg) {
+ try {
+ if (typeof this.process.send === "function") {
+ this.process.send(msg, void 0, void 0, (error) => {
+ if (error) {
+ this.errorCount++;
+ this.handleError(error, msg);
+ } else {
+ this.errorCount = 0;
+ }
+ });
+ }
+ return Promise.resolve();
+ } catch (error) {
+ this.handleError(error, msg);
+ return Promise.reject(error);
+ }
+ }
+ handleError(error, msg) {
+ this.errorCount++;
+ this.fireError(error, msg, this.errorCount);
+ }
+ end() {
+ }
+ };
+ exports2.IPCMessageWriter = IPCMessageWriter2;
+ var SocketMessageReader = class extends api_1.ReadableStreamMessageReader {
+ constructor(socket, encoding = "utf-8") {
+ super(ril_1.default().stream.asReadableStream(socket), encoding);
+ }
+ };
+ exports2.SocketMessageReader = SocketMessageReader;
+ var SocketMessageWriter = class extends api_1.WriteableStreamMessageWriter {
+ constructor(socket, options) {
+ super(ril_1.default().stream.asWritableStream(socket), options);
+ this.socket = socket;
+ }
+ dispose() {
+ super.dispose();
+ this.socket.destroy();
+ }
+ };
+ exports2.SocketMessageWriter = SocketMessageWriter;
+ var StreamMessageReader2 = class extends api_1.ReadableStreamMessageReader {
+ constructor(readble, encoding) {
+ super(ril_1.default().stream.asReadableStream(readble), encoding);
+ }
+ };
+ exports2.StreamMessageReader = StreamMessageReader2;
+ var StreamMessageWriter2 = class extends api_1.WriteableStreamMessageWriter {
+ constructor(writable, options) {
+ super(ril_1.default().stream.asWritableStream(writable), options);
+ }
+ };
+ exports2.StreamMessageWriter = StreamMessageWriter2;
+ var XDG_RUNTIME_DIR = process.env["XDG_RUNTIME_DIR"];
+ var safeIpcPathLengths = new Map([
+ ["linux", 107],
+ ["darwin", 103]
+ ]);
+ function generateRandomPipeName2() {
+ const randomSuffix = crypto_1.randomBytes(21).toString("hex");
+ if (process.platform === "win32") {
+ return `\\\\.\\pipe\\vscode-jsonrpc-${randomSuffix}-sock`;
+ }
+ let result;
+ if (XDG_RUNTIME_DIR) {
+ result = path36.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);
+ } else {
+ result = path36.join(os10.tmpdir(), `vscode-${randomSuffix}.sock`);
+ }
+ const limit = safeIpcPathLengths.get(process.platform);
+ if (limit !== void 0 && result.length >= limit) {
+ ril_1.default().console.warn(`WARNING: IPC handle "${result}" is longer than ${limit} characters.`);
+ }
+ return result;
+ }
+ exports2.generateRandomPipeName = generateRandomPipeName2;
+ function createClientPipeTransport2(pipeName, encoding = "utf-8") {
+ let connectResolve;
+ const connected = new Promise((resolve3, _reject) => {
+ connectResolve = resolve3;
+ });
+ return new Promise((resolve3, reject) => {
+ let server = net_1.createServer((socket) => {
+ server.close();
+ connectResolve([
+ new SocketMessageReader(socket, encoding),
+ new SocketMessageWriter(socket, encoding)
+ ]);
+ });
+ server.on("error", reject);
+ server.listen(pipeName, () => {
+ server.removeListener("error", reject);
+ resolve3({
+ onConnected: () => {
+ return connected;
+ }
+ });
+ });
+ });
+ }
+ exports2.createClientPipeTransport = createClientPipeTransport2;
+ function createServerPipeTransport(pipeName, encoding = "utf-8") {
+ const socket = net_1.createConnection(pipeName);
+ return [
+ new SocketMessageReader(socket, encoding),
+ new SocketMessageWriter(socket, encoding)
+ ];
+ }
+ exports2.createServerPipeTransport = createServerPipeTransport;
+ function createClientSocketTransport2(port, encoding = "utf-8") {
+ let connectResolve;
+ const connected = new Promise((resolve3, _reject) => {
+ connectResolve = resolve3;
+ });
+ return new Promise((resolve3, reject) => {
+ const server = net_1.createServer((socket) => {
+ server.close();
+ connectResolve([
+ new SocketMessageReader(socket, encoding),
+ new SocketMessageWriter(socket, encoding)
+ ]);
+ });
+ server.on("error", reject);
+ server.listen(port, "127.0.0.1", () => {
+ server.removeListener("error", reject);
+ resolve3({
+ onConnected: () => {
+ return connected;
+ }
+ });
+ });
+ });
+ }
+ exports2.createClientSocketTransport = createClientSocketTransport2;
+ function createServerSocketTransport(port, encoding = "utf-8") {
+ const socket = net_1.createConnection(port, "127.0.0.1");
+ return [
+ new SocketMessageReader(socket, encoding),
+ new SocketMessageWriter(socket, encoding)
+ ];
+ }
+ exports2.createServerSocketTransport = createServerSocketTransport;
+ function isReadableStream(value) {
+ const candidate = value;
+ return candidate.read !== void 0 && candidate.addListener !== void 0;
+ }
+ function isWritableStream(value) {
+ const candidate = value;
+ return candidate.write !== void 0 && candidate.addListener !== void 0;
+ }
+ function createMessageConnection(input, output, logger113, options) {
+ if (!logger113) {
+ logger113 = api_1.NullLogger;
+ }
+ const reader = isReadableStream(input) ? new StreamMessageReader2(input) : input;
+ const writer = isWritableStream(output) ? new StreamMessageWriter2(output) : output;
+ if (api_1.ConnectionStrategy.is(options)) {
+ options = { connectionStrategy: options };
+ }
+ return api_1.createMessageConnection(reader, writer, logger113, options);
+ }
+ exports2.createMessageConnection = createMessageConnection;
+ }
+});
+
+// node_modules/vscode-jsonrpc/node.js
+var require_node2 = __commonJS({
+ "node_modules/vscode-jsonrpc/node.js"(exports2, module2) {
+ "use strict";
+ module2.exports = require_main();
+ }
+});
+
+// node_modules/vscode-languageserver-types/lib/esm/main.js
+var main_exports = {};
+__export(main_exports, {
+ AnnotatedTextEdit: () => AnnotatedTextEdit,
+ ChangeAnnotation: () => ChangeAnnotation,
+ ChangeAnnotationIdentifier: () => ChangeAnnotationIdentifier,
+ CodeAction: () => CodeAction,
+ CodeActionContext: () => CodeActionContext,
+ CodeActionKind: () => CodeActionKind,
+ CodeDescription: () => CodeDescription,
+ CodeLens: () => CodeLens,
+ Color: () => Color,
+ ColorInformation: () => ColorInformation,
+ ColorPresentation: () => ColorPresentation,
+ Command: () => Command,
+ CompletionItem: () => CompletionItem,
+ CompletionItemKind: () => CompletionItemKind,
+ CompletionItemTag: () => CompletionItemTag,
+ CompletionList: () => CompletionList,
+ CreateFile: () => CreateFile,
+ DeleteFile: () => DeleteFile,
+ Diagnostic: () => Diagnostic,
+ DiagnosticRelatedInformation: () => DiagnosticRelatedInformation,
+ DiagnosticSeverity: () => DiagnosticSeverity,
+ DiagnosticTag: () => DiagnosticTag,
+ DocumentHighlight: () => DocumentHighlight,
+ DocumentHighlightKind: () => DocumentHighlightKind,
+ DocumentLink: () => DocumentLink,
+ DocumentSymbol: () => DocumentSymbol,
+ EOL: () => EOL,
+ FoldingRange: () => FoldingRange,
+ FoldingRangeKind: () => FoldingRangeKind,
+ FormattingOptions: () => FormattingOptions,
+ Hover: () => Hover,
+ InsertReplaceEdit: () => InsertReplaceEdit,
+ InsertTextFormat: () => InsertTextFormat,
+ InsertTextMode: () => InsertTextMode,
+ Location: () => Location,
+ LocationLink: () => LocationLink,
+ MarkedString: () => MarkedString,
+ MarkupContent: () => MarkupContent,
+ MarkupKind: () => MarkupKind,
+ OptionalVersionedTextDocumentIdentifier: () => OptionalVersionedTextDocumentIdentifier,
+ ParameterInformation: () => ParameterInformation,
+ Position: () => Position,
+ Range: () => Range,
+ RenameFile: () => RenameFile,
+ SelectionRange: () => SelectionRange,
+ SignatureInformation: () => SignatureInformation,
+ SymbolInformation: () => SymbolInformation,
+ SymbolKind: () => SymbolKind,
+ SymbolTag: () => SymbolTag,
+ TextDocument: () => TextDocument,
+ TextDocumentEdit: () => TextDocumentEdit,
+ TextDocumentIdentifier: () => TextDocumentIdentifier,
+ TextDocumentItem: () => TextDocumentItem,
+ TextEdit: () => TextEdit,
+ VersionedTextDocumentIdentifier: () => VersionedTextDocumentIdentifier,
+ WorkspaceChange: () => WorkspaceChange,
+ WorkspaceEdit: () => WorkspaceEdit,
+ integer: () => integer,
+ uinteger: () => uinteger
+});
+var integer, uinteger, Position, Range, Location, LocationLink, Color, ColorInformation, ColorPresentation, FoldingRangeKind, FoldingRange, DiagnosticRelatedInformation, DiagnosticSeverity, DiagnosticTag, CodeDescription, Diagnostic, Command, TextEdit, ChangeAnnotation, ChangeAnnotationIdentifier, AnnotatedTextEdit, TextDocumentEdit, CreateFile, RenameFile, DeleteFile, WorkspaceEdit, TextEditChangeImpl, ChangeAnnotations, WorkspaceChange, TextDocumentIdentifier, VersionedTextDocumentIdentifier, OptionalVersionedTextDocumentIdentifier, TextDocumentItem, MarkupKind, MarkupContent, CompletionItemKind, InsertTextFormat, CompletionItemTag, InsertReplaceEdit, InsertTextMode, CompletionItem, CompletionList, MarkedString, Hover, ParameterInformation, SignatureInformation, DocumentHighlightKind, DocumentHighlight, SymbolKind, SymbolTag, SymbolInformation, DocumentSymbol, CodeActionKind, CodeActionContext, CodeAction, CodeLens, FormattingOptions, DocumentLink, SelectionRange, EOL, TextDocument, FullTextDocument, Is;
+var init_main = __esm({
+ "node_modules/vscode-languageserver-types/lib/esm/main.js"() {
+ "use strict";
+ (function(integer2) {
+ integer2.MIN_VALUE = -2147483648;
+ integer2.MAX_VALUE = 2147483647;
+ })(integer || (integer = {}));
+ (function(uinteger3) {
+ uinteger3.MIN_VALUE = 0;
+ uinteger3.MAX_VALUE = 2147483647;
+ })(uinteger || (uinteger = {}));
+ (function(Position45) {
+ function create(line, character) {
+ if (line === Number.MAX_VALUE) {
+ line = uinteger.MAX_VALUE;
+ }
+ if (character === Number.MAX_VALUE) {
+ character = uinteger.MAX_VALUE;
+ }
+ return { line, character };
+ }
+ Position45.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);
+ }
+ Position45.is = is;
+ })(Position || (Position = {}));
+ (function(Range39) {
+ function create(one, two, three, four) {
+ if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {
+ return { start: Position.create(one, two), end: Position.create(three, four) };
+ } else if (Position.is(one) && Position.is(two)) {
+ return { start: one, end: two };
+ } else {
+ throw new Error("Range#create called with invalid arguments[" + one + ", " + two + ", " + three + ", " + four + "]");
+ }
+ }
+ Range39.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);
+ }
+ Range39.is = is;
+ })(Range || (Range = {}));
+ (function(Location18) {
+ function create(uri, range) {
+ return { uri, range };
+ }
+ Location18.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));
+ }
+ Location18.is = is;
+ })(Location || (Location = {}));
+ (function(LocationLink9) {
+ function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {
+ return { targetUri, targetRange, targetSelectionRange, originSelectionRange };
+ }
+ LocationLink9.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));
+ }
+ LocationLink9.is = is;
+ })(LocationLink || (LocationLink = {}));
+ (function(Color4) {
+ function create(red, green, blue2, alpha) {
+ return {
+ red,
+ green,
+ blue: blue2,
+ alpha
+ };
+ }
+ Color4.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1);
+ }
+ Color4.is = is;
+ })(Color || (Color = {}));
+ (function(ColorInformation7) {
+ function create(range, color) {
+ return {
+ range,
+ color
+ };
+ }
+ ColorInformation7.create = create;
+ function is(value) {
+ var candidate = value;
+ return Range.is(candidate.range) && Color.is(candidate.color);
+ }
+ ColorInformation7.is = is;
+ })(ColorInformation || (ColorInformation = {}));
+ (function(ColorPresentation5) {
+ function create(label, textEdit, additionalTextEdits) {
+ return {
+ label,
+ textEdit,
+ additionalTextEdits
+ };
+ }
+ ColorPresentation5.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));
+ }
+ ColorPresentation5.is = is;
+ })(ColorPresentation || (ColorPresentation = {}));
+ (function(FoldingRangeKind2) {
+ FoldingRangeKind2["Comment"] = "comment";
+ FoldingRangeKind2["Imports"] = "imports";
+ FoldingRangeKind2["Region"] = "region";
+ })(FoldingRangeKind || (FoldingRangeKind = {}));
+ (function(FoldingRange5) {
+ function create(startLine, endLine, startCharacter, endCharacter, kind) {
+ var result = {
+ startLine,
+ endLine
+ };
+ if (Is.defined(startCharacter)) {
+ result.startCharacter = startCharacter;
+ }
+ if (Is.defined(endCharacter)) {
+ result.endCharacter = endCharacter;
+ }
+ if (Is.defined(kind)) {
+ result.kind = kind;
+ }
+ return result;
+ }
+ FoldingRange5.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));
+ }
+ FoldingRange5.is = is;
+ })(FoldingRange || (FoldingRange = {}));
+ (function(DiagnosticRelatedInformation2) {
+ function create(location, message) {
+ return {
+ location,
+ message
+ };
+ }
+ DiagnosticRelatedInformation2.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);
+ }
+ DiagnosticRelatedInformation2.is = is;
+ })(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));
+ (function(DiagnosticSeverity7) {
+ DiagnosticSeverity7.Error = 1;
+ DiagnosticSeverity7.Warning = 2;
+ DiagnosticSeverity7.Information = 3;
+ DiagnosticSeverity7.Hint = 4;
+ })(DiagnosticSeverity || (DiagnosticSeverity = {}));
+ (function(DiagnosticTag6) {
+ DiagnosticTag6.Unnecessary = 1;
+ DiagnosticTag6.Deprecated = 2;
+ })(DiagnosticTag || (DiagnosticTag = {}));
+ (function(CodeDescription2) {
+ function is(value) {
+ var candidate = value;
+ return candidate !== void 0 && candidate !== null && Is.string(candidate.href);
+ }
+ CodeDescription2.is = is;
+ })(CodeDescription || (CodeDescription = {}));
+ (function(Diagnostic8) {
+ function create(range, message, severity, code, source, relatedInformation) {
+ var result = { range, message };
+ if (Is.defined(severity)) {
+ result.severity = severity;
+ }
+ if (Is.defined(code)) {
+ result.code = code;
+ }
+ if (Is.defined(source)) {
+ result.source = source;
+ }
+ if (Is.defined(relatedInformation)) {
+ result.relatedInformation = relatedInformation;
+ }
+ return result;
+ }
+ Diagnostic8.create = create;
+ function is(value) {
+ var _a2;
+ var candidate = value;
+ return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a2 = candidate.codeDescription) === null || _a2 === void 0 ? void 0 : _a2.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));
+ }
+ Diagnostic8.is = is;
+ })(Diagnostic || (Diagnostic = {}));
+ (function(Command5) {
+ function create(title, command) {
+ var args = [];
+ for (var _i = 2; _i < arguments.length; _i++) {
+ args[_i - 2] = arguments[_i];
+ }
+ var result = { title, command };
+ if (Is.defined(args) && args.length > 0) {
+ result.arguments = args;
+ }
+ return result;
+ }
+ Command5.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);
+ }
+ Command5.is = is;
+ })(Command || (Command = {}));
+ (function(TextEdit20) {
+ function replace(range, newText) {
+ return { range, newText };
+ }
+ TextEdit20.replace = replace;
+ function insert(position, newText) {
+ return { range: { start: position, end: position }, newText };
+ }
+ TextEdit20.insert = insert;
+ function del(range) {
+ return { range, newText: "" };
+ }
+ TextEdit20.del = del;
+ function is(value) {
+ var candidate = value;
+ return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);
+ }
+ TextEdit20.is = is;
+ })(TextEdit || (TextEdit = {}));
+ (function(ChangeAnnotation2) {
+ function create(label, needsConfirmation, description) {
+ var result = { label };
+ if (needsConfirmation !== void 0) {
+ result.needsConfirmation = needsConfirmation;
+ }
+ if (description !== void 0) {
+ result.description = description;
+ }
+ return result;
+ }
+ ChangeAnnotation2.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate !== void 0 && Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0);
+ }
+ ChangeAnnotation2.is = is;
+ })(ChangeAnnotation || (ChangeAnnotation = {}));
+ (function(ChangeAnnotationIdentifier2) {
+ function is(value) {
+ var candidate = value;
+ return typeof candidate === "string";
+ }
+ ChangeAnnotationIdentifier2.is = is;
+ })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));
+ (function(AnnotatedTextEdit2) {
+ function replace(range, newText, annotation) {
+ return { range, newText, annotationId: annotation };
+ }
+ AnnotatedTextEdit2.replace = replace;
+ function insert(position, newText, annotation) {
+ return { range: { start: position, end: position }, newText, annotationId: annotation };
+ }
+ AnnotatedTextEdit2.insert = insert;
+ function del(range, annotation) {
+ return { range, newText: "", annotationId: annotation };
+ }
+ AnnotatedTextEdit2.del = del;
+ function is(value) {
+ var candidate = value;
+ return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));
+ }
+ AnnotatedTextEdit2.is = is;
+ })(AnnotatedTextEdit || (AnnotatedTextEdit = {}));
+ (function(TextDocumentEdit6) {
+ function create(textDocument, edits) {
+ return { textDocument, edits };
+ }
+ TextDocumentEdit6.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);
+ }
+ TextDocumentEdit6.is = is;
+ })(TextDocumentEdit || (TextDocumentEdit = {}));
+ (function(CreateFile3) {
+ function create(uri, options, annotation) {
+ var result = {
+ kind: "create",
+ uri
+ };
+ if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {
+ result.options = options;
+ }
+ if (annotation !== void 0) {
+ result.annotationId = annotation;
+ }
+ return result;
+ }
+ CreateFile3.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate && candidate.kind === "create" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));
+ }
+ CreateFile3.is = is;
+ })(CreateFile || (CreateFile = {}));
+ (function(RenameFile3) {
+ function create(oldUri, newUri, options, annotation) {
+ var result = {
+ kind: "rename",
+ oldUri,
+ newUri
+ };
+ if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {
+ result.options = options;
+ }
+ if (annotation !== void 0) {
+ result.annotationId = annotation;
+ }
+ return result;
+ }
+ RenameFile3.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate && candidate.kind === "rename" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));
+ }
+ RenameFile3.is = is;
+ })(RenameFile || (RenameFile = {}));
+ (function(DeleteFile3) {
+ function create(uri, options, annotation) {
+ var result = {
+ kind: "delete",
+ uri
+ };
+ if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {
+ result.options = options;
+ }
+ if (annotation !== void 0) {
+ result.annotationId = annotation;
+ }
+ return result;
+ }
+ DeleteFile3.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate && candidate.kind === "delete" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));
+ }
+ DeleteFile3.is = is;
+ })(DeleteFile || (DeleteFile = {}));
+ (function(WorkspaceEdit10) {
+ function is(value) {
+ var candidate = value;
+ return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every(function(change) {
+ if (Is.string(change.kind)) {
+ return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);
+ } else {
+ return TextDocumentEdit.is(change);
+ }
+ }));
+ }
+ WorkspaceEdit10.is = is;
+ })(WorkspaceEdit || (WorkspaceEdit = {}));
+ TextEditChangeImpl = function() {
+ function TextEditChangeImpl2(edits, changeAnnotations) {
+ this.edits = edits;
+ this.changeAnnotations = changeAnnotations;
+ }
+ TextEditChangeImpl2.prototype.insert = function(position, newText, annotation) {
+ var edit2;
+ var id;
+ if (annotation === void 0) {
+ edit2 = TextEdit.insert(position, newText);
+ } else if (ChangeAnnotationIdentifier.is(annotation)) {
+ id = annotation;
+ edit2 = AnnotatedTextEdit.insert(position, newText, annotation);
+ } else {
+ this.assertChangeAnnotations(this.changeAnnotations);
+ id = this.changeAnnotations.manage(annotation);
+ edit2 = AnnotatedTextEdit.insert(position, newText, id);
+ }
+ this.edits.push(edit2);
+ if (id !== void 0) {
+ return id;
+ }
+ };
+ TextEditChangeImpl2.prototype.replace = function(range, newText, annotation) {
+ var edit2;
+ var id;
+ if (annotation === void 0) {
+ edit2 = TextEdit.replace(range, newText);
+ } else if (ChangeAnnotationIdentifier.is(annotation)) {
+ id = annotation;
+ edit2 = AnnotatedTextEdit.replace(range, newText, annotation);
+ } else {
+ this.assertChangeAnnotations(this.changeAnnotations);
+ id = this.changeAnnotations.manage(annotation);
+ edit2 = AnnotatedTextEdit.replace(range, newText, id);
+ }
+ this.edits.push(edit2);
+ if (id !== void 0) {
+ return id;
+ }
+ };
+ TextEditChangeImpl2.prototype.delete = function(range, annotation) {
+ var edit2;
+ var id;
+ if (annotation === void 0) {
+ edit2 = TextEdit.del(range);
+ } else if (ChangeAnnotationIdentifier.is(annotation)) {
+ id = annotation;
+ edit2 = AnnotatedTextEdit.del(range, annotation);
+ } else {
+ this.assertChangeAnnotations(this.changeAnnotations);
+ id = this.changeAnnotations.manage(annotation);
+ edit2 = AnnotatedTextEdit.del(range, id);
+ }
+ this.edits.push(edit2);
+ if (id !== void 0) {
+ return id;
+ }
+ };
+ TextEditChangeImpl2.prototype.add = function(edit2) {
+ this.edits.push(edit2);
+ };
+ TextEditChangeImpl2.prototype.all = function() {
+ return this.edits;
+ };
+ TextEditChangeImpl2.prototype.clear = function() {
+ this.edits.splice(0, this.edits.length);
+ };
+ TextEditChangeImpl2.prototype.assertChangeAnnotations = function(value) {
+ if (value === void 0) {
+ throw new Error("Text edit change is not configured to manage change annotations.");
+ }
+ };
+ return TextEditChangeImpl2;
+ }();
+ ChangeAnnotations = function() {
+ function ChangeAnnotations2(annotations) {
+ this._annotations = annotations === void 0 ? Object.create(null) : annotations;
+ this._counter = 0;
+ this._size = 0;
+ }
+ ChangeAnnotations2.prototype.all = function() {
+ return this._annotations;
+ };
+ Object.defineProperty(ChangeAnnotations2.prototype, "size", {
+ get: function() {
+ return this._size;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ ChangeAnnotations2.prototype.manage = function(idOrAnnotation, annotation) {
+ var id;
+ if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {
+ id = idOrAnnotation;
+ } else {
+ id = this.nextId();
+ annotation = idOrAnnotation;
+ }
+ if (this._annotations[id] !== void 0) {
+ throw new Error("Id " + id + " is already in use.");
+ }
+ if (annotation === void 0) {
+ throw new Error("No annotation provided for id " + id);
+ }
+ this._annotations[id] = annotation;
+ this._size++;
+ return id;
+ };
+ ChangeAnnotations2.prototype.nextId = function() {
+ this._counter++;
+ return this._counter.toString();
+ };
+ return ChangeAnnotations2;
+ }();
+ WorkspaceChange = function() {
+ function WorkspaceChange2(workspaceEdit) {
+ var _this = this;
+ this._textEditChanges = Object.create(null);
+ if (workspaceEdit !== void 0) {
+ this._workspaceEdit = workspaceEdit;
+ if (workspaceEdit.documentChanges) {
+ this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);
+ workspaceEdit.changeAnnotations = this._changeAnnotations.all();
+ workspaceEdit.documentChanges.forEach(function(change) {
+ if (TextDocumentEdit.is(change)) {
+ var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);
+ _this._textEditChanges[change.textDocument.uri] = textEditChange;
+ }
+ });
+ } else if (workspaceEdit.changes) {
+ Object.keys(workspaceEdit.changes).forEach(function(key) {
+ var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);
+ _this._textEditChanges[key] = textEditChange;
+ });
+ }
+ } else {
+ this._workspaceEdit = {};
+ }
+ }
+ Object.defineProperty(WorkspaceChange2.prototype, "edit", {
+ get: function() {
+ this.initDocumentChanges();
+ if (this._changeAnnotations !== void 0) {
+ if (this._changeAnnotations.size === 0) {
+ this._workspaceEdit.changeAnnotations = void 0;
+ } else {
+ this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();
+ }
+ }
+ return this._workspaceEdit;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ WorkspaceChange2.prototype.getTextEditChange = function(key) {
+ if (OptionalVersionedTextDocumentIdentifier.is(key)) {
+ this.initDocumentChanges();
+ if (this._workspaceEdit.documentChanges === void 0) {
+ throw new Error("Workspace edit is not configured for document changes.");
+ }
+ var textDocument = { uri: key.uri, version: key.version };
+ var result = this._textEditChanges[textDocument.uri];
+ if (!result) {
+ var edits = [];
+ var textDocumentEdit = {
+ textDocument,
+ edits
+ };
+ this._workspaceEdit.documentChanges.push(textDocumentEdit);
+ result = new TextEditChangeImpl(edits, this._changeAnnotations);
+ this._textEditChanges[textDocument.uri] = result;
+ }
+ return result;
+ } else {
+ this.initChanges();
+ if (this._workspaceEdit.changes === void 0) {
+ throw new Error("Workspace edit is not configured for normal text edit changes.");
+ }
+ var result = this._textEditChanges[key];
+ if (!result) {
+ var edits = [];
+ this._workspaceEdit.changes[key] = edits;
+ result = new TextEditChangeImpl(edits);
+ this._textEditChanges[key] = result;
+ }
+ return result;
+ }
+ };
+ WorkspaceChange2.prototype.initDocumentChanges = function() {
+ if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {
+ this._changeAnnotations = new ChangeAnnotations();
+ this._workspaceEdit.documentChanges = [];
+ this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();
+ }
+ };
+ WorkspaceChange2.prototype.initChanges = function() {
+ if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {
+ this._workspaceEdit.changes = Object.create(null);
+ }
+ };
+ WorkspaceChange2.prototype.createFile = function(uri, optionsOrAnnotation, options) {
+ this.initDocumentChanges();
+ if (this._workspaceEdit.documentChanges === void 0) {
+ throw new Error("Workspace edit is not configured for document changes.");
+ }
+ var annotation;
+ if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {
+ annotation = optionsOrAnnotation;
+ } else {
+ options = optionsOrAnnotation;
+ }
+ var operation;
+ var id;
+ if (annotation === void 0) {
+ operation = CreateFile.create(uri, options);
+ } else {
+ id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);
+ operation = CreateFile.create(uri, options, id);
+ }
+ this._workspaceEdit.documentChanges.push(operation);
+ if (id !== void 0) {
+ return id;
+ }
+ };
+ WorkspaceChange2.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) {
+ this.initDocumentChanges();
+ if (this._workspaceEdit.documentChanges === void 0) {
+ throw new Error("Workspace edit is not configured for document changes.");
+ }
+ var annotation;
+ if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {
+ annotation = optionsOrAnnotation;
+ } else {
+ options = optionsOrAnnotation;
+ }
+ var operation;
+ var id;
+ if (annotation === void 0) {
+ operation = RenameFile.create(oldUri, newUri, options);
+ } else {
+ id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);
+ operation = RenameFile.create(oldUri, newUri, options, id);
+ }
+ this._workspaceEdit.documentChanges.push(operation);
+ if (id !== void 0) {
+ return id;
+ }
+ };
+ WorkspaceChange2.prototype.deleteFile = function(uri, optionsOrAnnotation, options) {
+ this.initDocumentChanges();
+ if (this._workspaceEdit.documentChanges === void 0) {
+ throw new Error("Workspace edit is not configured for document changes.");
+ }
+ var annotation;
+ if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {
+ annotation = optionsOrAnnotation;
+ } else {
+ options = optionsOrAnnotation;
+ }
+ var operation;
+ var id;
+ if (annotation === void 0) {
+ operation = DeleteFile.create(uri, options);
+ } else {
+ id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);
+ operation = DeleteFile.create(uri, options, id);
+ }
+ this._workspaceEdit.documentChanges.push(operation);
+ if (id !== void 0) {
+ return id;
+ }
+ };
+ return WorkspaceChange2;
+ }();
+ (function(TextDocumentIdentifier2) {
+ function create(uri) {
+ return { uri };
+ }
+ TextDocumentIdentifier2.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.string(candidate.uri);
+ }
+ TextDocumentIdentifier2.is = is;
+ })(TextDocumentIdentifier || (TextDocumentIdentifier = {}));
+ (function(VersionedTextDocumentIdentifier2) {
+ function create(uri, version2) {
+ return { uri, version: version2 };
+ }
+ VersionedTextDocumentIdentifier2.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);
+ }
+ VersionedTextDocumentIdentifier2.is = is;
+ })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));
+ (function(OptionalVersionedTextDocumentIdentifier2) {
+ function create(uri, version2) {
+ return { uri, version: version2 };
+ }
+ OptionalVersionedTextDocumentIdentifier2.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));
+ }
+ OptionalVersionedTextDocumentIdentifier2.is = is;
+ })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));
+ (function(TextDocumentItem2) {
+ function create(uri, languageId, version2, text) {
+ return { uri, languageId, version: version2, text };
+ }
+ TextDocumentItem2.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);
+ }
+ TextDocumentItem2.is = is;
+ })(TextDocumentItem || (TextDocumentItem = {}));
+ (function(MarkupKind6) {
+ MarkupKind6.PlainText = "plaintext";
+ MarkupKind6.Markdown = "markdown";
+ })(MarkupKind || (MarkupKind = {}));
+ (function(MarkupKind6) {
+ function is(value) {
+ var candidate = value;
+ return candidate === MarkupKind6.PlainText || candidate === MarkupKind6.Markdown;
+ }
+ MarkupKind6.is = is;
+ })(MarkupKind || (MarkupKind = {}));
+ (function(MarkupContent7) {
+ function is(value) {
+ var candidate = value;
+ return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);
+ }
+ MarkupContent7.is = is;
+ })(MarkupContent || (MarkupContent = {}));
+ (function(CompletionItemKind6) {
+ CompletionItemKind6.Text = 1;
+ CompletionItemKind6.Method = 2;
+ CompletionItemKind6.Function = 3;
+ CompletionItemKind6.Constructor = 4;
+ CompletionItemKind6.Field = 5;
+ CompletionItemKind6.Variable = 6;
+ CompletionItemKind6.Class = 7;
+ CompletionItemKind6.Interface = 8;
+ CompletionItemKind6.Module = 9;
+ CompletionItemKind6.Property = 10;
+ CompletionItemKind6.Unit = 11;
+ CompletionItemKind6.Value = 12;
+ CompletionItemKind6.Enum = 13;
+ CompletionItemKind6.Keyword = 14;
+ CompletionItemKind6.Snippet = 15;
+ CompletionItemKind6.Color = 16;
+ CompletionItemKind6.File = 17;
+ CompletionItemKind6.Reference = 18;
+ CompletionItemKind6.Folder = 19;
+ CompletionItemKind6.EnumMember = 20;
+ CompletionItemKind6.Constant = 21;
+ CompletionItemKind6.Struct = 22;
+ CompletionItemKind6.Event = 23;
+ CompletionItemKind6.Operator = 24;
+ CompletionItemKind6.TypeParameter = 25;
+ })(CompletionItemKind || (CompletionItemKind = {}));
+ (function(InsertTextFormat4) {
+ InsertTextFormat4.PlainText = 1;
+ InsertTextFormat4.Snippet = 2;
+ })(InsertTextFormat || (InsertTextFormat = {}));
+ (function(CompletionItemTag3) {
+ CompletionItemTag3.Deprecated = 1;
+ })(CompletionItemTag || (CompletionItemTag = {}));
+ (function(InsertReplaceEdit3) {
+ function create(newText, insert, replace) {
+ return { newText, insert, replace };
+ }
+ InsertReplaceEdit3.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);
+ }
+ InsertReplaceEdit3.is = is;
+ })(InsertReplaceEdit || (InsertReplaceEdit = {}));
+ (function(InsertTextMode4) {
+ InsertTextMode4.asIs = 1;
+ InsertTextMode4.adjustIndentation = 2;
+ })(InsertTextMode || (InsertTextMode = {}));
+ (function(CompletionItem4) {
+ function create(label) {
+ return { label };
+ }
+ CompletionItem4.create = create;
+ })(CompletionItem || (CompletionItem = {}));
+ (function(CompletionList4) {
+ function create(items, isIncomplete) {
+ return { items: items ? items : [], isIncomplete: !!isIncomplete };
+ }
+ CompletionList4.create = create;
+ })(CompletionList || (CompletionList = {}));
+ (function(MarkedString3) {
+ function fromPlainText(plainText) {
+ return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&");
+ }
+ MarkedString3.fromPlainText = fromPlainText;
+ function is(value) {
+ var candidate = value;
+ return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);
+ }
+ MarkedString3.is = is;
+ })(MarkedString || (MarkedString = {}));
+ (function(Hover6) {
+ function is(value) {
+ var candidate = value;
+ return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));
+ }
+ Hover6.is = is;
+ })(Hover || (Hover = {}));
+ (function(ParameterInformation2) {
+ function create(label, documentation) {
+ return documentation ? { label, documentation } : { label };
+ }
+ ParameterInformation2.create = create;
+ })(ParameterInformation || (ParameterInformation = {}));
+ (function(SignatureInformation2) {
+ function create(label, documentation) {
+ var parameters = [];
+ for (var _i = 2; _i < arguments.length; _i++) {
+ parameters[_i - 2] = arguments[_i];
+ }
+ var result = { label };
+ if (Is.defined(documentation)) {
+ result.documentation = documentation;
+ }
+ if (Is.defined(parameters)) {
+ result.parameters = parameters;
+ } else {
+ result.parameters = [];
+ }
+ return result;
+ }
+ SignatureInformation2.create = create;
+ })(SignatureInformation || (SignatureInformation = {}));
+ (function(DocumentHighlightKind4) {
+ DocumentHighlightKind4.Text = 1;
+ DocumentHighlightKind4.Read = 2;
+ DocumentHighlightKind4.Write = 3;
+ })(DocumentHighlightKind || (DocumentHighlightKind = {}));
+ (function(DocumentHighlight6) {
+ function create(range, kind) {
+ var result = { range };
+ if (Is.number(kind)) {
+ result.kind = kind;
+ }
+ return result;
+ }
+ DocumentHighlight6.create = create;
+ })(DocumentHighlight || (DocumentHighlight = {}));
+ (function(SymbolKind7) {
+ SymbolKind7.File = 1;
+ SymbolKind7.Module = 2;
+ SymbolKind7.Namespace = 3;
+ SymbolKind7.Package = 4;
+ SymbolKind7.Class = 5;
+ SymbolKind7.Method = 6;
+ SymbolKind7.Property = 7;
+ SymbolKind7.Field = 8;
+ SymbolKind7.Constructor = 9;
+ SymbolKind7.Enum = 10;
+ SymbolKind7.Interface = 11;
+ SymbolKind7.Function = 12;
+ SymbolKind7.Variable = 13;
+ SymbolKind7.Constant = 14;
+ SymbolKind7.String = 15;
+ SymbolKind7.Number = 16;
+ SymbolKind7.Boolean = 17;
+ SymbolKind7.Array = 18;
+ SymbolKind7.Object = 19;
+ SymbolKind7.Key = 20;
+ SymbolKind7.Null = 21;
+ SymbolKind7.EnumMember = 22;
+ SymbolKind7.Struct = 23;
+ SymbolKind7.Event = 24;
+ SymbolKind7.Operator = 25;
+ SymbolKind7.TypeParameter = 26;
+ })(SymbolKind || (SymbolKind = {}));
+ (function(SymbolTag6) {
+ SymbolTag6.Deprecated = 1;
+ })(SymbolTag || (SymbolTag = {}));
+ (function(SymbolInformation8) {
+ function create(name2, kind, range, uri, containerName) {
+ var result = {
+ name: name2,
+ kind,
+ location: { uri, range }
+ };
+ if (containerName) {
+ result.containerName = containerName;
+ }
+ return result;
+ }
+ SymbolInformation8.create = create;
+ })(SymbolInformation || (SymbolInformation = {}));
+ (function(DocumentSymbol8) {
+ function create(name2, detail, kind, range, selectionRange, children) {
+ var result = {
+ name: name2,
+ detail,
+ kind,
+ range,
+ selectionRange
+ };
+ if (children !== void 0) {
+ result.children = children;
+ }
+ return result;
+ }
+ DocumentSymbol8.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags));
+ }
+ DocumentSymbol8.is = is;
+ })(DocumentSymbol || (DocumentSymbol = {}));
+ (function(CodeActionKind10) {
+ CodeActionKind10.Empty = "";
+ CodeActionKind10.QuickFix = "quickfix";
+ CodeActionKind10.Refactor = "refactor";
+ CodeActionKind10.RefactorExtract = "refactor.extract";
+ CodeActionKind10.RefactorInline = "refactor.inline";
+ CodeActionKind10.RefactorRewrite = "refactor.rewrite";
+ CodeActionKind10.Source = "source";
+ CodeActionKind10.SourceOrganizeImports = "source.organizeImports";
+ CodeActionKind10.SourceFixAll = "source.fixAll";
+ })(CodeActionKind || (CodeActionKind = {}));
+ (function(CodeActionContext6) {
+ function create(diagnostics, only) {
+ var result = { diagnostics };
+ if (only !== void 0 && only !== null) {
+ result.only = only;
+ }
+ return result;
+ }
+ CodeActionContext6.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));
+ }
+ CodeActionContext6.is = is;
+ })(CodeActionContext || (CodeActionContext = {}));
+ (function(CodeAction9) {
+ function create(title, kindOrCommandOrEdit, kind) {
+ var result = { title };
+ var checkKind = true;
+ if (typeof kindOrCommandOrEdit === "string") {
+ checkKind = false;
+ result.kind = kindOrCommandOrEdit;
+ } else if (Command.is(kindOrCommandOrEdit)) {
+ result.command = kindOrCommandOrEdit;
+ } else {
+ result.edit = kindOrCommandOrEdit;
+ }
+ if (checkKind && kind !== void 0) {
+ result.kind = kind;
+ }
+ return result;
+ }
+ CodeAction9.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));
+ }
+ CodeAction9.is = is;
+ })(CodeAction || (CodeAction = {}));
+ (function(CodeLens6) {
+ function create(range, data) {
+ var result = { range };
+ if (Is.defined(data)) {
+ result.data = data;
+ }
+ return result;
+ }
+ CodeLens6.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));
+ }
+ CodeLens6.is = is;
+ })(CodeLens || (CodeLens = {}));
+ (function(FormattingOptions7) {
+ function create(tabSize, insertSpaces) {
+ return { tabSize, insertSpaces };
+ }
+ FormattingOptions7.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);
+ }
+ FormattingOptions7.is = is;
+ })(FormattingOptions || (FormattingOptions = {}));
+ (function(DocumentLink7) {
+ function create(range, target, data) {
+ return { range, target, data };
+ }
+ DocumentLink7.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));
+ }
+ DocumentLink7.is = is;
+ })(DocumentLink || (DocumentLink = {}));
+ (function(SelectionRange6) {
+ function create(range, parent) {
+ return { range, parent };
+ }
+ SelectionRange6.create = create;
+ function is(value) {
+ var candidate = value;
+ return candidate !== void 0 && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange6.is(candidate.parent));
+ }
+ SelectionRange6.is = is;
+ })(SelectionRange || (SelectionRange = {}));
+ EOL = ["\n", "\r\n", "\r"];
+ (function(TextDocument5) {
+ function create(uri, languageId, version2, content) {
+ return new FullTextDocument(uri, languageId, version2, content);
+ }
+ TextDocument5.create = create;
+ function is(value) {
+ var candidate = value;
+ return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;
+ }
+ TextDocument5.is = is;
+ function applyEdits2(document2, edits) {
+ var text = document2.getText();
+ var sortedEdits = mergeSort2(edits, function(a, b) {
+ var diff = a.range.start.line - b.range.start.line;
+ if (diff === 0) {
+ return a.range.start.character - b.range.start.character;
+ }
+ return diff;
+ });
+ var lastModifiedOffset = text.length;
+ for (var i = sortedEdits.length - 1; i >= 0; i--) {
+ var e = sortedEdits[i];
+ var startOffset = document2.offsetAt(e.range.start);
+ var endOffset = document2.offsetAt(e.range.end);
+ if (endOffset <= lastModifiedOffset) {
+ text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);
+ } else {
+ throw new Error("Overlapping edit");
+ }
+ lastModifiedOffset = startOffset;
+ }
+ return text;
+ }
+ TextDocument5.applyEdits = applyEdits2;
+ function mergeSort2(data, compare) {
+ if (data.length <= 1) {
+ return data;
+ }
+ var p = data.length / 2 | 0;
+ var left = data.slice(0, p);
+ var right = data.slice(p);
+ mergeSort2(left, compare);
+ mergeSort2(right, compare);
+ var leftIdx = 0;
+ var rightIdx = 0;
+ var i = 0;
+ while (leftIdx < left.length && rightIdx < right.length) {
+ var ret = compare(left[leftIdx], right[rightIdx]);
+ if (ret <= 0) {
+ data[i++] = left[leftIdx++];
+ } else {
+ data[i++] = right[rightIdx++];
+ }
+ }
+ while (leftIdx < left.length) {
+ data[i++] = left[leftIdx++];
+ }
+ while (rightIdx < right.length) {
+ data[i++] = right[rightIdx++];
+ }
+ return data;
+ }
+ })(TextDocument || (TextDocument = {}));
+ FullTextDocument = function() {
+ function FullTextDocument3(uri, languageId, version2, content) {
+ this._uri = uri;
+ this._languageId = languageId;
+ this._version = version2;
+ this._content = content;
+ this._lineOffsets = void 0;
+ }
+ Object.defineProperty(FullTextDocument3.prototype, "uri", {
+ get: function() {
+ return this._uri;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(FullTextDocument3.prototype, "languageId", {
+ get: function() {
+ return this._languageId;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ Object.defineProperty(FullTextDocument3.prototype, "version", {
+ get: function() {
+ return this._version;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ FullTextDocument3.prototype.getText = function(range) {
+ if (range) {
+ var start = this.offsetAt(range.start);
+ var end = this.offsetAt(range.end);
+ return this._content.substring(start, end);
+ }
+ return this._content;
+ };
+ FullTextDocument3.prototype.update = function(event, version2) {
+ this._content = event.text;
+ this._version = version2;
+ this._lineOffsets = void 0;
+ };
+ FullTextDocument3.prototype.getLineOffsets = function() {
+ if (this._lineOffsets === void 0) {
+ var lineOffsets = [];
+ var text = this._content;
+ var isLineStart = true;
+ for (var i = 0; i < text.length; i++) {
+ if (isLineStart) {
+ lineOffsets.push(i);
+ isLineStart = false;
+ }
+ var ch = text.charAt(i);
+ isLineStart = ch === "\r" || ch === "\n";
+ if (ch === "\r" && i + 1 < text.length && text.charAt(i + 1) === "\n") {
+ i++;
+ }
+ }
+ if (isLineStart && text.length > 0) {
+ lineOffsets.push(text.length);
+ }
+ this._lineOffsets = lineOffsets;
+ }
+ return this._lineOffsets;
+ };
+ FullTextDocument3.prototype.positionAt = function(offset) {
+ offset = Math.max(Math.min(offset, this._content.length), 0);
+ var lineOffsets = this.getLineOffsets();
+ var low = 0, high = lineOffsets.length;
+ if (high === 0) {
+ return Position.create(0, offset);
+ }
+ while (low < high) {
+ var mid = Math.floor((low + high) / 2);
+ if (lineOffsets[mid] > offset) {
+ high = mid;
+ } else {
+ low = mid + 1;
+ }
+ }
+ var line = low - 1;
+ return Position.create(line, offset - lineOffsets[line]);
+ };
+ FullTextDocument3.prototype.offsetAt = function(position) {
+ var lineOffsets = this.getLineOffsets();
+ if (position.line >= lineOffsets.length) {
+ return this._content.length;
+ } else if (position.line < 0) {
+ return 0;
+ }
+ var lineOffset = lineOffsets[position.line];
+ var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;
+ return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);
+ };
+ Object.defineProperty(FullTextDocument3.prototype, "lineCount", {
+ get: function() {
+ return this.getLineOffsets().length;
+ },
+ enumerable: false,
+ configurable: true
+ });
+ return FullTextDocument3;
+ }();
+ (function(Is7) {
+ var toString = Object.prototype.toString;
+ function defined(value) {
+ return typeof value !== "undefined";
+ }
+ Is7.defined = defined;
+ function undefined2(value) {
+ return typeof value === "undefined";
+ }
+ Is7.undefined = undefined2;
+ function boolean2(value) {
+ return value === true || value === false;
+ }
+ Is7.boolean = boolean2;
+ function string2(value) {
+ return toString.call(value) === "[object String]";
+ }
+ Is7.string = string2;
+ function number2(value) {
+ return toString.call(value) === "[object Number]";
+ }
+ Is7.number = number2;
+ function numberRange(value, min, max) {
+ return toString.call(value) === "[object Number]" && min <= value && value <= max;
+ }
+ Is7.numberRange = numberRange;
+ function integer2(value) {
+ return toString.call(value) === "[object Number]" && -2147483648 <= value && value <= 2147483647;
+ }
+ Is7.integer = integer2;
+ function uinteger3(value) {
+ return toString.call(value) === "[object Number]" && 0 <= value && value <= 2147483647;
+ }
+ Is7.uinteger = uinteger3;
+ function func2(value) {
+ return toString.call(value) === "[object Function]";
+ }
+ Is7.func = func2;
+ function objectLiteral2(value) {
+ return value !== null && typeof value === "object";
+ }
+ Is7.objectLiteral = objectLiteral2;
+ function typedArray(value, check) {
+ return Array.isArray(value) && value.every(check);
+ }
+ Is7.typedArray = typedArray;
+ })(Is || (Is = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/messages.js
+var require_messages2 = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/messages.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.ProtocolNotificationType = exports2.ProtocolNotificationType0 = exports2.ProtocolRequestType = exports2.ProtocolRequestType0 = exports2.RegistrationType = void 0;
+ var vscode_jsonrpc_1 = require_main();
+ var RegistrationType4 = class {
+ constructor(method) {
+ this.method = method;
+ }
+ };
+ exports2.RegistrationType = RegistrationType4;
+ var ProtocolRequestType02 = class extends vscode_jsonrpc_1.RequestType0 {
+ constructor(method) {
+ super(method);
+ }
+ };
+ exports2.ProtocolRequestType0 = ProtocolRequestType02;
+ var ProtocolRequestType3 = class extends vscode_jsonrpc_1.RequestType {
+ constructor(method) {
+ super(method, vscode_jsonrpc_1.ParameterStructures.byName);
+ }
+ };
+ exports2.ProtocolRequestType = ProtocolRequestType3;
+ var ProtocolNotificationType02 = class extends vscode_jsonrpc_1.NotificationType0 {
+ constructor(method) {
+ super(method);
+ }
+ };
+ exports2.ProtocolNotificationType0 = ProtocolNotificationType02;
+ var ProtocolNotificationType4 = class extends vscode_jsonrpc_1.NotificationType {
+ constructor(method) {
+ super(method, vscode_jsonrpc_1.ParameterStructures.byName);
+ }
+ };
+ exports2.ProtocolNotificationType = ProtocolNotificationType4;
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/utils/is.js
+var require_is2 = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.objectLiteral = exports2.typedArray = exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0;
+ function boolean2(value) {
+ return value === true || value === false;
+ }
+ exports2.boolean = boolean2;
+ function string2(value) {
+ return typeof value === "string" || value instanceof String;
+ }
+ exports2.string = string2;
+ function number2(value) {
+ return typeof value === "number" || value instanceof Number;
+ }
+ exports2.number = number2;
+ function error(value) {
+ return value instanceof Error;
+ }
+ exports2.error = error;
+ function func2(value) {
+ return typeof value === "function";
+ }
+ exports2.func = func2;
+ function array(value) {
+ return Array.isArray(value);
+ }
+ exports2.array = array;
+ function stringArray(value) {
+ return array(value) && value.every((elem) => string2(elem));
+ }
+ exports2.stringArray = stringArray;
+ function typedArray(value, check) {
+ return Array.isArray(value) && value.every(check);
+ }
+ exports2.typedArray = typedArray;
+ function objectLiteral2(value) {
+ return value !== null && typeof value === "object";
+ }
+ exports2.objectLiteral = objectLiteral2;
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js
+var require_protocol_implementation = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.ImplementationRequest = void 0;
+ var messages_1 = require_messages2();
+ var ImplementationRequest3;
+ (function(ImplementationRequest4) {
+ ImplementationRequest4.method = "textDocument/implementation";
+ ImplementationRequest4.type = new messages_1.ProtocolRequestType(ImplementationRequest4.method);
+ })(ImplementationRequest3 = exports2.ImplementationRequest || (exports2.ImplementationRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js
+var require_protocol_typeDefinition = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.TypeDefinitionRequest = void 0;
+ var messages_1 = require_messages2();
+ var TypeDefinitionRequest3;
+ (function(TypeDefinitionRequest4) {
+ TypeDefinitionRequest4.method = "textDocument/typeDefinition";
+ TypeDefinitionRequest4.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest4.method);
+ })(TypeDefinitionRequest3 = exports2.TypeDefinitionRequest || (exports2.TypeDefinitionRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolders.js
+var require_protocol_workspaceFolders = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolders.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = void 0;
+ var messages_1 = require_messages2();
+ var WorkspaceFoldersRequest2;
+ (function(WorkspaceFoldersRequest3) {
+ WorkspaceFoldersRequest3.type = new messages_1.ProtocolRequestType0("workspace/workspaceFolders");
+ })(WorkspaceFoldersRequest2 = exports2.WorkspaceFoldersRequest || (exports2.WorkspaceFoldersRequest = {}));
+ var DidChangeWorkspaceFoldersNotification2;
+ (function(DidChangeWorkspaceFoldersNotification3) {
+ DidChangeWorkspaceFoldersNotification3.type = new messages_1.ProtocolNotificationType("workspace/didChangeWorkspaceFolders");
+ })(DidChangeWorkspaceFoldersNotification2 = exports2.DidChangeWorkspaceFoldersNotification || (exports2.DidChangeWorkspaceFoldersNotification = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js
+var require_protocol_configuration = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.ConfigurationRequest = void 0;
+ var messages_1 = require_messages2();
+ var ConfigurationRequest2;
+ (function(ConfigurationRequest3) {
+ ConfigurationRequest3.type = new messages_1.ProtocolRequestType("workspace/configuration");
+ })(ConfigurationRequest2 = exports2.ConfigurationRequest || (exports2.ConfigurationRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js
+var require_protocol_colorProvider = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.ColorPresentationRequest = exports2.DocumentColorRequest = void 0;
+ var messages_1 = require_messages2();
+ var DocumentColorRequest3;
+ (function(DocumentColorRequest4) {
+ DocumentColorRequest4.method = "textDocument/documentColor";
+ DocumentColorRequest4.type = new messages_1.ProtocolRequestType(DocumentColorRequest4.method);
+ })(DocumentColorRequest3 = exports2.DocumentColorRequest || (exports2.DocumentColorRequest = {}));
+ var ColorPresentationRequest2;
+ (function(ColorPresentationRequest3) {
+ ColorPresentationRequest3.type = new messages_1.ProtocolRequestType("textDocument/colorPresentation");
+ })(ColorPresentationRequest2 = exports2.ColorPresentationRequest || (exports2.ColorPresentationRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js
+var require_protocol_foldingRange = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.FoldingRangeRequest = exports2.FoldingRangeKind = void 0;
+ var messages_1 = require_messages2();
+ var FoldingRangeKind2;
+ (function(FoldingRangeKind3) {
+ FoldingRangeKind3["Comment"] = "comment";
+ FoldingRangeKind3["Imports"] = "imports";
+ FoldingRangeKind3["Region"] = "region";
+ })(FoldingRangeKind2 = exports2.FoldingRangeKind || (exports2.FoldingRangeKind = {}));
+ var FoldingRangeRequest3;
+ (function(FoldingRangeRequest4) {
+ FoldingRangeRequest4.method = "textDocument/foldingRange";
+ FoldingRangeRequest4.type = new messages_1.ProtocolRequestType(FoldingRangeRequest4.method);
+ })(FoldingRangeRequest3 = exports2.FoldingRangeRequest || (exports2.FoldingRangeRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js
+var require_protocol_declaration = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.DeclarationRequest = void 0;
+ var messages_1 = require_messages2();
+ var DeclarationRequest3;
+ (function(DeclarationRequest4) {
+ DeclarationRequest4.method = "textDocument/declaration";
+ DeclarationRequest4.type = new messages_1.ProtocolRequestType(DeclarationRequest4.method);
+ })(DeclarationRequest3 = exports2.DeclarationRequest || (exports2.DeclarationRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js
+var require_protocol_selectionRange = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.SelectionRangeRequest = void 0;
+ var messages_1 = require_messages2();
+ var SelectionRangeRequest3;
+ (function(SelectionRangeRequest4) {
+ SelectionRangeRequest4.method = "textDocument/selectionRange";
+ SelectionRangeRequest4.type = new messages_1.ProtocolRequestType(SelectionRangeRequest4.method);
+ })(SelectionRangeRequest3 = exports2.SelectionRangeRequest || (exports2.SelectionRangeRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js
+var require_protocol_progress = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = void 0;
+ var vscode_jsonrpc_1 = require_main();
+ var messages_1 = require_messages2();
+ var WorkDoneProgress3;
+ (function(WorkDoneProgress4) {
+ WorkDoneProgress4.type = new vscode_jsonrpc_1.ProgressType();
+ function is(value) {
+ return value === WorkDoneProgress4.type;
+ }
+ WorkDoneProgress4.is = is;
+ })(WorkDoneProgress3 = exports2.WorkDoneProgress || (exports2.WorkDoneProgress = {}));
+ var WorkDoneProgressCreateRequest2;
+ (function(WorkDoneProgressCreateRequest3) {
+ WorkDoneProgressCreateRequest3.type = new messages_1.ProtocolRequestType("window/workDoneProgress/create");
+ })(WorkDoneProgressCreateRequest2 = exports2.WorkDoneProgressCreateRequest || (exports2.WorkDoneProgressCreateRequest = {}));
+ var WorkDoneProgressCancelNotification;
+ (function(WorkDoneProgressCancelNotification2) {
+ WorkDoneProgressCancelNotification2.type = new messages_1.ProtocolNotificationType("window/workDoneProgress/cancel");
+ })(WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCancelNotification || (exports2.WorkDoneProgressCancelNotification = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js
+var require_protocol_callHierarchy = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.CallHierarchyPrepareRequest = void 0;
+ var messages_1 = require_messages2();
+ var CallHierarchyPrepareRequest3;
+ (function(CallHierarchyPrepareRequest4) {
+ CallHierarchyPrepareRequest4.method = "textDocument/prepareCallHierarchy";
+ CallHierarchyPrepareRequest4.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest4.method);
+ })(CallHierarchyPrepareRequest3 = exports2.CallHierarchyPrepareRequest || (exports2.CallHierarchyPrepareRequest = {}));
+ var CallHierarchyIncomingCallsRequest2;
+ (function(CallHierarchyIncomingCallsRequest3) {
+ CallHierarchyIncomingCallsRequest3.method = "callHierarchy/incomingCalls";
+ CallHierarchyIncomingCallsRequest3.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest3.method);
+ })(CallHierarchyIncomingCallsRequest2 = exports2.CallHierarchyIncomingCallsRequest || (exports2.CallHierarchyIncomingCallsRequest = {}));
+ var CallHierarchyOutgoingCallsRequest2;
+ (function(CallHierarchyOutgoingCallsRequest3) {
+ CallHierarchyOutgoingCallsRequest3.method = "callHierarchy/outgoingCalls";
+ CallHierarchyOutgoingCallsRequest3.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest3.method);
+ })(CallHierarchyOutgoingCallsRequest2 = exports2.CallHierarchyOutgoingCallsRequest || (exports2.CallHierarchyOutgoingCallsRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js
+var require_protocol_semanticTokens = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.SemanticTokensRegistrationType = exports2.TokenFormat = exports2.SemanticTokens = exports2.SemanticTokenModifiers = exports2.SemanticTokenTypes = void 0;
+ var messages_1 = require_messages2();
+ var SemanticTokenTypes2;
+ (function(SemanticTokenTypes3) {
+ SemanticTokenTypes3["namespace"] = "namespace";
+ SemanticTokenTypes3["type"] = "type";
+ SemanticTokenTypes3["class"] = "class";
+ SemanticTokenTypes3["enum"] = "enum";
+ SemanticTokenTypes3["interface"] = "interface";
+ SemanticTokenTypes3["struct"] = "struct";
+ SemanticTokenTypes3["typeParameter"] = "typeParameter";
+ SemanticTokenTypes3["parameter"] = "parameter";
+ SemanticTokenTypes3["variable"] = "variable";
+ SemanticTokenTypes3["property"] = "property";
+ SemanticTokenTypes3["enumMember"] = "enumMember";
+ SemanticTokenTypes3["event"] = "event";
+ SemanticTokenTypes3["function"] = "function";
+ SemanticTokenTypes3["method"] = "method";
+ SemanticTokenTypes3["macro"] = "macro";
+ SemanticTokenTypes3["keyword"] = "keyword";
+ SemanticTokenTypes3["modifier"] = "modifier";
+ SemanticTokenTypes3["comment"] = "comment";
+ SemanticTokenTypes3["string"] = "string";
+ SemanticTokenTypes3["number"] = "number";
+ SemanticTokenTypes3["regexp"] = "regexp";
+ SemanticTokenTypes3["operator"] = "operator";
+ })(SemanticTokenTypes2 = exports2.SemanticTokenTypes || (exports2.SemanticTokenTypes = {}));
+ var SemanticTokenModifiers2;
+ (function(SemanticTokenModifiers3) {
+ SemanticTokenModifiers3["declaration"] = "declaration";
+ SemanticTokenModifiers3["definition"] = "definition";
+ SemanticTokenModifiers3["readonly"] = "readonly";
+ SemanticTokenModifiers3["static"] = "static";
+ SemanticTokenModifiers3["deprecated"] = "deprecated";
+ SemanticTokenModifiers3["abstract"] = "abstract";
+ SemanticTokenModifiers3["async"] = "async";
+ SemanticTokenModifiers3["modification"] = "modification";
+ SemanticTokenModifiers3["documentation"] = "documentation";
+ SemanticTokenModifiers3["defaultLibrary"] = "defaultLibrary";
+ })(SemanticTokenModifiers2 = exports2.SemanticTokenModifiers || (exports2.SemanticTokenModifiers = {}));
+ var SemanticTokens6;
+ (function(SemanticTokens7) {
+ function is(value) {
+ const candidate = value;
+ return candidate !== void 0 && (candidate.resultId === void 0 || typeof candidate.resultId === "string") && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === "number");
+ }
+ SemanticTokens7.is = is;
+ })(SemanticTokens6 = exports2.SemanticTokens || (exports2.SemanticTokens = {}));
+ var TokenFormat2;
+ (function(TokenFormat3) {
+ TokenFormat3.Relative = "relative";
+ })(TokenFormat2 = exports2.TokenFormat || (exports2.TokenFormat = {}));
+ var SemanticTokensRegistrationType3;
+ (function(SemanticTokensRegistrationType4) {
+ SemanticTokensRegistrationType4.method = "textDocument/semanticTokens";
+ SemanticTokensRegistrationType4.type = new messages_1.RegistrationType(SemanticTokensRegistrationType4.method);
+ })(SemanticTokensRegistrationType3 = exports2.SemanticTokensRegistrationType || (exports2.SemanticTokensRegistrationType = {}));
+ var SemanticTokensRequest2;
+ (function(SemanticTokensRequest3) {
+ SemanticTokensRequest3.method = "textDocument/semanticTokens/full";
+ SemanticTokensRequest3.type = new messages_1.ProtocolRequestType(SemanticTokensRequest3.method);
+ })(SemanticTokensRequest2 = exports2.SemanticTokensRequest || (exports2.SemanticTokensRequest = {}));
+ var SemanticTokensDeltaRequest2;
+ (function(SemanticTokensDeltaRequest3) {
+ SemanticTokensDeltaRequest3.method = "textDocument/semanticTokens/full/delta";
+ SemanticTokensDeltaRequest3.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest3.method);
+ })(SemanticTokensDeltaRequest2 = exports2.SemanticTokensDeltaRequest || (exports2.SemanticTokensDeltaRequest = {}));
+ var SemanticTokensRangeRequest2;
+ (function(SemanticTokensRangeRequest3) {
+ SemanticTokensRangeRequest3.method = "textDocument/semanticTokens/range";
+ SemanticTokensRangeRequest3.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest3.method);
+ })(SemanticTokensRangeRequest2 = exports2.SemanticTokensRangeRequest || (exports2.SemanticTokensRangeRequest = {}));
+ var SemanticTokensRefreshRequest2;
+ (function(SemanticTokensRefreshRequest3) {
+ SemanticTokensRefreshRequest3.method = `workspace/semanticTokens/refresh`;
+ SemanticTokensRefreshRequest3.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest3.method);
+ })(SemanticTokensRefreshRequest2 = exports2.SemanticTokensRefreshRequest || (exports2.SemanticTokensRefreshRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js
+var require_protocol_showDocument = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.ShowDocumentRequest = void 0;
+ var messages_1 = require_messages2();
+ var ShowDocumentRequest2;
+ (function(ShowDocumentRequest3) {
+ ShowDocumentRequest3.method = "window/showDocument";
+ ShowDocumentRequest3.type = new messages_1.ProtocolRequestType(ShowDocumentRequest3.method);
+ })(ShowDocumentRequest2 = exports2.ShowDocumentRequest || (exports2.ShowDocumentRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js
+var require_protocol_linkedEditingRange = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.LinkedEditingRangeRequest = void 0;
+ var messages_1 = require_messages2();
+ var LinkedEditingRangeRequest3;
+ (function(LinkedEditingRangeRequest4) {
+ LinkedEditingRangeRequest4.method = "textDocument/linkedEditingRange";
+ LinkedEditingRangeRequest4.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest4.method);
+ })(LinkedEditingRangeRequest3 = exports2.LinkedEditingRangeRequest || (exports2.LinkedEditingRangeRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js
+var require_protocol_fileOperations = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.DidRenameFilesNotification = exports2.WillRenameFilesRequest = exports2.DidCreateFilesNotification = exports2.WillCreateFilesRequest = exports2.FileOperationPatternKind = void 0;
+ var messages_1 = require_messages2();
+ var FileOperationPatternKind2;
+ (function(FileOperationPatternKind3) {
+ FileOperationPatternKind3.file = "file";
+ FileOperationPatternKind3.folder = "folder";
+ })(FileOperationPatternKind2 = exports2.FileOperationPatternKind || (exports2.FileOperationPatternKind = {}));
+ var WillCreateFilesRequest3;
+ (function(WillCreateFilesRequest4) {
+ WillCreateFilesRequest4.method = "workspace/willCreateFiles";
+ WillCreateFilesRequest4.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest4.method);
+ })(WillCreateFilesRequest3 = exports2.WillCreateFilesRequest || (exports2.WillCreateFilesRequest = {}));
+ var DidCreateFilesNotification3;
+ (function(DidCreateFilesNotification4) {
+ DidCreateFilesNotification4.method = "workspace/didCreateFiles";
+ DidCreateFilesNotification4.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification4.method);
+ })(DidCreateFilesNotification3 = exports2.DidCreateFilesNotification || (exports2.DidCreateFilesNotification = {}));
+ var WillRenameFilesRequest3;
+ (function(WillRenameFilesRequest4) {
+ WillRenameFilesRequest4.method = "workspace/willRenameFiles";
+ WillRenameFilesRequest4.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest4.method);
+ })(WillRenameFilesRequest3 = exports2.WillRenameFilesRequest || (exports2.WillRenameFilesRequest = {}));
+ var DidRenameFilesNotification3;
+ (function(DidRenameFilesNotification4) {
+ DidRenameFilesNotification4.method = "workspace/didRenameFiles";
+ DidRenameFilesNotification4.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification4.method);
+ })(DidRenameFilesNotification3 = exports2.DidRenameFilesNotification || (exports2.DidRenameFilesNotification = {}));
+ var DidDeleteFilesNotification3;
+ (function(DidDeleteFilesNotification4) {
+ DidDeleteFilesNotification4.method = "workspace/didDeleteFiles";
+ DidDeleteFilesNotification4.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification4.method);
+ })(DidDeleteFilesNotification3 = exports2.DidDeleteFilesNotification || (exports2.DidDeleteFilesNotification = {}));
+ var WillDeleteFilesRequest3;
+ (function(WillDeleteFilesRequest4) {
+ WillDeleteFilesRequest4.method = "workspace/willDeleteFiles";
+ WillDeleteFilesRequest4.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest4.method);
+ })(WillDeleteFilesRequest3 = exports2.WillDeleteFilesRequest || (exports2.WillDeleteFilesRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js
+var require_protocol_moniker = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = void 0;
+ var messages_1 = require_messages2();
+ var UniquenessLevel;
+ (function(UniquenessLevel2) {
+ UniquenessLevel2["document"] = "document";
+ UniquenessLevel2["project"] = "project";
+ UniquenessLevel2["group"] = "group";
+ UniquenessLevel2["scheme"] = "scheme";
+ UniquenessLevel2["global"] = "global";
+ })(UniquenessLevel = exports2.UniquenessLevel || (exports2.UniquenessLevel = {}));
+ var MonikerKind;
+ (function(MonikerKind2) {
+ MonikerKind2["import"] = "import";
+ MonikerKind2["export"] = "export";
+ MonikerKind2["local"] = "local";
+ })(MonikerKind = exports2.MonikerKind || (exports2.MonikerKind = {}));
+ var MonikerRequest;
+ (function(MonikerRequest2) {
+ MonikerRequest2.method = "textDocument/moniker";
+ MonikerRequest2.type = new messages_1.ProtocolRequestType(MonikerRequest2.method);
+ })(MonikerRequest = exports2.MonikerRequest || (exports2.MonikerRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/protocol.js
+var require_protocol = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/protocol.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.DocumentLinkRequest = exports2.CodeLensRefreshRequest = exports2.CodeLensResolveRequest = exports2.CodeLensRequest = exports2.WorkspaceSymbolRequest = exports2.CodeActionResolveRequest = exports2.CodeActionRequest = exports2.DocumentSymbolRequest = exports2.DocumentHighlightRequest = exports2.ReferencesRequest = exports2.DefinitionRequest = exports2.SignatureHelpRequest = exports2.SignatureHelpTriggerKind = exports2.HoverRequest = exports2.CompletionResolveRequest = exports2.CompletionRequest = exports2.CompletionTriggerKind = exports2.PublishDiagnosticsNotification = exports2.WatchKind = exports2.FileChangeType = exports2.DidChangeWatchedFilesNotification = exports2.WillSaveTextDocumentWaitUntilRequest = exports2.WillSaveTextDocumentNotification = exports2.TextDocumentSaveReason = exports2.DidSaveTextDocumentNotification = exports2.DidCloseTextDocumentNotification = exports2.DidChangeTextDocumentNotification = exports2.TextDocumentContentChangeEvent = exports2.DidOpenTextDocumentNotification = exports2.TextDocumentSyncKind = exports2.TelemetryEventNotification = exports2.LogMessageNotification = exports2.ShowMessageRequest = exports2.ShowMessageNotification = exports2.MessageType = exports2.DidChangeConfigurationNotification = exports2.ExitNotification = exports2.ShutdownRequest = exports2.InitializedNotification = exports2.InitializeError = exports2.InitializeRequest = exports2.WorkDoneProgressOptions = exports2.TextDocumentRegistrationOptions = exports2.StaticRegistrationOptions = exports2.FailureHandlingKind = exports2.ResourceOperationKind = exports2.UnregistrationRequest = exports2.RegistrationRequest = exports2.DocumentSelector = exports2.DocumentFilter = void 0;
+ exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.WillRenameFilesRequest = exports2.DidRenameFilesNotification = exports2.WillCreateFilesRequest = exports2.DidCreateFilesNotification = exports2.FileOperationPatternKind = exports2.LinkedEditingRangeRequest = exports2.ShowDocumentRequest = exports2.SemanticTokensRegistrationType = exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.TokenFormat = exports2.SemanticTokens = exports2.SemanticTokenModifiers = exports2.SemanticTokenTypes = exports2.CallHierarchyPrepareRequest = exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = exports2.SelectionRangeRequest = exports2.DeclarationRequest = exports2.FoldingRangeRequest = exports2.ColorPresentationRequest = exports2.DocumentColorRequest = exports2.ConfigurationRequest = exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = exports2.TypeDefinitionRequest = exports2.ImplementationRequest = exports2.ApplyWorkspaceEditRequest = exports2.ExecuteCommandRequest = exports2.PrepareRenameRequest = exports2.RenameRequest = exports2.PrepareSupportDefaultBehavior = exports2.DocumentOnTypeFormattingRequest = exports2.DocumentRangeFormattingRequest = exports2.DocumentFormattingRequest = exports2.DocumentLinkResolveRequest = void 0;
+ var Is7 = require_is2();
+ var messages_1 = require_messages2();
+ var protocol_implementation_1 = require_protocol_implementation();
+ Object.defineProperty(exports2, "ImplementationRequest", { enumerable: true, get: function() {
+ return protocol_implementation_1.ImplementationRequest;
+ } });
+ var protocol_typeDefinition_1 = require_protocol_typeDefinition();
+ Object.defineProperty(exports2, "TypeDefinitionRequest", { enumerable: true, get: function() {
+ return protocol_typeDefinition_1.TypeDefinitionRequest;
+ } });
+ var protocol_workspaceFolders_1 = require_protocol_workspaceFolders();
+ Object.defineProperty(exports2, "WorkspaceFoldersRequest", { enumerable: true, get: function() {
+ return protocol_workspaceFolders_1.WorkspaceFoldersRequest;
+ } });
+ Object.defineProperty(exports2, "DidChangeWorkspaceFoldersNotification", { enumerable: true, get: function() {
+ return protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification;
+ } });
+ var protocol_configuration_1 = require_protocol_configuration();
+ Object.defineProperty(exports2, "ConfigurationRequest", { enumerable: true, get: function() {
+ return protocol_configuration_1.ConfigurationRequest;
+ } });
+ var protocol_colorProvider_1 = require_protocol_colorProvider();
+ Object.defineProperty(exports2, "DocumentColorRequest", { enumerable: true, get: function() {
+ return protocol_colorProvider_1.DocumentColorRequest;
+ } });
+ Object.defineProperty(exports2, "ColorPresentationRequest", { enumerable: true, get: function() {
+ return protocol_colorProvider_1.ColorPresentationRequest;
+ } });
+ var protocol_foldingRange_1 = require_protocol_foldingRange();
+ Object.defineProperty(exports2, "FoldingRangeRequest", { enumerable: true, get: function() {
+ return protocol_foldingRange_1.FoldingRangeRequest;
+ } });
+ var protocol_declaration_1 = require_protocol_declaration();
+ Object.defineProperty(exports2, "DeclarationRequest", { enumerable: true, get: function() {
+ return protocol_declaration_1.DeclarationRequest;
+ } });
+ var protocol_selectionRange_1 = require_protocol_selectionRange();
+ Object.defineProperty(exports2, "SelectionRangeRequest", { enumerable: true, get: function() {
+ return protocol_selectionRange_1.SelectionRangeRequest;
+ } });
+ var protocol_progress_1 = require_protocol_progress();
+ Object.defineProperty(exports2, "WorkDoneProgress", { enumerable: true, get: function() {
+ return protocol_progress_1.WorkDoneProgress;
+ } });
+ Object.defineProperty(exports2, "WorkDoneProgressCreateRequest", { enumerable: true, get: function() {
+ return protocol_progress_1.WorkDoneProgressCreateRequest;
+ } });
+ Object.defineProperty(exports2, "WorkDoneProgressCancelNotification", { enumerable: true, get: function() {
+ return protocol_progress_1.WorkDoneProgressCancelNotification;
+ } });
+ var protocol_callHierarchy_1 = require_protocol_callHierarchy();
+ Object.defineProperty(exports2, "CallHierarchyIncomingCallsRequest", { enumerable: true, get: function() {
+ return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest;
+ } });
+ Object.defineProperty(exports2, "CallHierarchyOutgoingCallsRequest", { enumerable: true, get: function() {
+ return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest;
+ } });
+ Object.defineProperty(exports2, "CallHierarchyPrepareRequest", { enumerable: true, get: function() {
+ return protocol_callHierarchy_1.CallHierarchyPrepareRequest;
+ } });
+ var protocol_semanticTokens_1 = require_protocol_semanticTokens();
+ Object.defineProperty(exports2, "SemanticTokenTypes", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokenTypes;
+ } });
+ Object.defineProperty(exports2, "SemanticTokenModifiers", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokenModifiers;
+ } });
+ Object.defineProperty(exports2, "SemanticTokens", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokens;
+ } });
+ Object.defineProperty(exports2, "TokenFormat", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.TokenFormat;
+ } });
+ Object.defineProperty(exports2, "SemanticTokensRequest", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokensRequest;
+ } });
+ Object.defineProperty(exports2, "SemanticTokensDeltaRequest", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokensDeltaRequest;
+ } });
+ Object.defineProperty(exports2, "SemanticTokensRangeRequest", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokensRangeRequest;
+ } });
+ Object.defineProperty(exports2, "SemanticTokensRefreshRequest", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokensRefreshRequest;
+ } });
+ Object.defineProperty(exports2, "SemanticTokensRegistrationType", { enumerable: true, get: function() {
+ return protocol_semanticTokens_1.SemanticTokensRegistrationType;
+ } });
+ var protocol_showDocument_1 = require_protocol_showDocument();
+ Object.defineProperty(exports2, "ShowDocumentRequest", { enumerable: true, get: function() {
+ return protocol_showDocument_1.ShowDocumentRequest;
+ } });
+ var protocol_linkedEditingRange_1 = require_protocol_linkedEditingRange();
+ Object.defineProperty(exports2, "LinkedEditingRangeRequest", { enumerable: true, get: function() {
+ return protocol_linkedEditingRange_1.LinkedEditingRangeRequest;
+ } });
+ var protocol_fileOperations_1 = require_protocol_fileOperations();
+ Object.defineProperty(exports2, "FileOperationPatternKind", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.FileOperationPatternKind;
+ } });
+ Object.defineProperty(exports2, "DidCreateFilesNotification", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.DidCreateFilesNotification;
+ } });
+ Object.defineProperty(exports2, "WillCreateFilesRequest", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.WillCreateFilesRequest;
+ } });
+ Object.defineProperty(exports2, "DidRenameFilesNotification", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.DidRenameFilesNotification;
+ } });
+ Object.defineProperty(exports2, "WillRenameFilesRequest", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.WillRenameFilesRequest;
+ } });
+ Object.defineProperty(exports2, "DidDeleteFilesNotification", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.DidDeleteFilesNotification;
+ } });
+ Object.defineProperty(exports2, "WillDeleteFilesRequest", { enumerable: true, get: function() {
+ return protocol_fileOperations_1.WillDeleteFilesRequest;
+ } });
+ var protocol_moniker_1 = require_protocol_moniker();
+ Object.defineProperty(exports2, "UniquenessLevel", { enumerable: true, get: function() {
+ return protocol_moniker_1.UniquenessLevel;
+ } });
+ Object.defineProperty(exports2, "MonikerKind", { enumerable: true, get: function() {
+ return protocol_moniker_1.MonikerKind;
+ } });
+ Object.defineProperty(exports2, "MonikerRequest", { enumerable: true, get: function() {
+ return protocol_moniker_1.MonikerRequest;
+ } });
+ var DocumentFilter;
+ (function(DocumentFilter2) {
+ function is(value) {
+ const candidate = value;
+ return Is7.string(candidate.language) || Is7.string(candidate.scheme) || Is7.string(candidate.pattern);
+ }
+ DocumentFilter2.is = is;
+ })(DocumentFilter = exports2.DocumentFilter || (exports2.DocumentFilter = {}));
+ var DocumentSelector40;
+ (function(DocumentSelector41) {
+ function is(value) {
+ if (!Array.isArray(value)) {
+ return false;
+ }
+ for (let elem of value) {
+ if (!Is7.string(elem) && !DocumentFilter.is(elem)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ DocumentSelector41.is = is;
+ })(DocumentSelector40 = exports2.DocumentSelector || (exports2.DocumentSelector = {}));
+ var RegistrationRequest2;
+ (function(RegistrationRequest3) {
+ RegistrationRequest3.type = new messages_1.ProtocolRequestType("client/registerCapability");
+ })(RegistrationRequest2 = exports2.RegistrationRequest || (exports2.RegistrationRequest = {}));
+ var UnregistrationRequest2;
+ (function(UnregistrationRequest3) {
+ UnregistrationRequest3.type = new messages_1.ProtocolRequestType("client/unregisterCapability");
+ })(UnregistrationRequest2 = exports2.UnregistrationRequest || (exports2.UnregistrationRequest = {}));
+ var ResourceOperationKind2;
+ (function(ResourceOperationKind3) {
+ ResourceOperationKind3.Create = "create";
+ ResourceOperationKind3.Rename = "rename";
+ ResourceOperationKind3.Delete = "delete";
+ })(ResourceOperationKind2 = exports2.ResourceOperationKind || (exports2.ResourceOperationKind = {}));
+ var FailureHandlingKind2;
+ (function(FailureHandlingKind3) {
+ FailureHandlingKind3.Abort = "abort";
+ FailureHandlingKind3.Transactional = "transactional";
+ FailureHandlingKind3.TextOnlyTransactional = "textOnlyTransactional";
+ FailureHandlingKind3.Undo = "undo";
+ })(FailureHandlingKind2 = exports2.FailureHandlingKind || (exports2.FailureHandlingKind = {}));
+ var StaticRegistrationOptions2;
+ (function(StaticRegistrationOptions3) {
+ function hasId(value) {
+ const candidate = value;
+ return candidate && Is7.string(candidate.id) && candidate.id.length > 0;
+ }
+ StaticRegistrationOptions3.hasId = hasId;
+ })(StaticRegistrationOptions2 = exports2.StaticRegistrationOptions || (exports2.StaticRegistrationOptions = {}));
+ var TextDocumentRegistrationOptions2;
+ (function(TextDocumentRegistrationOptions3) {
+ function is(value) {
+ const candidate = value;
+ return candidate && (candidate.documentSelector === null || DocumentSelector40.is(candidate.documentSelector));
+ }
+ TextDocumentRegistrationOptions3.is = is;
+ })(TextDocumentRegistrationOptions2 = exports2.TextDocumentRegistrationOptions || (exports2.TextDocumentRegistrationOptions = {}));
+ var WorkDoneProgressOptions2;
+ (function(WorkDoneProgressOptions3) {
+ function is(value) {
+ const candidate = value;
+ return Is7.objectLiteral(candidate) && (candidate.workDoneProgress === void 0 || Is7.boolean(candidate.workDoneProgress));
+ }
+ WorkDoneProgressOptions3.is = is;
+ function hasWorkDoneProgress(value) {
+ const candidate = value;
+ return candidate && Is7.boolean(candidate.workDoneProgress);
+ }
+ WorkDoneProgressOptions3.hasWorkDoneProgress = hasWorkDoneProgress;
+ })(WorkDoneProgressOptions2 = exports2.WorkDoneProgressOptions || (exports2.WorkDoneProgressOptions = {}));
+ var InitializeRequest2;
+ (function(InitializeRequest3) {
+ InitializeRequest3.type = new messages_1.ProtocolRequestType("initialize");
+ })(InitializeRequest2 = exports2.InitializeRequest || (exports2.InitializeRequest = {}));
+ var InitializeError2;
+ (function(InitializeError3) {
+ InitializeError3.unknownProtocolVersion = 1;
+ })(InitializeError2 = exports2.InitializeError || (exports2.InitializeError = {}));
+ var InitializedNotification2;
+ (function(InitializedNotification3) {
+ InitializedNotification3.type = new messages_1.ProtocolNotificationType("initialized");
+ })(InitializedNotification2 = exports2.InitializedNotification || (exports2.InitializedNotification = {}));
+ var ShutdownRequest2;
+ (function(ShutdownRequest3) {
+ ShutdownRequest3.type = new messages_1.ProtocolRequestType0("shutdown");
+ })(ShutdownRequest2 = exports2.ShutdownRequest || (exports2.ShutdownRequest = {}));
+ var ExitNotification2;
+ (function(ExitNotification3) {
+ ExitNotification3.type = new messages_1.ProtocolNotificationType0("exit");
+ })(ExitNotification2 = exports2.ExitNotification || (exports2.ExitNotification = {}));
+ var DidChangeConfigurationNotification2;
+ (function(DidChangeConfigurationNotification3) {
+ DidChangeConfigurationNotification3.type = new messages_1.ProtocolNotificationType("workspace/didChangeConfiguration");
+ })(DidChangeConfigurationNotification2 = exports2.DidChangeConfigurationNotification || (exports2.DidChangeConfigurationNotification = {}));
+ var MessageType2;
+ (function(MessageType3) {
+ MessageType3.Error = 1;
+ MessageType3.Warning = 2;
+ MessageType3.Info = 3;
+ MessageType3.Log = 4;
+ })(MessageType2 = exports2.MessageType || (exports2.MessageType = {}));
+ var ShowMessageNotification2;
+ (function(ShowMessageNotification3) {
+ ShowMessageNotification3.type = new messages_1.ProtocolNotificationType("window/showMessage");
+ })(ShowMessageNotification2 = exports2.ShowMessageNotification || (exports2.ShowMessageNotification = {}));
+ var ShowMessageRequest2;
+ (function(ShowMessageRequest3) {
+ ShowMessageRequest3.type = new messages_1.ProtocolRequestType("window/showMessageRequest");
+ })(ShowMessageRequest2 = exports2.ShowMessageRequest || (exports2.ShowMessageRequest = {}));
+ var LogMessageNotification2;
+ (function(LogMessageNotification3) {
+ LogMessageNotification3.type = new messages_1.ProtocolNotificationType("window/logMessage");
+ })(LogMessageNotification2 = exports2.LogMessageNotification || (exports2.LogMessageNotification = {}));
+ var TelemetryEventNotification2;
+ (function(TelemetryEventNotification3) {
+ TelemetryEventNotification3.type = new messages_1.ProtocolNotificationType("telemetry/event");
+ })(TelemetryEventNotification2 = exports2.TelemetryEventNotification || (exports2.TelemetryEventNotification = {}));
+ var TextDocumentSyncKind2;
+ (function(TextDocumentSyncKind3) {
+ TextDocumentSyncKind3.None = 0;
+ TextDocumentSyncKind3.Full = 1;
+ TextDocumentSyncKind3.Incremental = 2;
+ })(TextDocumentSyncKind2 = exports2.TextDocumentSyncKind || (exports2.TextDocumentSyncKind = {}));
+ var DidOpenTextDocumentNotification2;
+ (function(DidOpenTextDocumentNotification3) {
+ DidOpenTextDocumentNotification3.method = "textDocument/didOpen";
+ DidOpenTextDocumentNotification3.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification3.method);
+ })(DidOpenTextDocumentNotification2 = exports2.DidOpenTextDocumentNotification || (exports2.DidOpenTextDocumentNotification = {}));
+ var TextDocumentContentChangeEvent2;
+ (function(TextDocumentContentChangeEvent3) {
+ function isIncremental(event) {
+ let candidate = event;
+ return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === "number");
+ }
+ TextDocumentContentChangeEvent3.isIncremental = isIncremental;
+ function isFull(event) {
+ let candidate = event;
+ return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range === void 0 && candidate.rangeLength === void 0;
+ }
+ TextDocumentContentChangeEvent3.isFull = isFull;
+ })(TextDocumentContentChangeEvent2 = exports2.TextDocumentContentChangeEvent || (exports2.TextDocumentContentChangeEvent = {}));
+ var DidChangeTextDocumentNotification2;
+ (function(DidChangeTextDocumentNotification3) {
+ DidChangeTextDocumentNotification3.method = "textDocument/didChange";
+ DidChangeTextDocumentNotification3.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification3.method);
+ })(DidChangeTextDocumentNotification2 = exports2.DidChangeTextDocumentNotification || (exports2.DidChangeTextDocumentNotification = {}));
+ var DidCloseTextDocumentNotification2;
+ (function(DidCloseTextDocumentNotification3) {
+ DidCloseTextDocumentNotification3.method = "textDocument/didClose";
+ DidCloseTextDocumentNotification3.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification3.method);
+ })(DidCloseTextDocumentNotification2 = exports2.DidCloseTextDocumentNotification || (exports2.DidCloseTextDocumentNotification = {}));
+ var DidSaveTextDocumentNotification2;
+ (function(DidSaveTextDocumentNotification3) {
+ DidSaveTextDocumentNotification3.method = "textDocument/didSave";
+ DidSaveTextDocumentNotification3.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification3.method);
+ })(DidSaveTextDocumentNotification2 = exports2.DidSaveTextDocumentNotification || (exports2.DidSaveTextDocumentNotification = {}));
+ var TextDocumentSaveReason2;
+ (function(TextDocumentSaveReason3) {
+ TextDocumentSaveReason3.Manual = 1;
+ TextDocumentSaveReason3.AfterDelay = 2;
+ TextDocumentSaveReason3.FocusOut = 3;
+ })(TextDocumentSaveReason2 = exports2.TextDocumentSaveReason || (exports2.TextDocumentSaveReason = {}));
+ var WillSaveTextDocumentNotification2;
+ (function(WillSaveTextDocumentNotification3) {
+ WillSaveTextDocumentNotification3.method = "textDocument/willSave";
+ WillSaveTextDocumentNotification3.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification3.method);
+ })(WillSaveTextDocumentNotification2 = exports2.WillSaveTextDocumentNotification || (exports2.WillSaveTextDocumentNotification = {}));
+ var WillSaveTextDocumentWaitUntilRequest2;
+ (function(WillSaveTextDocumentWaitUntilRequest3) {
+ WillSaveTextDocumentWaitUntilRequest3.method = "textDocument/willSaveWaitUntil";
+ WillSaveTextDocumentWaitUntilRequest3.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest3.method);
+ })(WillSaveTextDocumentWaitUntilRequest2 = exports2.WillSaveTextDocumentWaitUntilRequest || (exports2.WillSaveTextDocumentWaitUntilRequest = {}));
+ var DidChangeWatchedFilesNotification2;
+ (function(DidChangeWatchedFilesNotification3) {
+ DidChangeWatchedFilesNotification3.type = new messages_1.ProtocolNotificationType("workspace/didChangeWatchedFiles");
+ })(DidChangeWatchedFilesNotification2 = exports2.DidChangeWatchedFilesNotification || (exports2.DidChangeWatchedFilesNotification = {}));
+ var FileChangeType3;
+ (function(FileChangeType4) {
+ FileChangeType4.Created = 1;
+ FileChangeType4.Changed = 2;
+ FileChangeType4.Deleted = 3;
+ })(FileChangeType3 = exports2.FileChangeType || (exports2.FileChangeType = {}));
+ var WatchKind2;
+ (function(WatchKind3) {
+ WatchKind3.Create = 1;
+ WatchKind3.Change = 2;
+ WatchKind3.Delete = 4;
+ })(WatchKind2 = exports2.WatchKind || (exports2.WatchKind = {}));
+ var PublishDiagnosticsNotification2;
+ (function(PublishDiagnosticsNotification3) {
+ PublishDiagnosticsNotification3.type = new messages_1.ProtocolNotificationType("textDocument/publishDiagnostics");
+ })(PublishDiagnosticsNotification2 = exports2.PublishDiagnosticsNotification || (exports2.PublishDiagnosticsNotification = {}));
+ var CompletionTriggerKind3;
+ (function(CompletionTriggerKind4) {
+ CompletionTriggerKind4.Invoked = 1;
+ CompletionTriggerKind4.TriggerCharacter = 2;
+ CompletionTriggerKind4.TriggerForIncompleteCompletions = 3;
+ })(CompletionTriggerKind3 = exports2.CompletionTriggerKind || (exports2.CompletionTriggerKind = {}));
+ var CompletionRequest2;
+ (function(CompletionRequest3) {
+ CompletionRequest3.method = "textDocument/completion";
+ CompletionRequest3.type = new messages_1.ProtocolRequestType(CompletionRequest3.method);
+ })(CompletionRequest2 = exports2.CompletionRequest || (exports2.CompletionRequest = {}));
+ var CompletionResolveRequest2;
+ (function(CompletionResolveRequest3) {
+ CompletionResolveRequest3.method = "completionItem/resolve";
+ CompletionResolveRequest3.type = new messages_1.ProtocolRequestType(CompletionResolveRequest3.method);
+ })(CompletionResolveRequest2 = exports2.CompletionResolveRequest || (exports2.CompletionResolveRequest = {}));
+ var HoverRequest2;
+ (function(HoverRequest3) {
+ HoverRequest3.method = "textDocument/hover";
+ HoverRequest3.type = new messages_1.ProtocolRequestType(HoverRequest3.method);
+ })(HoverRequest2 = exports2.HoverRequest || (exports2.HoverRequest = {}));
+ var SignatureHelpTriggerKind3;
+ (function(SignatureHelpTriggerKind4) {
+ SignatureHelpTriggerKind4.Invoked = 1;
+ SignatureHelpTriggerKind4.TriggerCharacter = 2;
+ SignatureHelpTriggerKind4.ContentChange = 3;
+ })(SignatureHelpTriggerKind3 = exports2.SignatureHelpTriggerKind || (exports2.SignatureHelpTriggerKind = {}));
+ var SignatureHelpRequest2;
+ (function(SignatureHelpRequest3) {
+ SignatureHelpRequest3.method = "textDocument/signatureHelp";
+ SignatureHelpRequest3.type = new messages_1.ProtocolRequestType(SignatureHelpRequest3.method);
+ })(SignatureHelpRequest2 = exports2.SignatureHelpRequest || (exports2.SignatureHelpRequest = {}));
+ var DefinitionRequest2;
+ (function(DefinitionRequest3) {
+ DefinitionRequest3.method = "textDocument/definition";
+ DefinitionRequest3.type = new messages_1.ProtocolRequestType(DefinitionRequest3.method);
+ })(DefinitionRequest2 = exports2.DefinitionRequest || (exports2.DefinitionRequest = {}));
+ var ReferencesRequest2;
+ (function(ReferencesRequest3) {
+ ReferencesRequest3.method = "textDocument/references";
+ ReferencesRequest3.type = new messages_1.ProtocolRequestType(ReferencesRequest3.method);
+ })(ReferencesRequest2 = exports2.ReferencesRequest || (exports2.ReferencesRequest = {}));
+ var DocumentHighlightRequest2;
+ (function(DocumentHighlightRequest3) {
+ DocumentHighlightRequest3.method = "textDocument/documentHighlight";
+ DocumentHighlightRequest3.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest3.method);
+ })(DocumentHighlightRequest2 = exports2.DocumentHighlightRequest || (exports2.DocumentHighlightRequest = {}));
+ var DocumentSymbolRequest2;
+ (function(DocumentSymbolRequest3) {
+ DocumentSymbolRequest3.method = "textDocument/documentSymbol";
+ DocumentSymbolRequest3.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest3.method);
+ })(DocumentSymbolRequest2 = exports2.DocumentSymbolRequest || (exports2.DocumentSymbolRequest = {}));
+ var CodeActionRequest2;
+ (function(CodeActionRequest3) {
+ CodeActionRequest3.method = "textDocument/codeAction";
+ CodeActionRequest3.type = new messages_1.ProtocolRequestType(CodeActionRequest3.method);
+ })(CodeActionRequest2 = exports2.CodeActionRequest || (exports2.CodeActionRequest = {}));
+ var CodeActionResolveRequest2;
+ (function(CodeActionResolveRequest3) {
+ CodeActionResolveRequest3.method = "codeAction/resolve";
+ CodeActionResolveRequest3.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest3.method);
+ })(CodeActionResolveRequest2 = exports2.CodeActionResolveRequest || (exports2.CodeActionResolveRequest = {}));
+ var WorkspaceSymbolRequest2;
+ (function(WorkspaceSymbolRequest3) {
+ WorkspaceSymbolRequest3.method = "workspace/symbol";
+ WorkspaceSymbolRequest3.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest3.method);
+ })(WorkspaceSymbolRequest2 = exports2.WorkspaceSymbolRequest || (exports2.WorkspaceSymbolRequest = {}));
+ var CodeLensRequest2;
+ (function(CodeLensRequest3) {
+ CodeLensRequest3.method = "textDocument/codeLens";
+ CodeLensRequest3.type = new messages_1.ProtocolRequestType(CodeLensRequest3.method);
+ })(CodeLensRequest2 = exports2.CodeLensRequest || (exports2.CodeLensRequest = {}));
+ var CodeLensResolveRequest2;
+ (function(CodeLensResolveRequest3) {
+ CodeLensResolveRequest3.method = "codeLens/resolve";
+ CodeLensResolveRequest3.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest3.method);
+ })(CodeLensResolveRequest2 = exports2.CodeLensResolveRequest || (exports2.CodeLensResolveRequest = {}));
+ var CodeLensRefreshRequest2;
+ (function(CodeLensRefreshRequest3) {
+ CodeLensRefreshRequest3.method = `workspace/codeLens/refresh`;
+ CodeLensRefreshRequest3.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest3.method);
+ })(CodeLensRefreshRequest2 = exports2.CodeLensRefreshRequest || (exports2.CodeLensRefreshRequest = {}));
+ var DocumentLinkRequest2;
+ (function(DocumentLinkRequest3) {
+ DocumentLinkRequest3.method = "textDocument/documentLink";
+ DocumentLinkRequest3.type = new messages_1.ProtocolRequestType(DocumentLinkRequest3.method);
+ })(DocumentLinkRequest2 = exports2.DocumentLinkRequest || (exports2.DocumentLinkRequest = {}));
+ var DocumentLinkResolveRequest2;
+ (function(DocumentLinkResolveRequest3) {
+ DocumentLinkResolveRequest3.method = "documentLink/resolve";
+ DocumentLinkResolveRequest3.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest3.method);
+ })(DocumentLinkResolveRequest2 = exports2.DocumentLinkResolveRequest || (exports2.DocumentLinkResolveRequest = {}));
+ var DocumentFormattingRequest2;
+ (function(DocumentFormattingRequest3) {
+ DocumentFormattingRequest3.method = "textDocument/formatting";
+ DocumentFormattingRequest3.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest3.method);
+ })(DocumentFormattingRequest2 = exports2.DocumentFormattingRequest || (exports2.DocumentFormattingRequest = {}));
+ var DocumentRangeFormattingRequest2;
+ (function(DocumentRangeFormattingRequest3) {
+ DocumentRangeFormattingRequest3.method = "textDocument/rangeFormatting";
+ DocumentRangeFormattingRequest3.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest3.method);
+ })(DocumentRangeFormattingRequest2 = exports2.DocumentRangeFormattingRequest || (exports2.DocumentRangeFormattingRequest = {}));
+ var DocumentOnTypeFormattingRequest2;
+ (function(DocumentOnTypeFormattingRequest3) {
+ DocumentOnTypeFormattingRequest3.method = "textDocument/onTypeFormatting";
+ DocumentOnTypeFormattingRequest3.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest3.method);
+ })(DocumentOnTypeFormattingRequest2 = exports2.DocumentOnTypeFormattingRequest || (exports2.DocumentOnTypeFormattingRequest = {}));
+ var PrepareSupportDefaultBehavior;
+ (function(PrepareSupportDefaultBehavior2) {
+ PrepareSupportDefaultBehavior2.Identifier = 1;
+ })(PrepareSupportDefaultBehavior = exports2.PrepareSupportDefaultBehavior || (exports2.PrepareSupportDefaultBehavior = {}));
+ var RenameRequest2;
+ (function(RenameRequest3) {
+ RenameRequest3.method = "textDocument/rename";
+ RenameRequest3.type = new messages_1.ProtocolRequestType(RenameRequest3.method);
+ })(RenameRequest2 = exports2.RenameRequest || (exports2.RenameRequest = {}));
+ var PrepareRenameRequest2;
+ (function(PrepareRenameRequest3) {
+ PrepareRenameRequest3.method = "textDocument/prepareRename";
+ PrepareRenameRequest3.type = new messages_1.ProtocolRequestType(PrepareRenameRequest3.method);
+ })(PrepareRenameRequest2 = exports2.PrepareRenameRequest || (exports2.PrepareRenameRequest = {}));
+ var ExecuteCommandRequest2;
+ (function(ExecuteCommandRequest3) {
+ ExecuteCommandRequest3.type = new messages_1.ProtocolRequestType("workspace/executeCommand");
+ })(ExecuteCommandRequest2 = exports2.ExecuteCommandRequest || (exports2.ExecuteCommandRequest = {}));
+ var ApplyWorkspaceEditRequest2;
+ (function(ApplyWorkspaceEditRequest3) {
+ ApplyWorkspaceEditRequest3.type = new messages_1.ProtocolRequestType("workspace/applyEdit");
+ })(ApplyWorkspaceEditRequest2 = exports2.ApplyWorkspaceEditRequest || (exports2.ApplyWorkspaceEditRequest = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/connection.js
+var require_connection3 = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/connection.js"(exports2) {
+ "use strict";
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.createProtocolConnection = void 0;
+ var vscode_jsonrpc_1 = require_main();
+ function createProtocolConnection2(input, output, logger113, options) {
+ if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) {
+ options = { connectionStrategy: options };
+ }
+ return vscode_jsonrpc_1.createMessageConnection(input, output, logger113, options);
+ }
+ exports2.createProtocolConnection = createProtocolConnection2;
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/common/api.js
+var require_api3 = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/common/api.js"(exports2) {
+ "use strict";
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
+ return m[k];
+ } });
+ } : function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ o[k2] = m[k];
+ });
+ var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
+ for (var p in m)
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p))
+ __createBinding(exports3, m, p);
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.LSPErrorCodes = exports2.createProtocolConnection = void 0;
+ __exportStar(require_main(), exports2);
+ __exportStar((init_main(), main_exports), exports2);
+ __exportStar(require_messages2(), exports2);
+ __exportStar(require_protocol(), exports2);
+ var connection_1 = require_connection3();
+ Object.defineProperty(exports2, "createProtocolConnection", { enumerable: true, get: function() {
+ return connection_1.createProtocolConnection;
+ } });
+ var LSPErrorCodes2;
+ (function(LSPErrorCodes3) {
+ LSPErrorCodes3.lspReservedErrorRangeStart = -32899;
+ LSPErrorCodes3.ContentModified = -32801;
+ LSPErrorCodes3.RequestCancelled = -32800;
+ LSPErrorCodes3.lspReservedErrorRangeEnd = -32800;
+ })(LSPErrorCodes2 = exports2.LSPErrorCodes || (exports2.LSPErrorCodes = {}));
+ }
+});
+
+// node_modules/vscode-languageserver-protocol/lib/node/main.js
+var require_main2 = __commonJS({
+ "node_modules/vscode-languageserver-protocol/lib/node/main.js"(exports2) {
+ "use strict";
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
+ return m[k];
+ } });
+ } : function(o, m, k, k2) {
+ if (k2 === void 0)
+ k2 = k;
+ o[k2] = m[k];
+ });
+ var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
+ for (var p in m)
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p))
+ __createBinding(exports3, m, p);
+ };
+ Object.defineProperty(exports2, "__esModule", { value: true });
+ exports2.createProtocolConnection = void 0;
+ var node_1 = require_node2();
+ __exportStar(require_node2(), exports2);
+ __exportStar(require_api3(), exports2);
+ function createProtocolConnection2(input, output, logger113, options) {
+ return node_1.createMessageConnection(input, output, logger113, options);
+ }
+ exports2.createProtocolConnection = createProtocolConnection2;
+ }
+});
+
+// node_modules/debounce/index.js
+var require_debounce = __commonJS({
+ "node_modules/debounce/index.js"(exports2, module2) {
+ function debounce15(func2, wait2, immediate) {
+ var timeout, args, context, timestamp, result;
+ if (wait2 == null)
+ wait2 = 100;
+ function later() {
+ var last = Date.now() - timestamp;
+ if (last < wait2 && last >= 0) {
+ timeout = setTimeout(later, wait2 - last);
+ } else {
+ timeout = null;
+ if (!immediate) {
+ result = func2.apply(context, args);
+ context = args = null;
+ }
+ }
+ }
+ ;
+ var debounced = function() {
+ context = this;
+ args = arguments;
+ timestamp = Date.now();
+ var callNow = immediate && !timeout;
+ if (!timeout)
+ timeout = setTimeout(later, wait2);
+ if (callNow) {
+ result = func2.apply(context, args);
+ context = args = null;
+ }
+ return result;
+ };
+ debounced.clear = function() {
+ if (timeout) {
+ clearTimeout(timeout);
+ timeout = null;
+ }
+ };
+ debounced.flush = function() {
+ if (timeout) {
+ result = func2.apply(context, args);
+ context = args = null;
+ clearTimeout(timeout);
+ timeout = null;
+ }
+ };
+ return debounced;
+ }
+ debounce15.debounce = debounce15;
+ module2.exports = debounce15;
+ }
+});
+
+// node_modules/rfc-3986/index.js
+var require_rfc_3986 = __commonJS({
+ "node_modules/rfc-3986/index.js"(exports2, module2) {
+ "use strict";
+ var internals = {
+ rfc3986: {}
+ };
+ internals.generate = function() {
+ var or = "|";
+ var digit = "0-9";
+ var digitOnly = "[" + digit + "]";
+ var alpha = "a-zA-Z";
+ var alphaOnly = "[" + alpha + "]";
+ internals.rfc3986.cidr = digitOnly + or + "[1-2]" + digitOnly + or + "3[0-2]";
+ var hexDigit = digit + "A-Fa-f";
+ var hexDigitOnly = "[" + hexDigit + "]";
+ var unreserved = alpha + digit + "-\\._~";
+ var subDelims = "!\\$&'\\(\\)\\*\\+,;=";
+ var pctEncoded = "%" + hexDigit;
+ var pchar = unreserved + pctEncoded + subDelims + ":@";
+ var pcharOnly = "[" + pchar + "]";
+ var zeroPad = "0?";
+ var decOctect = "(?:" + zeroPad + zeroPad + digitOnly + or + zeroPad + "[1-9]" + digitOnly + or + "1" + digitOnly + digitOnly + or + "2[0-4]" + digitOnly + or + "25[0-5])";
+ internals.rfc3986.IPv4address = "(?:" + decOctect + "\\.){3}" + decOctect;
+ var h16 = hexDigitOnly + "{1,4}";
+ var ls32 = "(?:" + h16 + ":" + h16 + "|" + internals.rfc3986.IPv4address + ")";
+ var IPv6SixHex = "(?:" + h16 + ":){6}" + ls32;
+ var IPv6FiveHex = "::(?:" + h16 + ":){5}" + ls32;
+ var IPv6FourHex = "(?:" + h16 + ")?::(?:" + h16 + ":){4}" + ls32;
+ var IPv6ThreeHex = "(?:(?:" + h16 + ":){0,1}" + h16 + ")?::(?:" + h16 + ":){3}" + ls32;
+ var IPv6TwoHex = "(?:(?:" + h16 + ":){0,2}" + h16 + ")?::(?:" + h16 + ":){2}" + ls32;
+ var IPv6OneHex = "(?:(?:" + h16 + ":){0,3}" + h16 + ")?::" + h16 + ":" + ls32;
+ var IPv6NoneHex = "(?:(?:" + h16 + ":){0,4}" + h16 + ")?::" + ls32;
+ var IPv6NoneHex2 = "(?:(?:" + h16 + ":){0,5}" + h16 + ")?::" + h16;
+ var IPv6NoneHex3 = "(?:(?:" + h16 + ":){0,6}" + h16 + ")?::";
+ internals.rfc3986.IPv6address = "(?:" + IPv6SixHex + or + IPv6FiveHex + or + IPv6FourHex + or + IPv6ThreeHex + or + IPv6TwoHex + or + IPv6OneHex + or + IPv6NoneHex + or + IPv6NoneHex2 + or + IPv6NoneHex3 + ")";
+ internals.rfc3986.IPvFuture = "v" + hexDigitOnly + "+\\.[" + unreserved + subDelims + ":]+";
+ internals.rfc3986.scheme = alphaOnly + "[" + alpha + digit + "+-\\.]*";
+ var userinfo = "[" + unreserved + pctEncoded + subDelims + ":]*";
+ internals.rfc3986.IPLiteral = "\\[(?:" + internals.rfc3986.IPv6address + or + internals.rfc3986.IPvFuture + ")\\]";
+ var regName = "[" + unreserved + pctEncoded + subDelims + "]{0,255}";
+ var host = "(?:" + internals.rfc3986.IPLiteral + or + internals.rfc3986.IPv4address + or + regName + ")";
+ var port = digitOnly + "*";
+ var authority = "(?:" + userinfo + "@)?" + host + "(?::" + port + ")?";
+ var segment = pcharOnly + "*";
+ var segmentNz = pcharOnly + "+";
+ var pathAbEmpty = "(?:\\/" + segment + ")*";
+ var pathAbsolute = "\\/(?:" + segmentNz + pathAbEmpty + ")?";
+ var pathRootless = segmentNz + pathAbEmpty;
+ internals.rfc3986.hierPart = "(?:(?:\\/\\/" + authority + pathAbEmpty + ")" + or + pathAbsolute + or + pathRootless + ")";
+ internals.rfc3986.query = "[" + pchar + "\\/\\?]*(?=#|$)";
+ internals.rfc3986.fragment = "[" + pchar + "\\/\\?]*";
+ internals.rfc3986.uri = "^(?:" + internals.rfc3986.scheme + ":" + internals.rfc3986.hierPart + ")(?:\\?" + internals.rfc3986.query + ")?(?:#" + internals.rfc3986.fragment + ")?$";
+ };
+ internals.generate();
+ module2.exports = internals.rfc3986;
+ }
+});
+
+// node_modules/isuri/index.js
+var require_isuri = __commonJS({
+ "node_modules/isuri/index.js"(exports2, module2) {
+ "use strict";
+ var rfc3986 = require_rfc_3986();
+ function escapeRegex(string2) {
+ return string2.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, "\\$&");
+ }
+ var internals = {
+ Uri: {
+ createUriRegex: function(options) {
+ options = options || {};
+ if (typeof options !== "object" || Array.isArray(options)) {
+ throw new Error("options must be an object");
+ }
+ var customScheme = "";
+ if (options.scheme) {
+ if (!Array.isArray(options.scheme)) {
+ options.scheme = [options.scheme];
+ }
+ if (options.scheme.length <= 0) {
+ throw new Error("scheme must have at least 1 scheme specified");
+ }
+ for (var i = 0; i < options.scheme.length; ++i) {
+ var currentScheme = options.scheme[i];
+ if (!(currentScheme instanceof RegExp || typeof currentScheme === "string")) {
+ throw new Error("scheme must only contain Regular Expressions or Strings");
+ }
+ customScheme = customScheme + (customScheme ? "|" : "");
+ if (currentScheme instanceof RegExp) {
+ customScheme = customScheme + currentScheme.source;
+ } else {
+ if (!/[a-zA-Z][a-zA-Z0-9+-\.]*/.test(currentScheme)) {
+ throw new Error("scheme at position " + i + " must be a valid scheme");
+ }
+ customScheme = customScheme + escapeRegex(currentScheme);
+ }
+ }
+ }
+ var scheme = "(?:" + (customScheme || rfc3986.scheme) + ")";
+ return new RegExp("^(?:" + scheme + ":" + rfc3986.hierPart + ")(?:\\?" + rfc3986.query + ")?(?:#" + rfc3986.fragment + ")?$");
+ },
+ uriRegex: new RegExp(rfc3986.uri)
+ }
+ };
+ internals.Uri.isValid = function(val) {
+ return internals.Uri.uriRegex.test(val);
+ };
+ module2.exports = {
+ createUriRegex: internals.Uri.createUriRegex,
+ uriRegex: internals.Uri.uriRegex,
+ isValid: internals.Uri.isValid
+ };
+ }
+});
+
+// node_modules/vscode-uri/lib/esm/index.js
+function _validateUri(ret, _strict) {
+ if (!ret.scheme && _strict) {
+ throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "' + ret.authority + '", path: "' + ret.path + '", query: "' + ret.query + '", fragment: "' + ret.fragment + '"}');
+ }
+ if (ret.scheme && !_schemePattern.test(ret.scheme)) {
+ throw new Error("[UriError]: Scheme contains illegal characters.");
+ }
+ if (ret.path) {
+ if (ret.authority) {
+ if (!_singleSlashStart.test(ret.path)) {
+ throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character');
+ }
+ } else {
+ if (_doubleSlashStart.test(ret.path)) {
+ throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")');
+ }
+ }
+ }
+}
+function _schemeFix(scheme, _strict) {
+ if (!scheme && !_strict) {
+ return "file";
+ }
+ return scheme;
+}
+function _referenceResolution(scheme, path36) {
+ switch (scheme) {
+ case "https":
+ case "http":
+ case "file":
+ if (!path36) {
+ path36 = _slash;
+ } else if (path36[0] !== _slash) {
+ path36 = _slash + path36;
+ }
+ break;
+ }
+ return path36;
+}
+function encodeURIComponentFast(uriComponent, allowSlash) {
+ var res = void 0;
+ var nativeEncodePos = -1;
+ for (var pos = 0; pos < uriComponent.length; pos++) {
+ var code = uriComponent.charCodeAt(pos);
+ if (code >= 97 && code <= 122 || code >= 65 && code <= 90 || code >= 48 && code <= 57 || code === 45 || code === 46 || code === 95 || code === 126 || allowSlash && code === 47) {
+ if (nativeEncodePos !== -1) {
+ res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));
+ nativeEncodePos = -1;
+ }
+ if (res !== void 0) {
+ res += uriComponent.charAt(pos);
+ }
+ } else {
+ if (res === void 0) {
+ res = uriComponent.substr(0, pos);
+ }
+ var escaped = encodeTable[code];
+ if (escaped !== void 0) {
+ if (nativeEncodePos !== -1) {
+ res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));
+ nativeEncodePos = -1;
+ }
+ res += escaped;
+ } else if (nativeEncodePos === -1) {
+ nativeEncodePos = pos;
+ }
+ }
+ }
+ if (nativeEncodePos !== -1) {
+ res += encodeURIComponent(uriComponent.substring(nativeEncodePos));
+ }
+ return res !== void 0 ? res : uriComponent;
+}
+function encodeURIComponentMinimal(path36) {
+ var res = void 0;
+ for (var pos = 0; pos < path36.length; pos++) {
+ var code = path36.charCodeAt(pos);
+ if (code === 35 || code === 63) {
+ if (res === void 0) {
+ res = path36.substr(0, pos);
+ }
+ res += encodeTable[code];
+ } else {
+ if (res !== void 0) {
+ res += path36[pos];
+ }
+ }
+ }
+ return res !== void 0 ? res : path36;
+}
+function uriToFsPath(uri, keepDriveLetterCasing) {
+ var value;
+ if (uri.authority && uri.path.length > 1 && uri.scheme === "file") {
+ value = "//" + uri.authority + uri.path;
+ } else if (uri.path.charCodeAt(0) === 47 && (uri.path.charCodeAt(1) >= 65 && uri.path.charCodeAt(1) <= 90 || uri.path.charCodeAt(1) >= 97 && uri.path.charCodeAt(1) <= 122) && uri.path.charCodeAt(2) === 58) {
+ if (!keepDriveLetterCasing) {
+ value = uri.path[1].toLowerCase() + uri.path.substr(2);
+ } else {
+ value = uri.path.substr(1);
+ }
+ } else {
+ value = uri.path;
+ }
+ if (isWindows) {
+ value = value.replace(/\//g, "\\");
+ }
+ return value;
+}
+function _asFormatted(uri, skipEncoding) {
+ var encoder = !skipEncoding ? encodeURIComponentFast : encodeURIComponentMinimal;
+ var res = "";
+ var scheme = uri.scheme, authority = uri.authority, path36 = uri.path, query = uri.query, fragment = uri.fragment;
+ if (scheme) {
+ res += scheme;
+ res += ":";
+ }
+ if (authority || scheme === "file") {
+ res += _slash;
+ res += _slash;
+ }
+ if (authority) {
+ var idx = authority.indexOf("@");
+ if (idx !== -1) {
+ var userinfo = authority.substr(0, idx);
+ authority = authority.substr(idx + 1);
+ idx = userinfo.indexOf(":");
+ if (idx === -1) {
+ res += encoder(userinfo, false);
+ } else {
+ res += encoder(userinfo.substr(0, idx), false);
+ res += ":";
+ res += encoder(userinfo.substr(idx + 1), false);
+ }
+ res += "@";
+ }
+ authority = authority.toLowerCase();
+ idx = authority.indexOf(":");
+ if (idx === -1) {
+ res += encoder(authority, false);
+ } else {
+ res += encoder(authority.substr(0, idx), false);
+ res += authority.substr(idx);
+ }
+ }
+ if (path36) {
+ if (path36.length >= 3 && path36.charCodeAt(0) === 47 && path36.charCodeAt(2) === 58) {
+ var code = path36.charCodeAt(1);
+ if (code >= 65 && code <= 90) {
+ path36 = "/" + String.fromCharCode(code + 32) + ":" + path36.substr(3);
+ }
+ } else if (path36.length >= 2 && path36.charCodeAt(1) === 58) {
+ var code = path36.charCodeAt(0);
+ if (code >= 65 && code <= 90) {
+ path36 = String.fromCharCode(code + 32) + ":" + path36.substr(2);
+ }
+ }
+ res += encoder(path36, true);
+ }
+ if (query) {
+ res += "?";
+ res += encoder(query, false);
+ }
+ if (fragment) {
+ res += "#";
+ res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;
+ }
+ return res;
+}
+function decodeURIComponentGraceful(str) {
+ try {
+ return decodeURIComponent(str);
+ } catch (_a2) {
+ if (str.length > 3) {
+ return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));
+ } else {
+ return str;
+ }
+ }
+}
+function percentDecode(str) {
+ if (!str.match(_rEncodedAsHex)) {
+ return str;
+ }
+ return str.replace(_rEncodedAsHex, function(match) {
+ return decodeURIComponentGraceful(match);
+ });
+}
+var __extends, _a, isWindows, userAgent, _schemePattern, _singleSlashStart, _doubleSlashStart, _empty, _slash, _regexp, URI, _pathSepMarker, _URI, encodeTable, _rEncodedAsHex;
+var init_esm2 = __esm({
+ "node_modules/vscode-uri/lib/esm/index.js"() {
+ "use strict";
+ __extends = function() {
+ var extendStatics = function(d, b) {
+ extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
+ d2.__proto__ = b2;
+ } || function(d2, b2) {
+ for (var p in b2)
+ if (b2.hasOwnProperty(p))
+ d2[p] = b2[p];
+ };
+ return extendStatics(d, b);
+ };
+ return function(d, b) {
+ extendStatics(d, b);
+ function __() {
+ this.constructor = d;
+ }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ }();
+ if (typeof process === "object") {
+ isWindows = process.platform === "win32";
+ } else if (typeof navigator === "object") {
+ userAgent = navigator.userAgent;
+ isWindows = userAgent.indexOf("Windows") >= 0;
+ }
+ _schemePattern = /^\w[\w\d+.-]*$/;
+ _singleSlashStart = /^\//;
+ _doubleSlashStart = /^\/\//;
+ _empty = "";
+ _slash = "/";
+ _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
+ URI = function() {
+ function URI2(schemeOrData, authority, path36, query, fragment, _strict) {
+ if (_strict === void 0) {
+ _strict = false;
+ }
+ if (typeof schemeOrData === "object") {
+ this.scheme = schemeOrData.scheme || _empty;
+ this.authority = schemeOrData.authority || _empty;
+ this.path = schemeOrData.path || _empty;
+ this.query = schemeOrData.query || _empty;
+ this.fragment = schemeOrData.fragment || _empty;
+ } else {
+ this.scheme = _schemeFix(schemeOrData, _strict);
+ this.authority = authority || _empty;
+ this.path = _referenceResolution(this.scheme, path36 || _empty);
+ this.query = query || _empty;
+ this.fragment = fragment || _empty;
+ _validateUri(this, _strict);
+ }
+ }
+ URI2.isUri = function(thing) {
+ if (thing instanceof URI2) {
+ return true;
+ }
+ if (!thing) {
+ return false;
+ }
+ return typeof thing.authority === "string" && typeof thing.fragment === "string" && typeof thing.path === "string" && typeof thing.query === "string" && typeof thing.scheme === "string" && typeof thing.fsPath === "function" && typeof thing.with === "function" && typeof thing.toString === "function";
+ };
+ Object.defineProperty(URI2.prototype, "fsPath", {
+ get: function() {
+ return uriToFsPath(this, false);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ URI2.prototype.with = function(change) {
+ if (!change) {
+ return this;
+ }
+ var scheme = change.scheme, authority = change.authority, path36 = change.path, query = change.query, fragment = change.fragment;
+ if (scheme === void 0) {
+ scheme = this.scheme;
+ } else if (scheme === null) {
+ scheme = _empty;
+ }
+ if (authority === void 0) {
+ authority = this.authority;
+ } else if (authority === null) {
+ authority = _empty;
+ }
+ if (path36 === void 0) {
+ path36 = this.path;
+ } else if (path36 === null) {
+ path36 = _empty;
+ }
+ if (query === void 0) {
+ query = this.query;
+ } else if (query === null) {
+ query = _empty;
+ }
+ if (fragment === void 0) {
+ fragment = this.fragment;
+ } else if (fragment === null) {
+ fragment = _empty;
+ }
+ if (scheme === this.scheme && authority === this.authority && path36 === this.path && query === this.query && fragment === this.fragment) {
+ return this;
+ }
+ return new _URI(scheme, authority, path36, query, fragment);
+ };
+ URI2.parse = function(value, _strict) {
+ if (_strict === void 0) {
+ _strict = false;
+ }
+ var match = _regexp.exec(value);
+ if (!match) {
+ return new _URI(_empty, _empty, _empty, _empty, _empty);
+ }
+ return new _URI(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);
+ };
+ URI2.file = function(path36) {
+ var authority = _empty;
+ if (isWindows) {
+ path36 = path36.replace(/\\/g, _slash);
+ }
+ if (path36[0] === _slash && path36[1] === _slash) {
+ var idx = path36.indexOf(_slash, 2);
+ if (idx === -1) {
+ authority = path36.substring(2);
+ path36 = _slash;
+ } else {
+ authority = path36.substring(2, idx);
+ path36 = path36.substring(idx) || _slash;
+ }
+ }
+ return new _URI("file", authority, path36, _empty, _empty);
+ };
+ URI2.from = function(components) {
+ return new _URI(components.scheme, components.authority, components.path, components.query, components.fragment);
+ };
+ URI2.prototype.toString = function(skipEncoding) {
+ if (skipEncoding === void 0) {
+ skipEncoding = false;
+ }
+ return _asFormatted(this, skipEncoding);
+ };
+ URI2.prototype.toJSON = function() {
+ return this;
+ };
+ URI2.revive = function(data) {
+ if (!data) {
+ return data;
+ } else if (data instanceof URI2) {
+ return data;
+ } else {
+ var result = new _URI(data);
+ result._formatted = data.external;
+ result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;
+ return result;
+ }
+ };
+ return URI2;
+ }();
+ _pathSepMarker = isWindows ? 1 : void 0;
+ _URI = function(_super) {
+ __extends(_URI2, _super);
+ function _URI2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this._formatted = null;
+ _this._fsPath = null;
+ return _this;
+ }
+ Object.defineProperty(_URI2.prototype, "fsPath", {
+ get: function() {
+ if (!this._fsPath) {
+ this._fsPath = uriToFsPath(this, false);
+ }
+ return this._fsPath;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ _URI2.prototype.toString = function(skipEncoding) {
+ if (skipEncoding === void 0) {
+ skipEncoding = false;
+ }
+ if (!skipEncoding) {
+ if (!this._formatted) {
+ this._formatted = _asFormatted(this, false);
+ }
+ return this._formatted;
+ } else {
+ return _asFormatted(this, true);
+ }
+ };
+ _URI2.prototype.toJSON = function() {
+ var res = {
+ $mid: 1
+ };
+ if (this._fsPath) {
+ res.fsPath = this._fsPath;
+ res._sep = _pathSepMarker;
+ }
+ if (this._formatted) {
+ res.external = this._formatted;
+ }
+ if (this.path) {
+ res.path = this.path;
+ }
+ if (this.scheme) {
+ res.scheme = this.scheme;
+ }
+ if (this.authority) {
+ res.authority = this.authority;
+ }
+ if (this.query) {
+ res.query = this.query;
+ }
+ if (this.fragment) {
+ res.fragment = this.fragment;
+ }
+ return res;
+ };
+ return _URI2;
+ }(URI);
+ encodeTable = (_a = {}, _a[58] = "%3A", _a[47] = "%2F", _a[63] = "%3F", _a[35] = "%23", _a[91] = "%5B", _a[93] = "%5D", _a[64] = "%40", _a[33] = "%21", _a[36] = "%24", _a[38] = "%26", _a[39] = "%27", _a[40] = "%28", _a[41] = "%29", _a[42] = "%2A", _a[43] = "%2B", _a[44] = "%2C", _a[59] = "%3B", _a[61] = "%3D", _a[32] = "%20", _a);
+ _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;
+ }
+});
+
+// node_modules/isexe/windows.js
+var require_windows = __commonJS({
+ "node_modules/isexe/windows.js"(exports2, module2) {
+ module2.exports = isexe;
+ isexe.sync = sync;
+ var fs27 = require("fs");
+ function checkPathExt(path36, options) {
+ var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
+ if (!pathext) {
+ return true;
+ }
+ pathext = pathext.split(";");
+ if (pathext.indexOf("") !== -1) {
+ return true;
+ }
+ for (var i = 0; i < pathext.length; i++) {
+ var p = pathext[i].toLowerCase();
+ if (p && path36.substr(-p.length).toLowerCase() === p) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function checkStat(stat, path36, options) {
+ if (!stat.isSymbolicLink() && !stat.isFile()) {
+ return false;
+ }
+ return checkPathExt(path36, options);
+ }
+ function isexe(path36, options, cb) {
+ fs27.stat(path36, function(er, stat) {
+ cb(er, er ? false : checkStat(stat, path36, options));
+ });
+ }
+ function sync(path36, options) {
+ return checkStat(fs27.statSync(path36), path36, options);
+ }
+ }
+});
+
+// node_modules/isexe/mode.js
+var require_mode = __commonJS({
+ "node_modules/isexe/mode.js"(exports2, module2) {
+ module2.exports = isexe;
+ isexe.sync = sync;
+ var fs27 = require("fs");
+ function isexe(path36, options, cb) {
+ fs27.stat(path36, function(er, stat) {
+ cb(er, er ? false : checkStat(stat, options));
+ });
+ }
+ function sync(path36, options) {
+ return checkStat(fs27.statSync(path36), options);
+ }
+ function checkStat(stat, options) {
+ return stat.isFile() && checkMode(stat, options);
+ }
+ function checkMode(stat, options) {
+ var mod = stat.mode;
+ var uid = stat.uid;
+ var gid = stat.gid;
+ var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid();
+ var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid();
+ var u = parseInt("100", 8);
+ var g = parseInt("010", 8);
+ var o = parseInt("001", 8);
+ var ug = u | g;
+ var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;
+ return ret;
+ }
+ }
+});
+
+// node_modules/isexe/index.js
+var require_isexe = __commonJS({
+ "node_modules/isexe/index.js"(exports2, module2) {
+ var fs27 = require("fs");
+ var core;
+ if (process.platform === "win32" || global.TESTING_WINDOWS) {
+ core = require_windows();
+ } else {
+ core = require_mode();
+ }
+ module2.exports = isexe;
+ isexe.sync = sync;
+ function isexe(path36, options, cb) {
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+ if (!cb) {
+ if (typeof Promise !== "function") {
+ throw new TypeError("callback not provided");
+ }
+ return new Promise(function(resolve3, reject) {
+ isexe(path36, options || {}, function(er, is) {
+ if (er) {
+ reject(er);
+ } else {
+ resolve3(is);
+ }
+ });
+ });
+ }
+ core(path36, options || {}, function(er, is) {
+ if (er) {
+ if (er.code === "EACCES" || options && options.ignoreErrors) {
+ er = null;
+ is = false;
+ }
+ }
+ cb(er, is);
+ });
+ }
+ function sync(path36, options) {
+ try {
+ return core.sync(path36, options || {});
+ } catch (er) {
+ if (options && options.ignoreErrors || er.code === "EACCES") {
+ return false;
+ } else {
+ throw er;
+ }
+ }
+ }
+ }
+});
+
+// node_modules/which/which.js
+var require_which = __commonJS({
+ "node_modules/which/which.js"(exports2, module2) {
+ var isWindows4 = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
+ var path36 = require("path");
+ var COLON = isWindows4 ? ";" : ":";
+ var isexe = require_isexe();
+ var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
+ var getPathInfo = (cmd, opt) => {
+ const colon = opt.colon || COLON;
+ const pathEnv = cmd.match(/\//) || isWindows4 && cmd.match(/\\/) ? [""] : [
+ ...isWindows4 ? [process.cwd()] : [],
+ ...(opt.path || process.env.PATH || "").split(colon)
+ ];
+ const pathExtExe = isWindows4 ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
+ const pathExt = isWindows4 ? pathExtExe.split(colon) : [""];
+ if (isWindows4) {
+ if (cmd.indexOf(".") !== -1 && pathExt[0] !== "")
+ pathExt.unshift("");
+ }
+ return {
+ pathEnv,
+ pathExt,
+ pathExtExe
+ };
+ };
+ var which5 = (cmd, opt, cb) => {
+ if (typeof opt === "function") {
+ cb = opt;
+ opt = {};
+ }
+ if (!opt)
+ opt = {};
+ const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
+ const found = [];
+ const step = (i) => new Promise((resolve3, reject) => {
+ if (i === pathEnv.length)
+ return opt.all && found.length ? resolve3(found) : reject(getNotFoundError(cmd));
+ const ppRaw = pathEnv[i];
+ const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
+ const pCmd = path36.join(pathPart, cmd);
+ const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
+ resolve3(subStep(p, i, 0));
+ });
+ const subStep = (p, i, ii) => new Promise((resolve3, reject) => {
+ if (ii === pathExt.length)
+ return resolve3(step(i + 1));
+ const ext = pathExt[ii];
+ isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
+ if (!er && is) {
+ if (opt.all)
+ found.push(p + ext);
+ else
+ return resolve3(p + ext);
+ }
+ return resolve3(subStep(p, i, ii + 1));
+ });
+ });
+ return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
+ };
+ var whichSync = (cmd, opt) => {
+ opt = opt || {};
+ const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
+ const found = [];
+ for (let i = 0; i < pathEnv.length; i++) {
+ const ppRaw = pathEnv[i];
+ const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
+ const pCmd = path36.join(pathPart, cmd);
+ const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
+ for (let j = 0; j < pathExt.length; j++) {
+ const cur = p + pathExt[j];
+ try {
+ const is = isexe.sync(cur, { pathExt: pathExtExe });
+ if (is) {
+ if (opt.all)
+ found.push(cur);
+ else
+ return cur;
+ }
+ } catch (ex) {
+ }
+ }
+ }
+ if (opt.all && found.length)
+ return found;
+ if (opt.nothrow)
+ return null;
+ throw getNotFoundError(cmd);
+ };
+ module2.exports = which5;
+ which5.sync = whichSync;
+ }
+});
+
+// src/util/platform.ts
+var platform_exports = {};
+__export(platform_exports, {
+ OS: () => OS,
+ OperatingSystem: () => OperatingSystem,
+ Platform: () => Platform,
+ globals: () => globals,
+ isLinux: () => isLinux,
+ isMacintosh: () => isMacintosh,
+ isNative: () => isNative,
+ isWeb: () => isWeb,
+ isWindows: () => isWindows2,
+ language: () => language,
+ platform: () => platform
+});
+var _isWindows, _isMacintosh, _isLinux, _isNative, _isWeb, language, Platform, _platform, isWindows2, isMacintosh, isLinux, isNative, isWeb, platform, _globals, globals, OperatingSystem, OS;
+var init_platform = __esm({
+ "src/util/platform.ts"() {
+ _isWindows = false;
+ _isMacintosh = false;
+ _isLinux = false;
+ _isNative = false;
+ _isWeb = false;
+ language = "en";
+ if (typeof process === "object" && typeof process.nextTick === "function" && typeof process.platform === "string") {
+ _isWindows = process.platform === "win32";
+ _isMacintosh = process.platform === "darwin";
+ _isLinux = process.platform === "linux";
+ _isNative = true;
+ }
+ (function(Platform2) {
+ Platform2[Platform2["Web"] = 0] = "Web";
+ Platform2[Platform2["Mac"] = 1] = "Mac";
+ Platform2[Platform2["Linux"] = 2] = "Linux";
+ Platform2[Platform2["Windows"] = 3] = "Windows";
+ })(Platform || (Platform = {}));
+ _platform = 0;
+ if (_isNative) {
+ if (_isMacintosh) {
+ _platform = 1;
+ } else if (_isWindows) {
+ _platform = 3;
+ } else if (_isLinux) {
+ _platform = 2;
+ }
+ }
+ isWindows2 = _isWindows;
+ isMacintosh = _isMacintosh;
+ isLinux = _isLinux;
+ isNative = _isNative;
+ isWeb = _isWeb;
+ platform = _platform;
+ _globals = typeof self === "object" ? self : typeof global === "object" ? global : {};
+ globals = _globals;
+ (function(OperatingSystem2) {
+ OperatingSystem2[OperatingSystem2["Windows"] = 1] = "Windows";
+ OperatingSystem2[OperatingSystem2["Macintosh"] = 2] = "Macintosh";
+ OperatingSystem2[OperatingSystem2["Linux"] = 3] = "Linux";
+ })(OperatingSystem || (OperatingSystem = {}));
+ OS = _isMacintosh ? 2 : _isWindows ? 1 : 3;
+ }
+});
+
+// src/util/index.ts
+function isMarkdown(content) {
+ if (import_vscode_languageserver_protocol.MarkupContent.is(content) && content.kind == import_vscode_languageserver_protocol.MarkupKind.Markdown) {
+ return true;
+ }
+ return false;
+}
+function wait(ms) {
+ return new Promise((resolve3) => {
+ setTimeout(() => {
+ resolve3(void 0);
+ }, ms);
+ });
+}
+function waitNextTick(fn) {
+ return new Promise((resolve3) => {
+ process.nextTick(() => {
+ fn();
+ resolve3(void 0);
+ });
+ });
+}
+function getUri(fullpath, id, buftype, isCygwin) {
+ if (!fullpath)
+ return `untitled:${id}`;
+ if (isWindows2 && !isCygwin && !fullpath.startsWith("jdt://"))
+ fullpath = import_path.default.win32.normalize(fullpath);
+ if (import_path.default.isAbsolute(fullpath))
+ return URI.file(fullpath).toString();
+ if (import_isuri.default.isValid(fullpath))
+ return URI.parse(fullpath).toString();
+ if (buftype != "")
+ return `${buftype}:${id}`;
+ return `unknown:${id}`;
+}
+function disposeAll(disposables) {
+ while (disposables.length) {
+ const item = disposables.pop();
+ if (item) {
+ item.dispose();
+ }
+ }
+}
+function executable(command) {
+ try {
+ import_which.default.sync(command);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
+function runCommand(cmd, opts = {}, timeout) {
+ if (!isWindows2) {
+ opts.shell = opts.shell || process.env.SHELL;
+ }
+ opts.maxBuffer = 500 * 1024;
+ return new Promise((resolve3, reject) => {
+ let timer;
+ if (timeout) {
+ timer = setTimeout(() => {
+ reject(new Error(`timeout after ${timeout}s`));
+ }, timeout * 1e3);
+ }
+ (0, import_child_process.exec)(cmd, opts, (err, stdout, stderr) => {
+ if (timer)
+ clearTimeout(timer);
+ if (err) {
+ reject(new Error(`exited with ${err.code}
+${err}
+${stderr}`));
+ return;
+ }
+ resolve3(stdout);
+ });
+ });
+}
+function watchFile(filepath, onChange) {
+ let callback = (0, import_debounce.default)(onChange, 100);
+ try {
+ let watcher = import_fs.default.watch(filepath, {
+ persistent: true,
+ recursive: false,
+ encoding: "utf8"
+ }, () => {
+ callback();
+ });
+ return import_vscode_languageserver_protocol.Disposable.create(() => {
+ callback.clear();
+ watcher.close();
+ });
+ } catch (e) {
+ return import_vscode_languageserver_protocol.Disposable.create(() => {
+ callback.clear();
+ });
+ }
+}
+function isRunning(pid) {
+ try {
+ let res = process.kill(pid, 0);
+ return res == true;
+ } catch (e) {
+ return e.code === "EPERM";
+ }
+}
+function getKeymapModifier(mode) {
+ if (mode == "n" || mode == "o" || mode == "x" || mode == "v")
+ return "";
+ if (mode == "i")
+ return "";
+ if (mode == "s")
+ return "";
+ return "";
+}
+function concurrent(arr, fn, limit = 3) {
+ if (arr.length == 0)
+ return Promise.resolve();
+ let finished = 0;
+ let total = arr.length;
+ let remain = arr.slice();
+ return new Promise((resolve3) => {
+ let run = (val) => {
+ let cb = () => {
+ finished = finished + 1;
+ if (finished == total) {
+ resolve3();
+ } else if (remain.length) {
+ let next = remain.shift();
+ run(next);
+ }
+ };
+ fn(val).then(cb, cb);
+ };
+ for (let i = 0; i < Math.min(limit, remain.length); i++) {
+ let val = remain.shift();
+ run(val);
+ }
+ });
+}
+var import_child_process, import_debounce, import_fs, import_isuri, import_path, import_vscode_languageserver_protocol, import_which, logger, CONFIG_FILE_NAME;
+var init_util = __esm({
+ "src/util/index.ts"() {
+ import_child_process = __toModule(require("child_process"));
+ import_debounce = __toModule(require_debounce());
+ import_fs = __toModule(require("fs"));
+ import_isuri = __toModule(require_isuri());
+ import_path = __toModule(require("path"));
+ import_vscode_languageserver_protocol = __toModule(require_main2());
+ init_esm2();
+ import_which = __toModule(require_which());
+ init_platform();
+ logger = require_logger2()("util-index");
+ CONFIG_FILE_NAME = "coc-settings.json";
+ }
+});
+
+// src/util/is.ts
+function vimCompleteItem(value) {
+ return value && typeof value.word === "string";
+}
+function boolean(value) {
+ return typeof value === "boolean";
+}
+function string(value) {
+ return typeof value === "string";
+}
+function number(value) {
+ return typeof value === "number";
+}
+function func(value) {
+ return typeof value == "function";
+}
+function objectLiteral(obj) {
+ return obj != null && typeof obj === "object" && !Array.isArray(obj) && !(obj instanceof RegExp) && !(obj instanceof Date);
+}
+function emptyObject(obj) {
+ if (!objectLiteral(obj)) {
+ return false;
+ }
+ for (let key in obj) {
+ if (hasOwnProperty.call(obj, key)) {
+ return false;
+ }
+ }
+ return true;
+}
+var hasOwnProperty;
+var init_is = __esm({
+ "src/util/is.ts"() {
+ hasOwnProperty = Object.prototype.hasOwnProperty;
+ }
+});
+
+// src/util/object.ts
+function isEmpty(obj) {
+ if (!obj)
+ return true;
+ if (Array.isArray(obj))
+ return obj.length == 0;
+ return Object.keys(obj).length == 0;
+}
+function deepClone(obj) {
+ if (!obj || typeof obj !== "object") {
+ return obj;
+ }
+ if (obj instanceof RegExp) {
+ return obj;
+ }
+ const result = Array.isArray(obj) ? [] : {};
+ Object.keys(obj).forEach((key) => {
+ if (obj[key] && typeof obj[key] === "object") {
+ result[key] = deepClone(obj[key]);
+ } else {
+ result[key] = obj[key];
+ }
+ });
+ return result;
+}
+function deepFreeze(obj) {
+ if (!obj || typeof obj !== "object") {
+ return obj;
+ }
+ const stack = [obj];
+ while (stack.length > 0) {
+ let obj2 = stack.shift();
+ Object.freeze(obj2);
+ for (const key in obj2) {
+ if (_hasOwnProperty.call(obj2, key)) {
+ let prop = obj2[key];
+ if (typeof prop === "object" && !Object.isFrozen(prop)) {
+ stack.push(prop);
+ }
+ }
+ }
+ }
+ return obj;
+}
+function mixin(destination, source, overwrite = true) {
+ if (!objectLiteral(destination)) {
+ return source;
+ }
+ if (objectLiteral(source)) {
+ Object.keys(source).forEach((key) => {
+ if (key in destination) {
+ if (overwrite) {
+ if (objectLiteral(destination[key]) && objectLiteral(source[key])) {
+ mixin(destination[key], source[key], overwrite);
+ } else {
+ destination[key] = source[key];
+ }
+ }
+ } else {
+ destination[key] = source[key];
+ }
+ });
+ }
+ return destination;
+}
+function equals(one, other) {
+ if (one === other) {
+ return true;
+ }
+ if (one === null || one === void 0 || other === null || other === void 0) {
+ return false;
+ }
+ if (typeof one !== typeof other) {
+ return false;
+ }
+ if (typeof one !== "object") {
+ return false;
+ }
+ if (Array.isArray(one) !== Array.isArray(other)) {
+ return false;
+ }
+ let i;
+ let key;
+ if (Array.isArray(one)) {
+ if (one.length !== other.length) {
+ return false;
+ }
+ for (i = 0; i < one.length; i++) {
+ if (!equals(one[i], other[i])) {
+ return false;
+ }
+ }
+ } else {
+ const oneKeys = [];
+ for (key in one) {
+ oneKeys.push(key);
+ }
+ oneKeys.sort();
+ const otherKeys = [];
+ for (key in other) {
+ otherKeys.push(key);
+ }
+ otherKeys.sort();
+ if (!equals(oneKeys, otherKeys)) {
+ return false;
+ }
+ for (i = 0; i < oneKeys.length; i++) {
+ if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+var _hasOwnProperty;
+var init_object = __esm({
+ "src/util/object.ts"() {
+ init_is();
+ _hasOwnProperty = Object.prototype.hasOwnProperty;
+ }
+});
+
+// src/events.ts
+var import_vscode_languageserver_protocol2, logger2, Events, events_default;
+var init_events = __esm({
+ "src/events.ts"() {
+ import_vscode_languageserver_protocol2 = __toModule(require_main2());
+ init_util();
+ init_object();
+ logger2 = require_logger2()("events");
+ Events = class {
+ constructor() {
+ this.handlers = new Map();
+ this._lastChange = 0;
+ this._insertMode = false;
+ this._pumAlignTop = false;
+ }
+ get cursor() {
+ return this._cursor;
+ }
+ get pumAlignTop() {
+ return this._pumAlignTop;
+ }
+ get insertMode() {
+ return this._insertMode;
+ }
+ get lastChangeTs() {
+ return this._lastChange;
+ }
+ async fire(event, args) {
+ let cbs = this.handlers.get(event);
+ if (event == "InsertEnter") {
+ this._insertMode = true;
+ } else if (event == "InsertLeave") {
+ this._insertMode = false;
+ } else if (!this._insertMode && (event == "CursorHoldI" || event == "CursorMovedI")) {
+ this._insertMode = true;
+ void this.fire("InsertEnter", [args[0]]);
+ } else if (this._insertMode && (event == "CursorHold" || event == "CursorMoved")) {
+ this._insertMode = false;
+ this.fire("InsertLeave", [args[0]]).logError();
+ }
+ if (event == "MenuPopupChanged") {
+ this._pumAlignTop = args[1] > args[0].row;
+ }
+ if (event == "InsertCharPre") {
+ this._latestInsert = { bufnr: args[1], character: args[0], timestamp: Date.now() };
+ }
+ if (event == "TextChanged") {
+ this._lastChange = Date.now();
+ }
+ if (event == "TextChangedI" || event == "TextChangedP") {
+ this._lastChange = Date.now();
+ if (this._latestInsert) {
+ let insert = this._latestInsert;
+ this._latestInsert = void 0;
+ if (insert.bufnr == args[0] && Date.now() - insert.timestamp < 200 && args[1].pre.length) {
+ let character = args[1].pre.slice(-1);
+ process.nextTick(() => {
+ void this.fire("TextInsert", [...args, character]);
+ });
+ }
+ }
+ }
+ if (event == "CursorMoved" || event == "CursorMovedI") {
+ let cursor = {
+ bufnr: args[0],
+ lnum: args[1][0],
+ col: args[1][1],
+ insert: event == "CursorMovedI"
+ };
+ if (this._cursor && equals(this._cursor, cursor))
+ return;
+ this._cursor = cursor;
+ }
+ if (cbs) {
+ try {
+ await Promise.all(cbs.map((fn) => fn(args)));
+ } catch (e) {
+ if (e.message && e.message.indexOf("transport disconnected") == -1)
+ return;
+ logger2.error(`Error on event: ${event}`, e.stack);
+ }
+ }
+ }
+ on(event, handler, thisArg, disposables) {
+ if (Array.isArray(event)) {
+ let arr = disposables || [];
+ for (let ev of event) {
+ this.on(ev, handler, thisArg, arr);
+ }
+ return import_vscode_languageserver_protocol2.Disposable.create(() => {
+ disposeAll(arr);
+ });
+ } else {
+ let arr = this.handlers.get(event) || [];
+ let stack = Error().stack;
+ let wrappedhandler = (args) => new Promise((resolve3, reject) => {
+ let timer;
+ try {
+ Promise.resolve(handler.apply(thisArg || null, args)).then(() => {
+ if (timer)
+ clearTimeout(timer);
+ resolve3(void 0);
+ }, (e) => {
+ if (timer)
+ clearTimeout(timer);
+ reject(e);
+ });
+ timer = setTimeout(() => {
+ logger2.warn(`Handler of ${event} blocked more than 2s:`, stack);
+ }, 2e3);
+ } catch (e) {
+ reject(e);
+ }
+ });
+ arr.push(wrappedhandler);
+ this.handlers.set(event, arr);
+ let disposable = import_vscode_languageserver_protocol2.Disposable.create(() => {
+ let idx = arr.indexOf(wrappedhandler);
+ if (idx !== -1) {
+ arr.splice(idx, 1);
+ }
+ });
+ if (disposables) {
+ disposables.push(disposable);
+ }
+ return disposable;
+ }
+ }
+ };
+ events_default = new Events();
+ }
+});
+
+// node_modules/marked/src/defaults.js
+var require_defaults = __commonJS({
+ "node_modules/marked/src/defaults.js"(exports2, module2) {
+ function getDefaults() {
+ return {
+ baseUrl: null,
+ breaks: false,
+ extensions: null,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: "",
+ highlight: null,
+ langPrefix: "language-",
+ mangle: true,
+ pedantic: false,
+ renderer: null,
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartLists: false,
+ smartypants: false,
+ tokenizer: null,
+ walkTokens: null,
+ xhtml: false
+ };
+ }
+ function changeDefaults(newDefaults) {
+ module2.exports.defaults = newDefaults;
+ }
+ module2.exports = {
+ defaults: getDefaults(),
+ getDefaults,
+ changeDefaults
+ };
+ }
+});
+
+// node_modules/marked/src/helpers.js
+var require_helpers = __commonJS({
+ "node_modules/marked/src/helpers.js"(exports2, module2) {
+ var escapeTest = /[&<>"']/;
+ var escapeReplace = /[&<>"']/g;
+ var escapeTestNoEncode = /[<>"']|&(?!#?\w+;)/;
+ var escapeReplaceNoEncode = /[<>"']|&(?!#?\w+;)/g;
+ var escapeReplacements = {
+ "&": "&",
+ "<": "<",
+ ">": ">",
+ '"': """,
+ "'": "'"
+ };
+ var getEscapeReplacement = (ch) => escapeReplacements[ch];
+ function escape(html, encode) {
+ if (encode) {
+ if (escapeTest.test(html)) {
+ return html.replace(escapeReplace, getEscapeReplacement);
+ }
+ } else {
+ if (escapeTestNoEncode.test(html)) {
+ return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
+ }
+ }
+ return html;
+ }
+ var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
+ function unescape2(html) {
+ return html.replace(unescapeTest, (_, n) => {
+ n = n.toLowerCase();
+ if (n === "colon")
+ return ":";
+ if (n.charAt(0) === "#") {
+ return n.charAt(1) === "x" ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
+ }
+ return "";
+ });
+ }
+ var caret = /(^|[^\[])\^/g;
+ function edit2(regex, opt) {
+ regex = regex.source || regex;
+ opt = opt || "";
+ const obj = {
+ replace: (name2, val) => {
+ val = val.source || val;
+ val = val.replace(caret, "$1");
+ regex = regex.replace(name2, val);
+ return obj;
+ },
+ getRegex: () => {
+ return new RegExp(regex, opt);
+ }
+ };
+ return obj;
+ }
+ var nonWordAndColonTest = /[^\w:]/g;
+ var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+ function cleanUrl(sanitize, base, href) {
+ if (sanitize) {
+ let prot;
+ try {
+ prot = decodeURIComponent(unescape2(href)).replace(nonWordAndColonTest, "").toLowerCase();
+ } catch (e) {
+ return null;
+ }
+ if (prot.indexOf("javascript:") === 0 || prot.indexOf("vbscript:") === 0 || prot.indexOf("data:") === 0) {
+ return null;
+ }
+ }
+ if (base && !originIndependentUrl.test(href)) {
+ href = resolveUrl(base, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, "%");
+ } catch (e) {
+ return null;
+ }
+ return href;
+ }
+ var baseUrls = {};
+ var justDomain = /^[^:]+:\/*[^/]*$/;
+ var protocol = /^([^:]+:)[\s\S]*$/;
+ var domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
+ function resolveUrl(base, href) {
+ if (!baseUrls[" " + base]) {
+ if (justDomain.test(base)) {
+ baseUrls[" " + base] = base + "/";
+ } else {
+ baseUrls[" " + base] = rtrim(base, "/", true);
+ }
+ }
+ base = baseUrls[" " + base];
+ const relativeBase = base.indexOf(":") === -1;
+ if (href.substring(0, 2) === "//") {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(protocol, "$1") + href;
+ } else if (href.charAt(0) === "/") {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(domain, "$1") + href;
+ } else {
+ return base + href;
+ }
+ }
+ var noopTest = { exec: function noopTest2() {
+ } };
+ function merge(obj) {
+ let i = 1, target, key;
+ for (; i < arguments.length; i++) {
+ target = arguments[i];
+ for (key in target) {
+ if (Object.prototype.hasOwnProperty.call(target, key)) {
+ obj[key] = target[key];
+ }
+ }
+ }
+ return obj;
+ }
+ function splitCells(tableRow, count) {
+ const row = tableRow.replace(/\|/g, (match, offset, str) => {
+ let escaped = false, curr = offset;
+ while (--curr >= 0 && str[curr] === "\\")
+ escaped = !escaped;
+ if (escaped) {
+ return "|";
+ } else {
+ return " |";
+ }
+ }), cells = row.split(/ \|/);
+ let i = 0;
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count)
+ cells.push("");
+ }
+ for (; i < cells.length; i++) {
+ cells[i] = cells[i].trim().replace(/\\\|/g, "|");
+ }
+ return cells;
+ }
+ function rtrim(str, c, invert) {
+ const l = str.length;
+ if (l === 0) {
+ return "";
+ }
+ let suffLen = 0;
+ while (suffLen < l) {
+ const currChar = str.charAt(l - suffLen - 1);
+ if (currChar === c && !invert) {
+ suffLen++;
+ } else if (currChar !== c && invert) {
+ suffLen++;
+ } else {
+ break;
+ }
+ }
+ return str.substr(0, l - suffLen);
+ }
+ function findClosingBracket(str, b) {
+ if (str.indexOf(b[1]) === -1) {
+ return -1;
+ }
+ const l = str.length;
+ let level = 0, i = 0;
+ for (; i < l; i++) {
+ if (str[i] === "\\") {
+ i++;
+ } else if (str[i] === b[0]) {
+ level++;
+ } else if (str[i] === b[1]) {
+ level--;
+ if (level < 0) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+ function checkSanitizeDeprecation(opt) {
+ if (opt && opt.sanitize && !opt.silent) {
+ console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options");
+ }
+ }
+ function repeatString(pattern, count) {
+ if (count < 1) {
+ return "";
+ }
+ let result = "";
+ while (count > 1) {
+ if (count & 1) {
+ result += pattern;
+ }
+ count >>= 1;
+ pattern += pattern;
+ }
+ return result + pattern;
+ }
+ module2.exports = {
+ escape,
+ unescape: unescape2,
+ edit: edit2,
+ cleanUrl,
+ resolveUrl,
+ noopTest,
+ merge,
+ splitCells,
+ rtrim,
+ findClosingBracket,
+ checkSanitizeDeprecation,
+ repeatString
+ };
+ }
+});
+
+// node_modules/marked/src/Tokenizer.js
+var require_Tokenizer = __commonJS({
+ "node_modules/marked/src/Tokenizer.js"(exports2, module2) {
+ var { defaults: defaults2 } = require_defaults();
+ var {
+ rtrim,
+ splitCells,
+ escape,
+ findClosingBracket
+ } = require_helpers();
+ function outputLink(cap, link, raw) {
+ const href = link.href;
+ const title = link.title ? escape(link.title) : null;
+ const text = cap[1].replace(/\\([\[\]])/g, "$1");
+ if (cap[0].charAt(0) !== "!") {
+ return {
+ type: "link",
+ raw,
+ href,
+ title,
+ text
+ };
+ } else {
+ return {
+ type: "image",
+ raw,
+ href,
+ title,
+ text: escape(text)
+ };
+ }
+ }
+ function indentCodeCompensation(raw, text) {
+ const matchIndentToCode = raw.match(/^(\s+)(?:```)/);
+ if (matchIndentToCode === null) {
+ return text;
+ }
+ const indentToCode = matchIndentToCode[1];
+ return text.split("\n").map((node) => {
+ const matchIndentInNode = node.match(/^\s+/);
+ if (matchIndentInNode === null) {
+ return node;
+ }
+ const [indentInNode] = matchIndentInNode;
+ if (indentInNode.length >= indentToCode.length) {
+ return node.slice(indentToCode.length);
+ }
+ return node;
+ }).join("\n");
+ }
+ module2.exports = class Tokenizer {
+ constructor(options) {
+ this.options = options || defaults2;
+ }
+ space(src) {
+ const cap = this.rules.block.newline.exec(src);
+ if (cap) {
+ if (cap[0].length > 1) {
+ return {
+ type: "space",
+ raw: cap[0]
+ };
+ }
+ return { raw: "\n" };
+ }
+ }
+ code(src) {
+ const cap = this.rules.block.code.exec(src);
+ if (cap) {
+ const text = cap[0].replace(/^ {1,4}/gm, "");
+ return {
+ type: "code",
+ raw: cap[0],
+ codeBlockStyle: "indented",
+ text: !this.options.pedantic ? rtrim(text, "\n") : text
+ };
+ }
+ }
+ fences(src) {
+ const cap = this.rules.block.fences.exec(src);
+ if (cap) {
+ const raw = cap[0];
+ const text = indentCodeCompensation(raw, cap[3] || "");
+ return {
+ type: "code",
+ raw,
+ lang: cap[2] ? cap[2].trim() : cap[2],
+ text
+ };
+ }
+ }
+ heading(src) {
+ const cap = this.rules.block.heading.exec(src);
+ if (cap) {
+ let text = cap[2].trim();
+ if (/#$/.test(text)) {
+ const trimmed = rtrim(text, "#");
+ if (this.options.pedantic) {
+ text = trimmed.trim();
+ } else if (!trimmed || / $/.test(trimmed)) {
+ text = trimmed.trim();
+ }
+ }
+ return {
+ type: "heading",
+ raw: cap[0],
+ depth: cap[1].length,
+ text
+ };
+ }
+ }
+ nptable(src) {
+ const cap = this.rules.block.nptable.exec(src);
+ if (cap) {
+ const item = {
+ type: "table",
+ header: splitCells(cap[1].replace(/^ *| *\| *$/g, "")),
+ align: cap[2].replace(/^ *|\| *$/g, "").split(/ *\| */),
+ cells: cap[3] ? cap[3].replace(/\n$/, "").split("\n") : [],
+ raw: cap[0]
+ };
+ if (item.header.length === item.align.length) {
+ let l = item.align.length;
+ let i;
+ for (i = 0; i < l; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = "right";
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = "center";
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = "left";
+ } else {
+ item.align[i] = null;
+ }
+ }
+ l = item.cells.length;
+ for (i = 0; i < l; i++) {
+ item.cells[i] = splitCells(item.cells[i], item.header.length);
+ }
+ return item;
+ }
+ }
+ }
+ hr(src) {
+ const cap = this.rules.block.hr.exec(src);
+ if (cap) {
+ return {
+ type: "hr",
+ raw: cap[0]
+ };
+ }
+ }
+ blockquote(src) {
+ const cap = this.rules.block.blockquote.exec(src);
+ if (cap) {
+ const text = cap[0].replace(/^ *> ?/gm, "");
+ return {
+ type: "blockquote",
+ raw: cap[0],
+ text
+ };
+ }
+ }
+ list(src) {
+ const cap = this.rules.block.list.exec(src);
+ if (cap) {
+ let raw = cap[0];
+ const bull = cap[2];
+ const isordered = bull.length > 1;
+ const list2 = {
+ type: "list",
+ raw,
+ ordered: isordered,
+ start: isordered ? +bull.slice(0, -1) : "",
+ loose: false,
+ items: []
+ };
+ const itemMatch = cap[0].match(this.rules.block.item);
+ let next = false, item, space, bcurr, bnext, addBack, loose, istask, ischecked, endMatch;
+ let l = itemMatch.length;
+ bcurr = this.rules.block.listItemStart.exec(itemMatch[0]);
+ for (let i = 0; i < l; i++) {
+ item = itemMatch[i];
+ raw = item;
+ if (!this.options.pedantic) {
+ endMatch = item.match(new RegExp("\\n\\s*\\n {0," + (bcurr[0].length - 1) + "}\\S"));
+ if (endMatch) {
+ addBack = item.length - endMatch.index + itemMatch.slice(i + 1).join("\n").length;
+ list2.raw = list2.raw.substring(0, list2.raw.length - addBack);
+ item = item.substring(0, endMatch.index);
+ raw = item;
+ l = i + 1;
+ }
+ }
+ if (i !== l - 1) {
+ bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);
+ if (!this.options.pedantic ? bnext[1].length >= bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {
+ itemMatch.splice(i, 2, itemMatch[i] + (!this.options.pedantic && bnext[1].length < bcurr[0].length && !itemMatch[i].match(/\n$/) ? "" : "\n") + itemMatch[i + 1]);
+ i--;
+ l--;
+ continue;
+ } else if (!this.options.pedantic || this.options.smartLists ? bnext[2][bnext[2].length - 1] !== bull[bull.length - 1] : isordered === (bnext[2].length === 1)) {
+ addBack = itemMatch.slice(i + 1).join("\n").length;
+ list2.raw = list2.raw.substring(0, list2.raw.length - addBack);
+ i = l - 1;
+ }
+ bcurr = bnext;
+ }
+ space = item.length;
+ item = item.replace(/^ *([*+-]|\d+[.)]) ?/, "");
+ if (~item.indexOf("\n ")) {
+ space -= item.length;
+ item = !this.options.pedantic ? item.replace(new RegExp("^ {1," + space + "}", "gm"), "") : item.replace(/^ {1,4}/gm, "");
+ }
+ item = rtrim(item, "\n");
+ if (i !== l - 1) {
+ raw = raw + "\n";
+ }
+ loose = next || /\n\n(?!\s*$)/.test(raw);
+ if (i !== l - 1) {
+ next = raw.slice(-2) === "\n\n";
+ if (!loose)
+ loose = next;
+ }
+ if (loose) {
+ list2.loose = true;
+ }
+ if (this.options.gfm) {
+ istask = /^\[[ xX]\] /.test(item);
+ ischecked = void 0;
+ if (istask) {
+ ischecked = item[1] !== " ";
+ item = item.replace(/^\[[ xX]\] +/, "");
+ }
+ }
+ list2.items.push({
+ type: "list_item",
+ raw,
+ task: istask,
+ checked: ischecked,
+ loose,
+ text: item
+ });
+ }
+ return list2;
+ }
+ }
+ html(src) {
+ const cap = this.rules.block.html.exec(src);
+ if (cap) {
+ return {
+ type: this.options.sanitize ? "paragraph" : "html",
+ raw: cap[0],
+ pre: !this.options.sanitizer && (cap[1] === "pre" || cap[1] === "script" || cap[1] === "style"),
+ text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
+ };
+ }
+ }
+ def(src) {
+ const cap = this.rules.block.def.exec(src);
+ if (cap) {
+ if (cap[3])
+ cap[3] = cap[3].substring(1, cap[3].length - 1);
+ const tag = cap[1].toLowerCase().replace(/\s+/g, " ");
+ return {
+ type: "def",
+ tag,
+ raw: cap[0],
+ href: cap[2],
+ title: cap[3]
+ };
+ }
+ }
+ table(src) {
+ const cap = this.rules.block.table.exec(src);
+ if (cap) {
+ const item = {
+ type: "table",
+ header: splitCells(cap[1].replace(/^ *| *\| *$/g, "")),
+ align: cap[2].replace(/^ *|\| *$/g, "").split(/ *\| */),
+ cells: cap[3] ? cap[3].replace(/\n$/, "").split("\n") : []
+ };
+ if (item.header.length === item.align.length) {
+ item.raw = cap[0];
+ let l = item.align.length;
+ let i;
+ for (i = 0; i < l; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = "right";
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = "center";
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = "left";
+ } else {
+ item.align[i] = null;
+ }
+ }
+ l = item.cells.length;
+ for (i = 0; i < l; i++) {
+ item.cells[i] = splitCells(item.cells[i].replace(/^ *\| *| *\| *$/g, ""), item.header.length);
+ }
+ return item;
+ }
+ }
+ }
+ lheading(src) {
+ const cap = this.rules.block.lheading.exec(src);
+ if (cap) {
+ return {
+ type: "heading",
+ raw: cap[0],
+ depth: cap[2].charAt(0) === "=" ? 1 : 2,
+ text: cap[1]
+ };
+ }
+ }
+ paragraph(src) {
+ const cap = this.rules.block.paragraph.exec(src);
+ if (cap) {
+ return {
+ type: "paragraph",
+ raw: cap[0],
+ text: cap[1].charAt(cap[1].length - 1) === "\n" ? cap[1].slice(0, -1) : cap[1]
+ };
+ }
+ }
+ text(src) {
+ const cap = this.rules.block.text.exec(src);
+ if (cap) {
+ return {
+ type: "text",
+ raw: cap[0],
+ text: cap[0]
+ };
+ }
+ }
+ escape(src) {
+ const cap = this.rules.inline.escape.exec(src);
+ if (cap) {
+ return {
+ type: "escape",
+ raw: cap[0],
+ text: escape(cap[1])
+ };
+ }
+ }
+ tag(src, inLink, inRawBlock) {
+ const cap = this.rules.inline.tag.exec(src);
+ if (cap) {
+ if (!inLink && /^/i.test(cap[0])) {
+ inLink = false;
+ }
+ if (!inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ inRawBlock = true;
+ } else if (inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ inRawBlock = false;
+ }
+ return {
+ type: this.options.sanitize ? "text" : "html",
+ raw: cap[0],
+ inLink,
+ inRawBlock,
+ text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
+ };
+ }
+ }
+ link(src) {
+ const cap = this.rules.inline.link.exec(src);
+ if (cap) {
+ const trimmedUrl = cap[2].trim();
+ if (!this.options.pedantic && /^$/.test(trimmedUrl)) {
+ return;
+ }
+ const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), "\\");
+ if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
+ return;
+ }
+ } else {
+ const lastParenIndex = findClosingBracket(cap[2], "()");
+ if (lastParenIndex > -1) {
+ const start = cap[0].indexOf("!") === 0 ? 5 : 4;
+ const linkLen = start + cap[1].length + lastParenIndex;
+ cap[2] = cap[2].substring(0, lastParenIndex);
+ cap[0] = cap[0].substring(0, linkLen).trim();
+ cap[3] = "";
+ }
+ }
+ let href = cap[2];
+ let title = "";
+ if (this.options.pedantic) {
+ const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+ if (link) {
+ href = link[1];
+ title = link[3];
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : "";
+ }
+ href = href.trim();
+ if (/^$/.test(trimmedUrl)) {
+ href = href.slice(1);
+ } else {
+ href = href.slice(1, -1);
+ }
+ }
+ return outputLink(cap, {
+ href: href ? href.replace(this.rules.inline._escapes, "$1") : href,
+ title: title ? title.replace(this.rules.inline._escapes, "$1") : title
+ }, cap[0]);
+ }
+ }
+ reflink(src, links2) {
+ let cap;
+ if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
+ let link = (cap[2] || cap[1]).replace(/\s+/g, " ");
+ link = links2[link.toLowerCase()];
+ if (!link || !link.href) {
+ const text = cap[0].charAt(0);
+ return {
+ type: "text",
+ raw: text,
+ text
+ };
+ }
+ return outputLink(cap, link, cap[0]);
+ }
+ }
+ emStrong(src, maskedSrc, prevChar = "") {
+ let match = this.rules.inline.emStrong.lDelim.exec(src);
+ if (!match)
+ return;
+ if (match[3] && prevChar.match(/[\p{L}\p{N}]/u))
+ return;
+ const nextChar = match[1] || match[2] || "";
+ if (!nextChar || nextChar && (prevChar === "" || this.rules.inline.punctuation.exec(prevChar))) {
+ const lLength = match[0].length - 1;
+ let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;
+ const endReg = match[0][0] === "*" ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
+ endReg.lastIndex = 0;
+ maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
+ while ((match = endReg.exec(maskedSrc)) != null) {
+ rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
+ if (!rDelim)
+ continue;
+ rLength = rDelim.length;
+ if (match[3] || match[4]) {
+ delimTotal += rLength;
+ continue;
+ } else if (match[5] || match[6]) {
+ if (lLength % 3 && !((lLength + rLength) % 3)) {
+ midDelimTotal += rLength;
+ continue;
+ }
+ }
+ delimTotal -= rLength;
+ if (delimTotal > 0)
+ continue;
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
+ if (Math.min(lLength, rLength) % 2) {
+ return {
+ type: "em",
+ raw: src.slice(0, lLength + match.index + rLength + 1),
+ text: src.slice(1, lLength + match.index + rLength)
+ };
+ }
+ return {
+ type: "strong",
+ raw: src.slice(0, lLength + match.index + rLength + 1),
+ text: src.slice(2, lLength + match.index + rLength - 1)
+ };
+ }
+ }
+ }
+ codespan(src) {
+ const cap = this.rules.inline.code.exec(src);
+ if (cap) {
+ let text = cap[2].replace(/\n/g, " ");
+ const hasNonSpaceChars = /[^ ]/.test(text);
+ const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
+ if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
+ text = text.substring(1, text.length - 1);
+ }
+ text = escape(text, true);
+ return {
+ type: "codespan",
+ raw: cap[0],
+ text
+ };
+ }
+ }
+ br(src) {
+ const cap = this.rules.inline.br.exec(src);
+ if (cap) {
+ return {
+ type: "br",
+ raw: cap[0]
+ };
+ }
+ }
+ del(src) {
+ const cap = this.rules.inline.del.exec(src);
+ if (cap) {
+ return {
+ type: "del",
+ raw: cap[0],
+ text: cap[2]
+ };
+ }
+ }
+ autolink(src, mangle) {
+ const cap = this.rules.inline.autolink.exec(src);
+ if (cap) {
+ let text, href;
+ if (cap[2] === "@") {
+ text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
+ href = "mailto:" + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+ return {
+ type: "link",
+ raw: cap[0],
+ text,
+ href,
+ tokens: [
+ {
+ type: "text",
+ raw: text,
+ text
+ }
+ ]
+ };
+ }
+ }
+ url(src, mangle) {
+ let cap;
+ if (cap = this.rules.inline.url.exec(src)) {
+ let text, href;
+ if (cap[2] === "@") {
+ text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
+ href = "mailto:" + text;
+ } else {
+ let prevCapZero;
+ do {
+ prevCapZero = cap[0];
+ cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
+ } while (prevCapZero !== cap[0]);
+ text = escape(cap[0]);
+ if (cap[1] === "www.") {
+ href = "http://" + text;
+ } else {
+ href = text;
+ }
+ }
+ return {
+ type: "link",
+ raw: cap[0],
+ text,
+ href,
+ tokens: [
+ {
+ type: "text",
+ raw: text,
+ text
+ }
+ ]
+ };
+ }
+ }
+ inlineText(src, inRawBlock, smartypants) {
+ const cap = this.rules.inline.text.exec(src);
+ if (cap) {
+ let text;
+ if (inRawBlock) {
+ text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];
+ } else {
+ text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
+ }
+ return {
+ type: "text",
+ raw: cap[0],
+ text
+ };
+ }
+ }
+ };
+ }
+});
+
+// node_modules/marked/src/rules.js
+var require_rules = __commonJS({
+ "node_modules/marked/src/rules.js"(exports2, module2) {
+ var {
+ noopTest,
+ edit: edit2,
+ merge
+ } = require_helpers();
+ var block = {
+ newline: /^(?: *(?:\n|$))+/,
+ code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,
+ hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
+ heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,
+ html: "^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",
+ def: /^ {0,3}\[(label)\]: *\n? *([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
+ nptable: noopTest,
+ table: noopTest,
+ lheading: /^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,
+ text: /^[^\n]+/
+ };
+ block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
+ block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+ block.def = edit2(block.def).replace("label", block._label).replace("title", block._title).getRegex();
+ block.bullet = /(?:[*+-]|\d{1,9}[.)])/;
+ block.item = /^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/;
+ block.item = edit2(block.item, "gm").replace(/bull/g, block.bullet).getRegex();
+ block.listItemStart = edit2(/^( *)(bull) */).replace("bull", block.bullet).getRegex();
+ block.list = edit2(block.list).replace(/bull/g, block.bullet).replace("hr", "\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def", "\\n+(?=" + block.def.source + ")").getRegex();
+ block._tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
+ block._comment = /|$)/;
+ block.html = edit2(block.html, "i").replace("comment", block._comment).replace("tag", block._tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
+ block.paragraph = edit2(block._paragraph).replace("hr", block.hr).replace("heading", " {0,3}#{1,6} ").replace("|lheading", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", block._tag).getRegex();
+ block.blockquote = edit2(block.blockquote).replace("paragraph", block.paragraph).getRegex();
+ block.normal = merge({}, block);
+ block.gfm = merge({}, block.normal, {
+ nptable: "^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",
+ table: "^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"
+ });
+ block.gfm.nptable = edit2(block.gfm.nptable).replace("hr", block.hr).replace("heading", " {0,3}#{1,6} ").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", block._tag).getRegex();
+ block.gfm.table = edit2(block.gfm.table).replace("hr", block.hr).replace("heading", " {0,3}#{1,6} ").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", block._tag).getRegex();
+ block.pedantic = merge({}, block.normal, {
+ html: edit2(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?\\1> *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", block._comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
+ def: /^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
+ fences: noopTest,
+ paragraph: edit2(block.normal._paragraph).replace("hr", block.hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", block.lheading).replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").getRegex()
+ });
+ var inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noopTest,
+ tag: "^comment|^[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",
+ link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
+ nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
+ reflinkSearch: "reflink|nolink(?!\\()",
+ emStrong: {
+ lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
+ rDelimAst: /\_\_[^_*]*?\*[^_*]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
+ rDelimUnd: /\*\*[^_*]*?\_[^_*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/
+ },
+ code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
+ br: /^( {2,}|\\)\n(?!\s*$)/,
+ del: noopTest,
+ text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~";
+ inline.punctuation = edit2(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
+ inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
+ inline.escapedEmSt = /\\\*|\\_/g;
+ inline._comment = edit2(block._comment).replace("(?:-->|$)", "-->").getRegex();
+ inline.emStrong.lDelim = edit2(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
+ inline.emStrong.rDelimAst = edit2(inline.emStrong.rDelimAst, "g").replace(/punct/g, inline._punctuation).getRegex();
+ inline.emStrong.rDelimUnd = edit2(inline.emStrong.rDelimUnd, "g").replace(/punct/g, inline._punctuation).getRegex();
+ inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+ inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+ inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+ inline.autolink = edit2(inline.autolink).replace("scheme", inline._scheme).replace("email", inline._email).getRegex();
+ inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+ inline.tag = edit2(inline.tag).replace("comment", inline._comment).replace("attribute", inline._attribute).getRegex();
+ inline._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
+ inline._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;
+ inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+ inline.link = edit2(inline.link).replace("label", inline._label).replace("href", inline._href).replace("title", inline._title).getRegex();
+ inline.reflink = edit2(inline.reflink).replace("label", inline._label).getRegex();
+ inline.reflinkSearch = edit2(inline.reflinkSearch, "g").replace("reflink", inline.reflink).replace("nolink", inline.nolink).getRegex();
+ inline.normal = merge({}, inline);
+ inline.pedantic = merge({}, inline.normal, {
+ strong: {
+ start: /^__|\*\*/,
+ middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ endAst: /\*\*(?!\*)/g,
+ endUnd: /__(?!_)/g
+ },
+ em: {
+ start: /^_|\*/,
+ middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,
+ endAst: /\*(?!\*)/g,
+ endUnd: /_(?!_)/g
+ },
+ link: edit2(/^!?\[(label)\]\((.*?)\)/).replace("label", inline._label).getRegex(),
+ reflink: edit2(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", inline._label).getRegex()
+ });
+ inline.gfm = merge({}, inline.normal, {
+ escape: edit2(inline.escape).replace("])", "~|])").getRegex(),
+ _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
+ url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
+ _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ 0.5) {
+ ch = "x" + ch.toString(16);
+ }
+ out += "" + ch + ";";
+ }
+ return out;
+ }
+ module2.exports = class Lexer {
+ constructor(options) {
+ this.tokens = [];
+ this.tokens.links = Object.create(null);
+ this.options = options || defaults2;
+ this.options.tokenizer = this.options.tokenizer || new Tokenizer();
+ this.tokenizer = this.options.tokenizer;
+ this.tokenizer.options = this.options;
+ const rules = {
+ block: block.normal,
+ inline: inline.normal
+ };
+ if (this.options.pedantic) {
+ rules.block = block.pedantic;
+ rules.inline = inline.pedantic;
+ } else if (this.options.gfm) {
+ rules.block = block.gfm;
+ if (this.options.breaks) {
+ rules.inline = inline.breaks;
+ } else {
+ rules.inline = inline.gfm;
+ }
+ }
+ this.tokenizer.rules = rules;
+ }
+ static get rules() {
+ return {
+ block,
+ inline
+ };
+ }
+ static lex(src, options) {
+ const lexer = new Lexer(options);
+ return lexer.lex(src);
+ }
+ static lexInline(src, options) {
+ const lexer = new Lexer(options);
+ return lexer.inlineTokens(src);
+ }
+ lex(src) {
+ src = src.replace(/\r\n|\r/g, "\n").replace(/\t/g, " ");
+ this.blockTokens(src, this.tokens, true);
+ this.inline(this.tokens);
+ return this.tokens;
+ }
+ blockTokens(src, tokens = [], top = true) {
+ if (this.options.pedantic) {
+ src = src.replace(/^ +$/gm, "");
+ }
+ let token, i, l, lastToken, cutSrc, lastParagraphClipped;
+ while (src) {
+ if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((extTokenizer) => {
+ if (token = extTokenizer.call(this, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+ if (token = this.tokenizer.space(src)) {
+ src = src.substring(token.raw.length);
+ if (token.type) {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (token = this.tokenizer.code(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === "paragraph") {
+ lastToken.raw += "\n" + token.raw;
+ lastToken.text += "\n" + token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (token = this.tokenizer.fences(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.heading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.nptable(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.hr(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.blockquote(src)) {
+ src = src.substring(token.raw.length);
+ token.tokens = this.blockTokens(token.text, [], top);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.list(src)) {
+ src = src.substring(token.raw.length);
+ l = token.items.length;
+ for (i = 0; i < l; i++) {
+ token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);
+ }
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.html(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (top && (token = this.tokenizer.def(src))) {
+ src = src.substring(token.raw.length);
+ if (!this.tokens.links[token.tag]) {
+ this.tokens.links[token.tag] = {
+ href: token.href,
+ title: token.title
+ };
+ }
+ continue;
+ }
+ if (token = this.tokenizer.table(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.lheading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startBlock) {
+ let startIndex = Infinity;
+ const tempSrc = src.slice(1);
+ let tempStart;
+ this.options.extensions.startBlock.forEach(function(getStartIndex) {
+ tempStart = getStartIndex.call(this, tempSrc);
+ if (typeof tempStart === "number" && tempStart >= 0) {
+ startIndex = Math.min(startIndex, tempStart);
+ }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ }
+ if (top && (token = this.tokenizer.paragraph(cutSrc))) {
+ lastToken = tokens[tokens.length - 1];
+ if (lastParagraphClipped && lastToken.type === "paragraph") {
+ lastToken.raw += "\n" + token.raw;
+ lastToken.text += "\n" + token.text;
+ } else {
+ tokens.push(token);
+ }
+ lastParagraphClipped = cutSrc.length !== src.length;
+ src = src.substring(token.raw.length);
+ continue;
+ }
+ if (token = this.tokenizer.text(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === "text") {
+ lastToken.raw += "\n" + token.raw;
+ lastToken.text += "\n" + token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (src) {
+ const errMsg = "Infinite loop on byte: " + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ return tokens;
+ }
+ inline(tokens) {
+ let i, j, k, l2, row, token;
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+ switch (token.type) {
+ case "paragraph":
+ case "text":
+ case "heading": {
+ token.tokens = [];
+ this.inlineTokens(token.text, token.tokens);
+ break;
+ }
+ case "table": {
+ token.tokens = {
+ header: [],
+ cells: []
+ };
+ l2 = token.header.length;
+ for (j = 0; j < l2; j++) {
+ token.tokens.header[j] = [];
+ this.inlineTokens(token.header[j], token.tokens.header[j]);
+ }
+ l2 = token.cells.length;
+ for (j = 0; j < l2; j++) {
+ row = token.cells[j];
+ token.tokens.cells[j] = [];
+ for (k = 0; k < row.length; k++) {
+ token.tokens.cells[j][k] = [];
+ this.inlineTokens(row[k], token.tokens.cells[j][k]);
+ }
+ }
+ break;
+ }
+ case "blockquote": {
+ this.inline(token.tokens);
+ break;
+ }
+ case "list": {
+ l2 = token.items.length;
+ for (j = 0; j < l2; j++) {
+ this.inline(token.items[j].tokens);
+ }
+ break;
+ }
+ default: {
+ }
+ }
+ }
+ return tokens;
+ }
+ inlineTokens(src, tokens = [], inLink = false, inRawBlock = false) {
+ let token, lastToken, cutSrc;
+ let maskedSrc = src;
+ let match;
+ let keepPrevChar, prevChar;
+ if (this.tokens.links) {
+ const links2 = Object.keys(this.tokens.links);
+ if (links2.length > 0) {
+ while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
+ if (links2.includes(match[0].slice(match[0].lastIndexOf("[") + 1, -1))) {
+ maskedSrc = maskedSrc.slice(0, match.index) + "[" + repeatString("a", match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
+ }
+ }
+ }
+ }
+ while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + "[" + repeatString("a", match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
+ }
+ while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
+ }
+ while (src) {
+ if (!keepPrevChar) {
+ prevChar = "";
+ }
+ keepPrevChar = false;
+ if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((extTokenizer) => {
+ if (token = extTokenizer.call(this, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+ if (token = this.tokenizer.escape(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {
+ src = src.substring(token.raw.length);
+ inLink = token.inLink;
+ inRawBlock = token.inRawBlock;
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === "text" && lastToken.type === "text") {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (token = this.tokenizer.link(src)) {
+ src = src.substring(token.raw.length);
+ if (token.type === "link") {
+ token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
+ }
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.reflink(src, this.tokens.links)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (token.type === "link") {
+ token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
+ tokens.push(token);
+ } else if (lastToken && token.type === "text" && lastToken.type === "text") {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
+ src = src.substring(token.raw.length);
+ token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.codespan(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.br(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.del(src)) {
+ src = src.substring(token.raw.length);
+ token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
+ tokens.push(token);
+ continue;
+ }
+ if (token = this.tokenizer.autolink(src, mangle)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ if (!inLink && (token = this.tokenizer.url(src, mangle))) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startInline) {
+ let startIndex = Infinity;
+ const tempSrc = src.slice(1);
+ let tempStart;
+ this.options.extensions.startInline.forEach(function(getStartIndex) {
+ tempStart = getStartIndex.call(this, tempSrc);
+ if (typeof tempStart === "number" && tempStart >= 0) {
+ startIndex = Math.min(startIndex, tempStart);
+ }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ }
+ if (token = this.tokenizer.inlineText(cutSrc, inRawBlock, smartypants)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.slice(-1) !== "_") {
+ prevChar = token.raw.slice(-1);
+ }
+ keepPrevChar = true;
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === "text") {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (src) {
+ const errMsg = "Infinite loop on byte: " + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ return tokens;
+ }
+ };
+ }
+});
+
+// node_modules/marked/src/Renderer.js
+var require_Renderer = __commonJS({
+ "node_modules/marked/src/Renderer.js"(exports2, module2) {
+ var { defaults: defaults2 } = require_defaults();
+ var {
+ cleanUrl,
+ escape
+ } = require_helpers();
+ module2.exports = class Renderer {
+ constructor(options) {
+ this.options = options || defaults2;
+ }
+ code(code, infostring, escaped) {
+ const lang = (infostring || "").match(/\S*/)[0];
+ if (this.options.highlight) {
+ const out = this.options.highlight(code, lang);
+ if (out != null && out !== code) {
+ escaped = true;
+ code = out;
+ }
+ }
+ code = code.replace(/\n$/, "") + "\n";
+ if (!lang) {
+ return "" + (escaped ? code : escape(code, true)) + "
\n";
+ }
+ return '' + (escaped ? code : escape(code, true)) + "
\n";
+ }
+ blockquote(quote) {
+ return "\n" + quote + "
\n";
+ }
+ html(html) {
+ return html;
+ }
+ heading(text, level, raw, slugger) {
+ if (this.options.headerIds) {
+ return "\n";
+ }
+ return "" + text + "\n";
+ }
+ hr() {
+ return this.options.xhtml ? "
\n" : "
\n";
+ }
+ list(body, ordered, start) {
+ const type = ordered ? "ol" : "ul", startatt = ordered && start !== 1 ? ' start="' + start + '"' : "";
+ return "<" + type + startatt + ">\n" + body + "" + type + ">\n";
+ }
+ listitem(text) {
+ return "" + text + "\n";
+ }
+ checkbox(checked) {
+ return " ";
+ }
+ paragraph(text) {
+ return "" + text + "
\n";
+ }
+ table(header, body) {
+ if (body)
+ body = "" + body + "";
+ return "\n\n" + header + "\n" + body + "
\n";
+ }
+ tablerow(content) {
+ return "\n" + content + "
\n";
+ }
+ tablecell(content, flags) {
+ const type = flags.header ? "th" : "td";
+ const tag = flags.align ? "<" + type + ' align="' + flags.align + '">' : "<" + type + ">";
+ return tag + content + "" + type + ">\n";
+ }
+ strong(text) {
+ return "" + text + "";
+ }
+ em(text) {
+ return "" + text + "";
+ }
+ codespan(text) {
+ return "" + text + "
";
+ }
+ br() {
+ return this.options.xhtml ? "
" : "
";
+ }
+ del(text) {
+ return "" + text + "";
+ }
+ link(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ let out = '" + text + "";
+ return out;
+ }
+ image(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ let out = '
" : ">";
+ return out;
+ }
+ text(text) {
+ return text;
+ }
+ };
+ }
+});
+
+// node_modules/marked/src/TextRenderer.js
+var require_TextRenderer = __commonJS({
+ "node_modules/marked/src/TextRenderer.js"(exports2, module2) {
+ module2.exports = class TextRenderer {
+ strong(text) {
+ return text;
+ }
+ em(text) {
+ return text;
+ }
+ codespan(text) {
+ return text;
+ }
+ del(text) {
+ return text;
+ }
+ html(text) {
+ return text;
+ }
+ text(text) {
+ return text;
+ }
+ link(href, title, text) {
+ return "" + text;
+ }
+ image(href, title, text) {
+ return "" + text;
+ }
+ br() {
+ return "";
+ }
+ };
+ }
+});
+
+// node_modules/marked/src/Slugger.js
+var require_Slugger = __commonJS({
+ "node_modules/marked/src/Slugger.js"(exports2, module2) {
+ module2.exports = class Slugger {
+ constructor() {
+ this.seen = {};
+ }
+ serialize(value) {
+ return value.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig, "").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, "").replace(/\s/g, "-");
+ }
+ getNextSafeSlug(originalSlug, isDryRun) {
+ let slug = originalSlug;
+ let occurenceAccumulator = 0;
+ if (this.seen.hasOwnProperty(slug)) {
+ occurenceAccumulator = this.seen[originalSlug];
+ do {
+ occurenceAccumulator++;
+ slug = originalSlug + "-" + occurenceAccumulator;
+ } while (this.seen.hasOwnProperty(slug));
+ }
+ if (!isDryRun) {
+ this.seen[originalSlug] = occurenceAccumulator;
+ this.seen[slug] = 0;
+ }
+ return slug;
+ }
+ slug(value, options = {}) {
+ const slug = this.serialize(value);
+ return this.getNextSafeSlug(slug, options.dryrun);
+ }
+ };
+ }
+});
+
+// node_modules/marked/src/Parser.js
+var require_Parser = __commonJS({
+ "node_modules/marked/src/Parser.js"(exports2, module2) {
+ var Renderer2 = require_Renderer();
+ var TextRenderer = require_TextRenderer();
+ var Slugger = require_Slugger();
+ var { defaults: defaults2 } = require_defaults();
+ var {
+ unescape: unescape2
+ } = require_helpers();
+ module2.exports = class Parser {
+ constructor(options) {
+ this.options = options || defaults2;
+ this.options.renderer = this.options.renderer || new Renderer2();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+ this.textRenderer = new TextRenderer();
+ this.slugger = new Slugger();
+ }
+ static parse(tokens, options) {
+ const parser2 = new Parser(options);
+ return parser2.parse(tokens);
+ }
+ static parseInline(tokens, options) {
+ const parser2 = new Parser(options);
+ return parser2.parseInline(tokens);
+ }
+ parse(tokens, top = true) {
+ let out = "", i, j, k, l2, l3, row, cell, header, body, token, ordered, start, loose, itemBody, item, checked, task, checkbox, ret;
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call(this, token);
+ if (ret !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(token.type)) {
+ out += ret || "";
+ continue;
+ }
+ }
+ switch (token.type) {
+ case "space": {
+ continue;
+ }
+ case "hr": {
+ out += this.renderer.hr();
+ continue;
+ }
+ case "heading": {
+ out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape2(this.parseInline(token.tokens, this.textRenderer)), this.slugger);
+ continue;
+ }
+ case "code": {
+ out += this.renderer.code(token.text, token.lang, token.escaped);
+ continue;
+ }
+ case "table": {
+ header = "";
+ cell = "";
+ l2 = token.header.length;
+ for (j = 0; j < l2; j++) {
+ cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), { header: true, align: token.align[j] });
+ }
+ header += this.renderer.tablerow(cell);
+ body = "";
+ l2 = token.cells.length;
+ for (j = 0; j < l2; j++) {
+ row = token.tokens.cells[j];
+ cell = "";
+ l3 = row.length;
+ for (k = 0; k < l3; k++) {
+ cell += this.renderer.tablecell(this.parseInline(row[k]), { header: false, align: token.align[k] });
+ }
+ body += this.renderer.tablerow(cell);
+ }
+ out += this.renderer.table(header, body);
+ continue;
+ }
+ case "blockquote": {
+ body = this.parse(token.tokens);
+ out += this.renderer.blockquote(body);
+ continue;
+ }
+ case "list": {
+ ordered = token.ordered;
+ start = token.start;
+ loose = token.loose;
+ l2 = token.items.length;
+ body = "";
+ for (j = 0; j < l2; j++) {
+ item = token.items[j];
+ checked = item.checked;
+ task = item.task;
+ itemBody = "";
+ if (item.task) {
+ checkbox = this.renderer.checkbox(checked);
+ if (loose) {
+ if (item.tokens.length > 0 && item.tokens[0].type === "text") {
+ item.tokens[0].text = checkbox + " " + item.tokens[0].text;
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") {
+ item.tokens[0].tokens[0].text = checkbox + " " + item.tokens[0].tokens[0].text;
+ }
+ } else {
+ item.tokens.unshift({
+ type: "text",
+ text: checkbox
+ });
+ }
+ } else {
+ itemBody += checkbox;
+ }
+ }
+ itemBody += this.parse(item.tokens, loose);
+ body += this.renderer.listitem(itemBody, task, checked);
+ }
+ out += this.renderer.list(body, ordered, start);
+ continue;
+ }
+ case "html": {
+ out += this.renderer.html(token.text);
+ continue;
+ }
+ case "paragraph": {
+ out += this.renderer.paragraph(this.parseInline(token.tokens));
+ continue;
+ }
+ case "text": {
+ body = token.tokens ? this.parseInline(token.tokens) : token.text;
+ while (i + 1 < l && tokens[i + 1].type === "text") {
+ token = tokens[++i];
+ body += "\n" + (token.tokens ? this.parseInline(token.tokens) : token.text);
+ }
+ out += top ? this.renderer.paragraph(body) : body;
+ continue;
+ }
+ default: {
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ }
+ parseInline(tokens, renderer) {
+ renderer = renderer || this.renderer;
+ let out = "", i, token, ret;
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call(this, token);
+ if (ret !== false || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(token.type)) {
+ out += ret || "";
+ continue;
+ }
+ }
+ switch (token.type) {
+ case "escape": {
+ out += renderer.text(token.text);
+ break;
+ }
+ case "html": {
+ out += renderer.html(token.text);
+ break;
+ }
+ case "link": {
+ out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case "image": {
+ out += renderer.image(token.href, token.title, token.text);
+ break;
+ }
+ case "strong": {
+ out += renderer.strong(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case "em": {
+ out += renderer.em(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case "codespan": {
+ out += renderer.codespan(token.text);
+ break;
+ }
+ case "br": {
+ out += renderer.br();
+ break;
+ }
+ case "del": {
+ out += renderer.del(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case "text": {
+ out += renderer.text(token.text);
+ break;
+ }
+ default: {
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ }
+ };
+ }
+});
+
+// node_modules/marked/src/marked.js
+var require_marked = __commonJS({
+ "node_modules/marked/src/marked.js"(exports2, module2) {
+ var Lexer = require_Lexer();
+ var Parser = require_Parser();
+ var Tokenizer = require_Tokenizer();
+ var Renderer2 = require_Renderer();
+ var TextRenderer = require_TextRenderer();
+ var Slugger = require_Slugger();
+ var {
+ merge,
+ checkSanitizeDeprecation,
+ escape
+ } = require_helpers();
+ var {
+ getDefaults,
+ changeDefaults,
+ defaults: defaults2
+ } = require_defaults();
+ function marked2(src, opt, callback) {
+ if (typeof src === "undefined" || src === null) {
+ throw new Error("marked(): input parameter is undefined or null");
+ }
+ if (typeof src !== "string") {
+ throw new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected");
+ }
+ if (typeof opt === "function") {
+ callback = opt;
+ opt = null;
+ }
+ opt = merge({}, marked2.defaults, opt || {});
+ checkSanitizeDeprecation(opt);
+ if (callback) {
+ const highlight = opt.highlight;
+ let tokens;
+ try {
+ tokens = Lexer.lex(src, opt);
+ } catch (e) {
+ return callback(e);
+ }
+ const done = function(err) {
+ let out;
+ if (!err) {
+ try {
+ if (opt.walkTokens) {
+ marked2.walkTokens(tokens, opt.walkTokens);
+ }
+ out = Parser.parse(tokens, opt);
+ } catch (e) {
+ err = e;
+ }
+ }
+ opt.highlight = highlight;
+ return err ? callback(err) : callback(null, out);
+ };
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+ delete opt.highlight;
+ if (!tokens.length)
+ return done();
+ let pending = 0;
+ marked2.walkTokens(tokens, function(token) {
+ if (token.type === "code") {
+ pending++;
+ setTimeout(() => {
+ highlight(token.text, token.lang, function(err, code) {
+ if (err) {
+ return done(err);
+ }
+ if (code != null && code !== token.text) {
+ token.text = code;
+ token.escaped = true;
+ }
+ pending--;
+ if (pending === 0) {
+ done();
+ }
+ });
+ }, 0);
+ }
+ });
+ if (pending === 0) {
+ done();
+ }
+ return;
+ }
+ try {
+ const tokens = Lexer.lex(src, opt);
+ if (opt.walkTokens) {
+ marked2.walkTokens(tokens, opt.walkTokens);
+ }
+ return Parser.parse(tokens, opt);
+ } catch (e) {
+ e.message += "\nPlease report this to https://github.com/markedjs/marked.";
+ if (opt.silent) {
+ return "An error occurred:
" + escape(e.message + "", true) + "
";
+ }
+ throw e;
+ }
+ }
+ marked2.options = marked2.setOptions = function(opt) {
+ merge(marked2.defaults, opt);
+ changeDefaults(marked2.defaults);
+ return marked2;
+ };
+ marked2.getDefaults = getDefaults;
+ marked2.defaults = defaults2;
+ marked2.use = function(...args) {
+ const opts = merge({}, ...args);
+ const extensions = marked2.defaults.extensions || { renderers: {}, childTokens: {} };
+ let hasExtensions;
+ args.forEach((pack) => {
+ if (pack.extensions) {
+ hasExtensions = true;
+ pack.extensions.forEach((ext) => {
+ if (!ext.name) {
+ throw new Error("extension name required");
+ }
+ if (ext.renderer) {
+ const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;
+ if (prevRenderer) {
+ extensions.renderers[ext.name] = function(...args2) {
+ let ret = ext.renderer.apply(this, args2);
+ if (ret === false) {
+ ret = prevRenderer.apply(this, args2);
+ }
+ return ret;
+ };
+ } else {
+ extensions.renderers[ext.name] = ext.renderer;
+ }
+ }
+ if (ext.tokenizer) {
+ if (!ext.level || ext.level !== "block" && ext.level !== "inline") {
+ throw new Error("extension level must be 'block' or 'inline'");
+ }
+ if (extensions[ext.level]) {
+ extensions[ext.level].unshift(ext.tokenizer);
+ } else {
+ extensions[ext.level] = [ext.tokenizer];
+ }
+ if (ext.start) {
+ if (ext.level === "block") {
+ if (extensions.startBlock) {
+ extensions.startBlock.push(ext.start);
+ } else {
+ extensions.startBlock = [ext.start];
+ }
+ } else if (ext.level === "inline") {
+ if (extensions.startInline) {
+ extensions.startInline.push(ext.start);
+ } else {
+ extensions.startInline = [ext.start];
+ }
+ }
+ }
+ }
+ if (ext.childTokens) {
+ extensions.childTokens[ext.name] = ext.childTokens;
+ }
+ });
+ }
+ if (pack.renderer) {
+ const renderer = marked2.defaults.renderer || new Renderer2();
+ for (const prop in pack.renderer) {
+ const prevRenderer = renderer[prop];
+ renderer[prop] = (...args2) => {
+ let ret = pack.renderer[prop].apply(renderer, args2);
+ if (ret === false) {
+ ret = prevRenderer.apply(renderer, args2);
+ }
+ return ret;
+ };
+ }
+ opts.renderer = renderer;
+ }
+ if (pack.tokenizer) {
+ const tokenizer = marked2.defaults.tokenizer || new Tokenizer();
+ for (const prop in pack.tokenizer) {
+ const prevTokenizer = tokenizer[prop];
+ tokenizer[prop] = (...args2) => {
+ let ret = pack.tokenizer[prop].apply(tokenizer, args2);
+ if (ret === false) {
+ ret = prevTokenizer.apply(tokenizer, args2);
+ }
+ return ret;
+ };
+ }
+ opts.tokenizer = tokenizer;
+ }
+ if (pack.walkTokens) {
+ const walkTokens = marked2.defaults.walkTokens;
+ opts.walkTokens = (token) => {
+ pack.walkTokens.call(this, token);
+ if (walkTokens) {
+ walkTokens(token);
+ }
+ };
+ }
+ if (hasExtensions) {
+ opts.extensions = extensions;
+ }
+ marked2.setOptions(opts);
+ });
+ };
+ marked2.walkTokens = function(tokens, callback) {
+ for (const token of tokens) {
+ callback(token);
+ switch (token.type) {
+ case "table": {
+ for (const cell of token.tokens.header) {
+ marked2.walkTokens(cell, callback);
+ }
+ for (const row of token.tokens.cells) {
+ for (const cell of row) {
+ marked2.walkTokens(cell, callback);
+ }
+ }
+ break;
+ }
+ case "list": {
+ marked2.walkTokens(token.items, callback);
+ break;
+ }
+ default: {
+ if (marked2.defaults.extensions && marked2.defaults.extensions.childTokens && marked2.defaults.extensions.childTokens[token.type]) {
+ marked2.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {
+ marked2.walkTokens(token[childTokens], callback);
+ });
+ } else if (token.tokens) {
+ marked2.walkTokens(token.tokens, callback);
+ }
+ }
+ }
+ }
+ };
+ marked2.parseInline = function(src, opt) {
+ if (typeof src === "undefined" || src === null) {
+ throw new Error("marked.parseInline(): input parameter is undefined or null");
+ }
+ if (typeof src !== "string") {
+ throw new Error("marked.parseInline(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected");
+ }
+ opt = merge({}, marked2.defaults, opt || {});
+ checkSanitizeDeprecation(opt);
+ try {
+ const tokens = Lexer.lexInline(src, opt);
+ if (opt.walkTokens) {
+ marked2.walkTokens(tokens, opt.walkTokens);
+ }
+ return Parser.parseInline(tokens, opt);
+ } catch (e) {
+ e.message += "\nPlease report this to https://github.com/markedjs/marked.";
+ if (opt.silent) {
+ return "An error occurred:
" + escape(e.message + "", true) + "
";
+ }
+ throw e;
+ }
+ };
+ marked2.Parser = Parser;
+ marked2.parser = Parser.parse;
+ marked2.Renderer = Renderer2;
+ marked2.TextRenderer = TextRenderer;
+ marked2.Lexer = Lexer;
+ marked2.lexer = Lexer.lex;
+ marked2.Tokenizer = Tokenizer;
+ marked2.Slugger = Slugger;
+ marked2.parse = marked2;
+ module2.exports = marked2;
+ }
+});
+
+// node_modules/colors/lib/styles.js
+var require_styles = __commonJS({
+ "node_modules/colors/lib/styles.js"(exports2, module2) {
+ var styles3 = {};
+ module2["exports"] = styles3;
+ var codes = {
+ reset: [0, 0],
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29],
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+ grey: [90, 39],
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+ blackBG: [40, 49],
+ redBG: [41, 49],
+ greenBG: [42, 49],
+ yellowBG: [43, 49],
+ blueBG: [44, 49],
+ magentaBG: [45, 49],
+ cyanBG: [46, 49],
+ whiteBG: [47, 49]
+ };
+ Object.keys(codes).forEach(function(key) {
+ var val = codes[key];
+ var style2 = styles3[key] = [];
+ style2.open = "[" + val[0] + "m";
+ style2.close = "[" + val[1] + "m";
+ });
+ }
+});
+
+// node_modules/colors/lib/system/supports-colors.js
+var require_supports_colors = __commonJS({
+ "node_modules/colors/lib/system/supports-colors.js"(exports2, module2) {
+ var argv = process.argv;
+ module2.exports = function() {
+ if (argv.indexOf("--no-color") !== -1 || argv.indexOf("--color=false") !== -1) {
+ return false;
+ }
+ if (argv.indexOf("--color") !== -1 || argv.indexOf("--color=true") !== -1 || argv.indexOf("--color=always") !== -1) {
+ return true;
+ }
+ if (process.stdout && !process.stdout.isTTY) {
+ return false;
+ }
+ if (process.platform === "win32") {
+ return true;
+ }
+ if ("COLORTERM" in process.env) {
+ return true;
+ }
+ if (process.env.TERM === "dumb") {
+ return false;
+ }
+ if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
+ return true;
+ }
+ return false;
+ }();
+ }
+});
+
+// node_modules/colors/lib/custom/trap.js
+var require_trap = __commonJS({
+ "node_modules/colors/lib/custom/trap.js"(exports2, module2) {
+ module2["exports"] = function runTheTrap(text, options) {
+ var result = "";
+ text = text || "Run the trap, drop the bass";
+ text = text.split("");
+ var trap = {
+ a: ["@", "\u0104", "\u023A", "\u0245", "\u0394", "\u039B", "\u0414"],
+ b: ["\xDF", "\u0181", "\u0243", "\u026E", "\u03B2", "\u0E3F"],
+ c: ["\xA9", "\u023B", "\u03FE"],
+ d: ["\xD0", "\u018A", "\u0500", "\u0501", "\u0502", "\u0503"],
+ e: ["\xCB", "\u0115", "\u018E", "\u0258", "\u03A3", "\u03BE", "\u04BC", "\u0A6C"],
+ f: ["\u04FA"],
+ g: ["\u0262"],
+ h: ["\u0126", "\u0195", "\u04A2", "\u04BA", "\u04C7", "\u050A"],
+ i: ["\u0F0F"],
+ j: ["\u0134"],
+ k: ["\u0138", "\u04A0", "\u04C3", "\u051E"],
+ l: ["\u0139"],
+ m: ["\u028D", "\u04CD", "\u04CE", "\u0520", "\u0521", "\u0D69"],
+ n: ["\xD1", "\u014B", "\u019D", "\u0376", "\u03A0", "\u048A"],
+ o: ["\xD8", "\xF5", "\xF8", "\u01FE", "\u0298", "\u047A", "\u05DD", "\u06DD", "\u0E4F"],
+ p: ["\u01F7", "\u048E"],
+ q: ["\u09CD"],
+ r: ["\xAE", "\u01A6", "\u0210", "\u024C", "\u0280", "\u042F"],
+ s: ["\xA7", "\u03DE", "\u03DF", "\u03E8"],
+ t: ["\u0141", "\u0166", "\u0373"],
+ u: ["\u01B1", "\u054D"],
+ v: ["\u05D8"],
+ w: ["\u0428", "\u0460", "\u047C", "\u0D70"],
+ x: ["\u04B2", "\u04FE", "\u04FC", "\u04FD"],
+ y: ["\xA5", "\u04B0", "\u04CB"],
+ z: ["\u01B5", "\u0240"]
+ };
+ text.forEach(function(c) {
+ c = c.toLowerCase();
+ var chars = trap[c] || [" "];
+ var rand = Math.floor(Math.random() * chars.length);
+ if (typeof trap[c] !== "undefined") {
+ result += trap[c][rand];
+ } else {
+ result += c;
+ }
+ });
+ return result;
+ };
+ }
+});
+
+// node_modules/colors/lib/custom/zalgo.js
+var require_zalgo = __commonJS({
+ "node_modules/colors/lib/custom/zalgo.js"(exports2, module2) {
+ module2["exports"] = function zalgo(text, options) {
+ text = text || " he is here ";
+ var soul = {
+ "up": [
+ "\u030D",
+ "\u030E",
+ "\u0304",
+ "\u0305",
+ "\u033F",
+ "\u0311",
+ "\u0306",
+ "\u0310",
+ "\u0352",
+ "\u0357",
+ "\u0351",
+ "\u0307",
+ "\u0308",
+ "\u030A",
+ "\u0342",
+ "\u0313",
+ "\u0308",
+ "\u034A",
+ "\u034B",
+ "\u034C",
+ "\u0303",
+ "\u0302",
+ "\u030C",
+ "\u0350",
+ "\u0300",
+ "\u0301",
+ "\u030B",
+ "\u030F",
+ "\u0312",
+ "\u0313",
+ "\u0314",
+ "\u033D",
+ "\u0309",
+ "\u0363",
+ "\u0364",
+ "\u0365",
+ "\u0366",
+ "\u0367",
+ "\u0368",
+ "\u0369",
+ "\u036A",
+ "\u036B",
+ "\u036C",
+ "\u036D",
+ "\u036E",
+ "\u036F",
+ "\u033E",
+ "\u035B",
+ "\u0346",
+ "\u031A"
+ ],
+ "down": [
+ "\u0316",
+ "\u0317",
+ "\u0318",
+ "\u0319",
+ "\u031C",
+ "\u031D",
+ "\u031E",
+ "\u031F",
+ "\u0320",
+ "\u0324",
+ "\u0325",
+ "\u0326",
+ "\u0329",
+ "\u032A",
+ "\u032B",
+ "\u032C",
+ "\u032D",
+ "\u032E",
+ "\u032F",
+ "\u0330",
+ "\u0331",
+ "\u0332",
+ "\u0333",
+ "\u0339",
+ "\u033A",
+ "\u033B",
+ "\u033C",
+ "\u0345",
+ "\u0347",
+ "\u0348",
+ "\u0349",
+ "\u034D",
+ "\u034E",
+ "\u0353",
+ "\u0354",
+ "\u0355",
+ "\u0356",
+ "\u0359",
+ "\u035A",
+ "\u0323"
+ ],
+ "mid": [
+ "\u0315",
+ "\u031B",
+ "\u0300",
+ "\u0301",
+ "\u0358",
+ "\u0321",
+ "\u0322",
+ "\u0327",
+ "\u0328",
+ "\u0334",
+ "\u0335",
+ "\u0336",
+ "\u035C",
+ "\u035D",
+ "\u035E",
+ "\u035F",
+ "\u0360",
+ "\u0362",
+ "\u0338",
+ "\u0337",
+ "\u0361",
+ " \u0489"
+ ]
+ }, all = [].concat(soul.up, soul.down, soul.mid), zalgo2 = {};
+ function randomNumber(range) {
+ var r = Math.floor(Math.random() * range);
+ return r;
+ }
+ function is_char(character) {
+ var bool = false;
+ all.filter(function(i) {
+ bool = i === character;
+ });
+ return bool;
+ }
+ function heComes(text2, options2) {
+ var result = "", counts, l;
+ options2 = options2 || {};
+ options2["up"] = options2["up"] || true;
+ options2["mid"] = options2["mid"] || true;
+ options2["down"] = options2["down"] || true;
+ options2["size"] = options2["size"] || "maxi";
+ text2 = text2.split("");
+ for (l in text2) {
+ if (is_char(l)) {
+ continue;
+ }
+ result = result + text2[l];
+ counts = { "up": 0, "down": 0, "mid": 0 };
+ switch (options2.size) {
+ case "mini":
+ counts.up = randomNumber(8);
+ counts.min = randomNumber(2);
+ counts.down = randomNumber(8);
+ break;
+ case "maxi":
+ counts.up = randomNumber(16) + 3;
+ counts.min = randomNumber(4) + 1;
+ counts.down = randomNumber(64) + 3;
+ break;
+ default:
+ counts.up = randomNumber(8) + 1;
+ counts.mid = randomNumber(6) / 2;
+ counts.down = randomNumber(8) + 1;
+ break;
+ }
+ var arr = ["up", "mid", "down"];
+ for (var d in arr) {
+ var index = arr[d];
+ for (var i = 0; i <= counts[index]; i++) {
+ if (options2[index]) {
+ result = result + soul[index][randomNumber(soul[index].length)];
+ }
+ }
+ }
+ }
+ return result;
+ }
+ return heComes(text);
+ };
+ }
+});
+
+// node_modules/colors/lib/maps/america.js
+var require_america = __commonJS({
+ "node_modules/colors/lib/maps/america.js"(exports2, module2) {
+ var colors = require_colors();
+ module2["exports"] = function() {
+ return function(letter, i, exploded) {
+ if (letter === " ")
+ return letter;
+ switch (i % 3) {
+ case 0:
+ return colors.red(letter);
+ case 1:
+ return colors.white(letter);
+ case 2:
+ return colors.blue(letter);
+ }
+ };
+ }();
+ }
+});
+
+// node_modules/colors/lib/maps/zebra.js
+var require_zebra = __commonJS({
+ "node_modules/colors/lib/maps/zebra.js"(exports2, module2) {
+ var colors = require_colors();
+ module2["exports"] = function(letter, i, exploded) {
+ return i % 2 === 0 ? letter : colors.inverse(letter);
+ };
+ }
+});
+
+// node_modules/colors/lib/maps/rainbow.js
+var require_rainbow = __commonJS({
+ "node_modules/colors/lib/maps/rainbow.js"(exports2, module2) {
+ var colors = require_colors();
+ module2["exports"] = function() {
+ var rainbowColors = ["red", "yellow", "green", "blue", "magenta"];
+ return function(letter, i, exploded) {
+ if (letter === " ") {
+ return letter;
+ } else {
+ return colors[rainbowColors[i++ % rainbowColors.length]](letter);
+ }
+ };
+ }();
+ }
+});
+
+// node_modules/colors/lib/maps/random.js
+var require_random = __commonJS({
+ "node_modules/colors/lib/maps/random.js"(exports2, module2) {
+ var colors = require_colors();
+ module2["exports"] = function() {
+ var available = ["underline", "inverse", "grey", "yellow", "red", "green", "blue", "white", "cyan", "magenta"];
+ return function(letter, i, exploded) {
+ return letter === " " ? letter : colors[available[Math.round(Math.random() * (available.length - 1))]](letter);
+ };
+ }();
+ }
+});
+
+// node_modules/colors/lib/colors.js
+var require_colors = __commonJS({
+ "node_modules/colors/lib/colors.js"(exports2, module2) {
+ var colors = {};
+ module2["exports"] = colors;
+ colors.themes = {};
+ var ansiStyles = colors.styles = require_styles();
+ var defineProps = Object.defineProperties;
+ colors.supportsColor = require_supports_colors();
+ if (typeof colors.enabled === "undefined") {
+ colors.enabled = colors.supportsColor;
+ }
+ colors.stripColors = colors.strip = function(str) {
+ return ("" + str).replace(/\x1B\[\d+m/g, "");
+ };
+ var stylize = colors.stylize = function stylize2(str, style2) {
+ return ansiStyles[style2].open + str + ansiStyles[style2].close;
+ };
+ var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+ var escapeStringRegexp = function(str) {
+ if (typeof str !== "string") {
+ throw new TypeError("Expected a string");
+ }
+ return str.replace(matchOperatorsRe, "\\$&");
+ };
+ function build(_styles) {
+ var builder = function builder2() {
+ return applyStyle.apply(builder2, arguments);
+ };
+ builder._styles = _styles;
+ builder.__proto__ = proto;
+ return builder;
+ }
+ var styles3 = function() {
+ var ret = {};
+ ansiStyles.grey = ansiStyles.gray;
+ Object.keys(ansiStyles).forEach(function(key) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), "g");
+ ret[key] = {
+ get: function() {
+ return build(this._styles.concat(key));
+ }
+ };
+ });
+ return ret;
+ }();
+ var proto = defineProps(function colors2() {
+ }, styles3);
+ function applyStyle() {
+ var args = arguments;
+ var argsLen = args.length;
+ var str = argsLen !== 0 && String(arguments[0]);
+ if (argsLen > 1) {
+ for (var a = 1; a < argsLen; a++) {
+ str += " " + args[a];
+ }
+ }
+ if (!colors.enabled || !str) {
+ return str;
+ }
+ var nestedStyles = this._styles;
+ var i = nestedStyles.length;
+ while (i--) {
+ var code = ansiStyles[nestedStyles[i]];
+ str = code.open + str.replace(code.closeRe, code.open) + code.close;
+ }
+ return str;
+ }
+ function applyTheme(theme) {
+ for (var style2 in theme) {
+ (function(style3) {
+ colors[style3] = function(str) {
+ return colors[theme[style3]](str);
+ };
+ })(style2);
+ }
+ }
+ colors.setTheme = function(theme) {
+ if (typeof theme === "string") {
+ try {
+ colors.themes[theme] = require(theme);
+ applyTheme(colors.themes[theme]);
+ return colors.themes[theme];
+ } catch (err) {
+ console.log(err);
+ return err;
+ }
+ } else {
+ applyTheme(theme);
+ }
+ };
+ function init() {
+ var ret = {};
+ Object.keys(styles3).forEach(function(name2) {
+ ret[name2] = {
+ get: function() {
+ return build([name2]);
+ }
+ };
+ });
+ return ret;
+ }
+ var sequencer = function sequencer2(map2, str) {
+ var exploded = str.split(""), i = 0;
+ exploded = exploded.map(map2);
+ return exploded.join("");
+ };
+ colors.trap = require_trap();
+ colors.zalgo = require_zalgo();
+ colors.maps = {};
+ colors.maps.america = require_america();
+ colors.maps.zebra = require_zebra();
+ colors.maps.rainbow = require_rainbow();
+ colors.maps.random = require_random();
+ for (var map in colors.maps) {
+ (function(map2) {
+ colors[map2] = function(str) {
+ return sequencer(colors.maps[map2], str);
+ };
+ })(map);
+ }
+ defineProps(colors, init());
+ }
+});
+
+// node_modules/colors/safe.js
+var require_safe = __commonJS({
+ "node_modules/colors/safe.js"(exports2, module2) {
+ var colors = require_colors();
+ module2["exports"] = colors;
+ }
+});
+
+// node_modules/cli-table/lib/utils.js
+var require_utils2 = __commonJS({
+ "node_modules/cli-table/lib/utils.js"(exports2) {
+ exports2.repeat = function(str, times) {
+ return Array(times + 1).join(str);
+ };
+ exports2.pad = function(str, len, pad2, dir) {
+ if (len + 1 >= str.length)
+ switch (dir) {
+ case "left":
+ str = Array(len + 1 - str.length).join(pad2) + str;
+ break;
+ case "both":
+ var right = Math.ceil((padlen = len - str.length) / 2);
+ var left = padlen - right;
+ str = Array(left + 1).join(pad2) + str + Array(right + 1).join(pad2);
+ break;
+ default:
+ str = str + Array(len + 1 - str.length).join(pad2);
+ }
+ ;
+ return str;
+ };
+ exports2.truncate = function(str, length, chr) {
+ chr = chr || "\u2026";
+ return str.length >= length ? str.substr(0, length - chr.length) + chr : str;
+ };
+ function options(defaults2, opts) {
+ for (var p in opts) {
+ if (p === "__proto__" || p === "constructor" || p === "prototype") {
+ continue;
+ }
+ if (opts[p] && opts[p].constructor && opts[p].constructor === Object) {
+ defaults2[p] = defaults2[p] || {};
+ options(defaults2[p], opts[p]);
+ } else {
+ defaults2[p] = opts[p];
+ }
+ }
+ return defaults2;
+ }
+ exports2.options = options;
+ exports2.strlen = function(str) {
+ var code = /\u001b\[(?:\d*;){0,5}\d*m/g;
+ var stripped = ("" + str).replace(code, "");
+ var split = stripped.split("\n");
+ return split.reduce(function(memo, s) {
+ return s.length > memo ? s.length : memo;
+ }, 0);
+ };
+ }
+});
+
+// node_modules/cli-table/lib/index.js
+var require_lib7 = __commonJS({
+ "node_modules/cli-table/lib/index.js"(exports2, module2) {
+ var colors = require_safe();
+ var utils = require_utils2();
+ var repeat2 = utils.repeat;
+ var truncate = utils.truncate;
+ var pad2 = utils.pad;
+ function Table2(options) {
+ this.options = utils.options({
+ chars: {
+ "top": "\u2500",
+ "top-mid": "\u252C",
+ "top-left": "\u250C",
+ "top-right": "\u2510",
+ "bottom": "\u2500",
+ "bottom-mid": "\u2534",
+ "bottom-left": "\u2514",
+ "bottom-right": "\u2518",
+ "left": "\u2502",
+ "left-mid": "\u251C",
+ "mid": "\u2500",
+ "mid-mid": "\u253C",
+ "right": "\u2502",
+ "right-mid": "\u2524",
+ "middle": "\u2502"
+ },
+ truncate: "\u2026",
+ colWidths: [],
+ colAligns: [],
+ style: {
+ "padding-left": 1,
+ "padding-right": 1,
+ head: ["red"],
+ border: ["grey"],
+ compact: false
+ },
+ head: []
+ }, options);
+ }
+ Table2.prototype.__proto__ = Array.prototype;
+ Table2.prototype.__defineGetter__("width", function() {
+ var str = this.toString().split("\n");
+ if (str.length)
+ return str[0].length;
+ return 0;
+ });
+ Table2.prototype.render;
+ Table2.prototype.toString = function() {
+ var ret = "", options = this.options, style2 = options.style, head = options.head, chars = options.chars, truncater = options.truncate, colWidths = options.colWidths || new Array(this.head.length), totalWidth = 0;
+ if (!head.length && !this.length)
+ return "";
+ if (!colWidths.length) {
+ var all_rows = this.slice(0);
+ if (head.length) {
+ all_rows = all_rows.concat([head]);
+ }
+ ;
+ all_rows.forEach(function(cells) {
+ if (typeof cells === "object" && cells.length) {
+ extractColumnWidths(cells);
+ } else {
+ var header_cell = Object.keys(cells)[0], value_cell = cells[header_cell];
+ colWidths[0] = Math.max(colWidths[0] || 0, get_width(header_cell) || 0);
+ if (typeof value_cell === "object" && value_cell.length) {
+ extractColumnWidths(value_cell, 1);
+ } else {
+ colWidths[1] = Math.max(colWidths[1] || 0, get_width(value_cell) || 0);
+ }
+ }
+ });
+ }
+ ;
+ totalWidth = (colWidths.length == 1 ? colWidths[0] : colWidths.reduce(function(a, b) {
+ return a + b;
+ })) + colWidths.length + 1;
+ function extractColumnWidths(arr, offset) {
+ var offset = offset || 0;
+ arr.forEach(function(cell, i) {
+ colWidths[i + offset] = Math.max(colWidths[i + offset] || 0, get_width(cell) || 0);
+ });
+ }
+ ;
+ function get_width(obj) {
+ return typeof obj == "object" && obj.width != void 0 ? obj.width : (typeof obj == "object" ? utils.strlen(obj.text) : utils.strlen(obj)) + (style2["padding-left"] || 0) + (style2["padding-right"] || 0);
+ }
+ function line(line2, left, right, intersection) {
+ var width = 0, line2 = left + repeat2(line2, totalWidth - 2) + right;
+ colWidths.forEach(function(w, i) {
+ if (i == colWidths.length - 1)
+ return;
+ width += w + 1;
+ line2 = line2.substr(0, width) + intersection + line2.substr(width + 1);
+ });
+ return applyStyles(options.style.border, line2);
+ }
+ ;
+ function lineTop() {
+ var l2 = line(chars.top, chars["top-left"] || chars.top, chars["top-right"] || chars.top, chars["top-mid"]);
+ if (l2)
+ ret += l2 + "\n";
+ }
+ ;
+ function generateRow(items, style3) {
+ var cells = [], max_height = 0;
+ if (!Array.isArray(items) && typeof items === "object") {
+ var key = Object.keys(items)[0], value = items[key], first_cell_head = true;
+ if (Array.isArray(value)) {
+ items = value;
+ items.unshift(key);
+ } else {
+ items = [key, value];
+ }
+ }
+ items.forEach(function(item, i) {
+ var contents = item.toString().split("\n").reduce(function(memo, l2) {
+ memo.push(string2(l2, i));
+ return memo;
+ }, []);
+ var height = contents.length;
+ if (height > max_height) {
+ max_height = height;
+ }
+ ;
+ cells.push({ contents, height });
+ });
+ var lines = new Array(max_height);
+ cells.forEach(function(cell, i) {
+ cell.contents.forEach(function(line2, j2) {
+ if (!lines[j2]) {
+ lines[j2] = [];
+ }
+ ;
+ if (style3 || first_cell_head && i === 0 && options.style.head) {
+ line2 = applyStyles(options.style.head, line2);
+ }
+ lines[j2].push(line2);
+ });
+ for (var j = cell.height, l2 = max_height; j < l2; j++) {
+ if (!lines[j]) {
+ lines[j] = [];
+ }
+ ;
+ lines[j].push(string2("", i));
+ }
+ });
+ var ret2 = "";
+ lines.forEach(function(line2, index) {
+ if (ret2.length > 0) {
+ ret2 += "\n" + applyStyles(options.style.border, chars.left);
+ }
+ ret2 += line2.join(applyStyles(options.style.border, chars.middle)) + applyStyles(options.style.border, chars.right);
+ });
+ return applyStyles(options.style.border, chars.left) + ret2;
+ }
+ ;
+ function applyStyles(styles3, subject) {
+ if (!subject)
+ return "";
+ styles3.forEach(function(style3) {
+ subject = colors[style3](subject);
+ });
+ return subject;
+ }
+ ;
+ function string2(str, index) {
+ var str = String(typeof str == "object" && str.text ? str.text : str), length = utils.strlen(str), width = colWidths[index] - (style2["padding-left"] || 0) - (style2["padding-right"] || 0), align = options.colAligns[index] || "left";
+ return repeat2(" ", style2["padding-left"] || 0) + (length == width ? str : length < width ? pad2(str, width + (str.length - length), " ", align == "left" ? "right" : align == "middle" ? "both" : "left") : truncater ? truncate(str, width, truncater) : str) + repeat2(" ", style2["padding-right"] || 0);
+ }
+ ;
+ if (head.length) {
+ lineTop();
+ ret += generateRow(head, style2.head) + "\n";
+ }
+ if (this.length)
+ this.forEach(function(cells, i) {
+ if (!head.length && i == 0)
+ lineTop();
+ else {
+ if (!style2.compact || i < !!head.length ? 1 : cells.length == 0) {
+ var l2 = line(chars.mid, chars["left-mid"], chars["right-mid"], chars["mid-mid"]);
+ if (l2)
+ ret += l2 + "\n";
+ }
+ }
+ if (cells.hasOwnProperty("length") && !cells.length) {
+ return;
+ } else {
+ ret += generateRow(cells) + "\n";
+ }
+ ;
+ });
+ var l = line(chars.bottom, chars["bottom-left"] || chars.bottom, chars["bottom-right"] || chars.bottom, chars["bottom-mid"]);
+ if (l)
+ ret += l;
+ else
+ ret = ret.slice(0, -1);
+ return ret;
+ };
+ module2.exports = Table2;
+ module2.exports.version = "0.0.1";
+ }
+});
+
+// node_modules/ansi-styles/index.js
+var require_ansi_styles = __commonJS({
+ "node_modules/ansi-styles/index.js"(exports2, module2) {
+ "use strict";
+ var ANSI_BACKGROUND_OFFSET = 10;
+ var wrapAnsi256 = (offset = 0) => (code) => `[${38 + offset};5;${code}m`;
+ var wrapAnsi16m = (offset = 0) => (red, green, blue2) => `[${38 + offset};2;${red};${green};${blue2}m`;
+ function assembleStyles() {
+ const codes = new Map();
+ const styles3 = {
+ modifier: {
+ reset: [0, 0],
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ overline: [53, 55],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ blackBright: [90, 39],
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ };
+ styles3.color.gray = styles3.color.blackBright;
+ styles3.bgColor.bgGray = styles3.bgColor.bgBlackBright;
+ styles3.color.grey = styles3.color.blackBright;
+ styles3.bgColor.bgGrey = styles3.bgColor.bgBlackBright;
+ for (const [groupName, group2] of Object.entries(styles3)) {
+ for (const [styleName, style2] of Object.entries(group2)) {
+ styles3[styleName] = {
+ open: `[${style2[0]}m`,
+ close: `[${style2[1]}m`
+ };
+ group2[styleName] = styles3[styleName];
+ codes.set(style2[0], style2[1]);
+ }
+ Object.defineProperty(styles3, groupName, {
+ value: group2,
+ enumerable: false
+ });
+ }
+ Object.defineProperty(styles3, "codes", {
+ value: codes,
+ enumerable: false
+ });
+ styles3.color.close = "[39m";
+ styles3.bgColor.close = "[49m";
+ styles3.color.ansi256 = wrapAnsi256();
+ styles3.color.ansi16m = wrapAnsi16m();
+ styles3.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
+ styles3.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
+ Object.defineProperties(styles3, {
+ rgbToAnsi256: {
+ value: (red, green, blue2) => {
+ if (red === green && green === blue2) {
+ if (red < 8) {
+ return 16;
+ }
+ if (red > 248) {
+ return 231;
+ }
+ return Math.round((red - 8) / 247 * 24) + 232;
+ }
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue2 / 255 * 5);
+ },
+ enumerable: false
+ },
+ hexToRgb: {
+ value: (hex) => {
+ const matches = /(?[a-f\d]{6}|[a-f\d]{3})/i.exec(hex.toString(16));
+ if (!matches) {
+ return [0, 0, 0];
+ }
+ let { colorString } = matches.groups;
+ if (colorString.length === 3) {
+ colorString = colorString.split("").map((character) => character + character).join("");
+ }
+ const integer2 = Number.parseInt(colorString, 16);
+ return [
+ integer2 >> 16 & 255,
+ integer2 >> 8 & 255,
+ integer2 & 255
+ ];
+ },
+ enumerable: false
+ },
+ hexToAnsi256: {
+ value: (hex) => styles3.rgbToAnsi256(...styles3.hexToRgb(hex)),
+ enumerable: false
+ }
+ });
+ return styles3;
+ }
+ Object.defineProperty(module2, "exports", {
+ enumerable: true,
+ get: assembleStyles
+ });
+ }
+});
+
+// src/markdown/styles.ts
+function gray(str) {
+ return `${import_ansi_styles.default.gray.open}${str}${import_ansi_styles.default.gray.close}`;
+}
+function magenta(str) {
+ return `${import_ansi_styles.default.magenta.open}${str}${import_ansi_styles.default.magenta.close}`;
+}
+function bold(str) {
+ return `${import_ansi_styles.default.bold.open}${str}${import_ansi_styles.default.bold.close}`;
+}
+function underline(str) {
+ return `${import_ansi_styles.default.underline.open}${str}${import_ansi_styles.default.underline.close}`;
+}
+function strikethrough(str) {
+ return `${import_ansi_styles.default.strikethrough.open}${str}${import_ansi_styles.default.strikethrough.close}`;
+}
+function italic(str) {
+ return `${import_ansi_styles.default.italic.open}${str}${import_ansi_styles.default.italic.close}`;
+}
+function yellow(str) {
+ return `${import_ansi_styles.default.yellow.open}${str}${import_ansi_styles.default.yellow.close}`;
+}
+function blue(str) {
+ return `${import_ansi_styles.default.blue.open}${str}${import_ansi_styles.default.blue.close}`;
+}
+var import_ansi_styles;
+var init_styles = __esm({
+ "src/markdown/styles.ts"() {
+ import_ansi_styles = __toModule(require_ansi_styles());
+ }
+});
+
+// src/markdown/renderer.ts
+function fixHardReturn(text, reflow) {
+ return reflow ? text.replace(HARD_RETURN, /\n/g) : text;
+}
+function sanitizeTab(tab, fallbackTab) {
+ if (typeof tab === "number") {
+ return new Array(tab + 1).join(" ");
+ } else if (typeof tab === "string" && isAllowedTabString(tab)) {
+ return tab;
+ } else {
+ return new Array(fallbackTab + 1).join(" ");
+ }
+}
+function isAllowedTabString(str) {
+ return TAB_ALLOWED_CHARACTERS.some(function(char) {
+ return str.match("^(" + char + ")+$");
+ });
+}
+function indentLines(indent, text) {
+ return text.replace(/(^|\n)(.+)/g, "$1" + indent + "$2");
+}
+function indentify(indent, text) {
+ if (!text)
+ return text;
+ return indent + text.split("\n").join("\n" + indent);
+}
+function fixNestedLists(body, indent) {
+ let regex = new RegExp("(\\S(?: | )?)((?:" + indent + ")+)(" + POINT_REGEX + "(?:.*)+)$", "gm");
+ return body.replace(regex, "$1\n" + indent + "$2$3");
+}
+function toSpaces(str) {
+ return " ".repeat(str.length);
+}
+function bulletPointLine(indent, line) {
+ return isPointedLine(line, indent) ? line : toSpaces(BULLET_POINT) + line;
+}
+function bulletPointLines(lines, indent) {
+ let transform = bulletPointLine.bind(null, indent);
+ return lines.split("\n").filter(identity).map(transform).join("\n");
+}
+function numberedLine(indent, line, num) {
+ return isPointedLine(line, indent) ? {
+ num: num + 1,
+ line: line.replace(BULLET_POINT, numberedPoint(num + 1))
+ } : {
+ num,
+ line: toSpaces(numberedPoint(num)) + line
+ };
+}
+function numberedLines(lines, indent) {
+ let transform = numberedLine.bind(null, indent);
+ let num = 0;
+ return lines.split("\n").filter(identity).map((line) => {
+ const numbered = transform(line, num);
+ num = numbered.num;
+ return numbered.line;
+ }).join("\n");
+}
+function list(body, ordered, indent) {
+ body = body.trim();
+ body = ordered ? numberedLines(body, indent) : bulletPointLines(body, indent);
+ return body;
+}
+function section(text) {
+ return text + "\n\n";
+}
+function undoColon(str) {
+ return str.replace(COLON_REPLACER_REGEXP, ":");
+}
+function generateTableRow(text, escape = null) {
+ if (!text)
+ return [];
+ escape = escape || identity;
+ let lines = escape(text).split("\n");
+ let data = [];
+ lines.forEach(function(line) {
+ if (!line)
+ return;
+ let parsed = line.replace(TABLE_ROW_WRAP_REGEXP, "").split(TABLE_CELL_SPLIT);
+ data.push(parsed.splice(0, parsed.length - 1));
+ });
+ return data;
+}
+function escapeRegExp(str) {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+}
+function unescapeEntities(html) {
+ return html.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'");
+}
+function identity(str) {
+ return str;
+}
+var import_cli_table, logger3, TABLE_CELL_SPLIT, TABLE_ROW_WRAP, TABLE_ROW_WRAP_REGEXP, COLON_REPLACER, COLON_REPLACER_REGEXP, TAB_ALLOWED_CHARACTERS, HARD_RETURN, defaultOptions, BULLET_POINT_REGEX, NUMBERED_POINT_REGEX, POINT_REGEX, isPointedLine, BULLET_POINT, numberedPoint, links, Renderer, renderer_default;
+var init_renderer = __esm({
+ "src/markdown/renderer.ts"() {
+ import_cli_table = __toModule(require_lib7());
+ init_styles();
+ logger3 = require_logger2()("markdown-renderer");
+ TABLE_CELL_SPLIT = "^*||*^";
+ TABLE_ROW_WRAP = "*|*|*|*";
+ TABLE_ROW_WRAP_REGEXP = new RegExp(escapeRegExp(TABLE_ROW_WRAP), "g");
+ COLON_REPLACER = "*#COLON|*";
+ COLON_REPLACER_REGEXP = new RegExp(escapeRegExp(COLON_REPLACER), "g");
+ TAB_ALLOWED_CHARACTERS = [" "];
+ HARD_RETURN = "\r";
+ defaultOptions = {
+ code: identity,
+ blockquote: identity,
+ html: gray,
+ heading: magenta,
+ firstHeading: magenta,
+ hr: identity,
+ listitem: identity,
+ list,
+ table: identity,
+ paragraph: identity,
+ strong: bold,
+ em: italic,
+ codespan: yellow,
+ del: strikethrough,
+ link: underline,
+ href: underline,
+ text: identity,
+ unescape: true,
+ emoji: false,
+ width: 80,
+ showSectionPrefix: true,
+ tab: 2,
+ tableOptions: {}
+ };
+ BULLET_POINT_REGEX = "\\*";
+ NUMBERED_POINT_REGEX = "\\d+\\.";
+ POINT_REGEX = "(?:" + [BULLET_POINT_REGEX, NUMBERED_POINT_REGEX].join("|") + ")";
+ isPointedLine = function(line, indent) {
+ return line.match("^(?:" + indent + ")*" + POINT_REGEX);
+ };
+ BULLET_POINT = "* ";
+ numberedPoint = function(n) {
+ return n + ". ";
+ };
+ links = new Map();
+ Renderer = class {
+ constructor(options = {}, highlightOptions = {}) {
+ this.options = options;
+ this.highlightOptions = highlightOptions;
+ this.o = Object.assign({}, defaultOptions, options);
+ this.tab = sanitizeTab(this.o.tab, defaultOptions.tab);
+ this.tableSettings = this.o.tableOptions;
+ this.unescape = this.o.unescape ? unescapeEntities : identity;
+ this.highlightOptions = highlightOptions || {};
+ this.transform = this.compose(undoColon, this.unescape);
+ }
+ textLength(str) {
+ return str.replace(/\u001b\[(?:\d{1,3})(?:;\d{1,3})*m/g, "").length;
+ }
+ text(t) {
+ return this.o.text(t);
+ }
+ code(code, lang, _escaped) {
+ return "``` " + lang + "\n" + code + "\n```\n";
+ }
+ blockquote(quote) {
+ return section(this.o.blockquote(indentify(this.tab, quote.trim())));
+ }
+ html(html) {
+ return this.o.html(html);
+ }
+ heading(text, level, _raw) {
+ text = this.transform(text);
+ let prefix = this.o.showSectionPrefix ? new Array(level + 1).join("#") + " " : "";
+ text = prefix + text;
+ return section(level === 1 ? this.o.firstHeading(text) : this.o.heading(text));
+ }
+ hr() {
+ return `---
+
+`;
+ }
+ list(body, ordered) {
+ body = this.o.list(body, ordered, this.tab);
+ return section(fixNestedLists(indentLines(this.tab, body), this.tab));
+ }
+ listitem(text) {
+ let transform = this.compose(this.o.listitem, this.transform);
+ let isNested = text.indexOf("\n") !== -1;
+ if (isNested)
+ text = text.trim();
+ return "\n" + BULLET_POINT + transform(text);
+ }
+ checkbox(checked) {
+ return "[" + (checked ? "X" : " ") + "] ";
+ }
+ paragraph(text) {
+ let transform = this.compose(this.o.paragraph, this.transform);
+ text = transform(text);
+ return section(text);
+ }
+ table(header, body) {
+ let table = new import_cli_table.default(Object.assign({}, {
+ head: generateTableRow(header)[0]
+ }, this.tableSettings));
+ generateTableRow(body, this.transform).forEach(function(row) {
+ table.push(row);
+ });
+ return section(this.o.table(table.toString()));
+ }
+ tablerow(content) {
+ return TABLE_ROW_WRAP + content + TABLE_ROW_WRAP + "\n";
+ }
+ tablecell(content, _flags) {
+ return content + TABLE_CELL_SPLIT;
+ }
+ strong(text) {
+ return this.o.strong(text);
+ }
+ em(text) {
+ text = fixHardReturn(text, this.o.reflowText);
+ return this.o.em(text);
+ }
+ codespan(text) {
+ text = fixHardReturn(text, this.o.reflowText);
+ return this.o.codespan(text.replace(/:/g, COLON_REPLACER));
+ }
+ br() {
+ return "\n";
+ }
+ del(text) {
+ return this.o.del(text);
+ }
+ link(href, title, text) {
+ let prot;
+ if (this.options.sanitize) {
+ try {
+ prot = decodeURIComponent(unescape(href)).replace(/[^\w:]/g, "").toLowerCase();
+ } catch (e) {
+ return "";
+ }
+ if (prot.startsWith("javascript:")) {
+ return "";
+ }
+ }
+ if (text && href && text != href) {
+ links.set(text, href);
+ }
+ if (text && text != href)
+ return blue(text);
+ let out = this.o.href(href);
+ return this.o.link(out);
+ }
+ image(href, title, text) {
+ if (typeof this.o.image === "function") {
+ return this.o.image(href, title, text);
+ }
+ let out = "\n";
+ }
+ compose(...funcs) {
+ return (...args) => {
+ for (let i = funcs.length; i-- > 0; ) {
+ args = [funcs[i].apply(this, args)];
+ }
+ return args[0];
+ };
+ }
+ static getLinks() {
+ let res = [];
+ for (let [text, href] of links.entries()) {
+ res.push(`${blue(text)}: ${href}`);
+ }
+ links.clear();
+ return res;
+ }
+ };
+ renderer_default = Renderer;
+ }
+});
+
+// src/util/string.ts
+function rangeParts(text, range) {
+ let { start, end } = range;
+ let lines = text.split(/\r?\n/);
+ let before = "";
+ let after = "";
+ let len = lines.length;
+ for (let i = 0; i < len; i++) {
+ let curr = lines[i];
+ if (i < start.line) {
+ before += curr + "\n";
+ continue;
+ }
+ if (i > end.line) {
+ after += curr + (i == len - 1 ? "" : "\n");
+ continue;
+ }
+ if (i == start.line) {
+ before += curr.slice(0, start.character);
+ }
+ if (i == end.line) {
+ after += curr.slice(end.character) + (i == len - 1 ? "" : "\n");
+ }
+ }
+ return [before, after];
+}
+function byteLength(str) {
+ return Buffer.byteLength(str);
+}
+function upperFirst(str) {
+ return str ? str[0].toUpperCase() + str.slice(1) : "";
+}
+function byteIndex(content, index) {
+ let s = content.slice(0, index);
+ return Buffer.byteLength(s);
+}
+function characterIndex(content, byteIndex2) {
+ let buf = Buffer.from(content, "utf8");
+ return buf.slice(0, byteIndex2).toString("utf8").length;
+}
+function byteSlice(content, start, end) {
+ let buf = Buffer.from(content, "utf8");
+ return buf.slice(start, end).toString("utf8");
+}
+function isWord(character) {
+ let code = character.charCodeAt(0);
+ if (code > 128)
+ return false;
+ if (code == 95)
+ return true;
+ if (code >= 48 && code <= 57)
+ return true;
+ if (code >= 65 && code <= 90)
+ return true;
+ if (code >= 97 && code <= 122)
+ return true;
+ return false;
+}
+var init_string = __esm({
+ "src/util/string.ts"() {
+ }
+});
+
+// src/util/ansiparse.ts
+function parseAnsiHighlights(line, markdown = false) {
+ let items = ansiparse(line);
+ let highlights = [];
+ let newLabel = "";
+ for (let item of items) {
+ if (!item.text)
+ continue;
+ let { foreground, background, bold: bold2, italic: italic2, underline: underline2 } = item;
+ let len = byteLength(newLabel);
+ if (foreground || background || bold2 || italic2 || underline2) {
+ let span = [len, len + byteLength(item.text)];
+ let hlGroup = "";
+ if (foreground && background) {
+ hlGroup = `CocList${upperFirst(foreground)}${upperFirst(background)}`;
+ } else if (foreground) {
+ if (markdown) {
+ if (foreground == "yellow") {
+ hlGroup = "CocMarkdownCode";
+ } else if (foreground == "blue") {
+ hlGroup = "CocMarkdownLink";
+ } else if (foreground == "magenta") {
+ hlGroup = "CocMarkdownHeader";
+ } else {
+ hlGroup = `CocListFg${upperFirst(foreground)}`;
+ }
+ } else {
+ hlGroup = `CocListFg${upperFirst(foreground)}`;
+ }
+ } else if (background) {
+ hlGroup = `CocListBg${upperFirst(background)}`;
+ } else if (bold2) {
+ hlGroup = "CocBold";
+ } else if (italic2) {
+ hlGroup = "CocItalic";
+ } else if (underline2) {
+ hlGroup = "CocUnderline";
+ }
+ highlights.push({ span, hlGroup });
+ }
+ newLabel = newLabel + item.text;
+ }
+ return { line: newLabel, highlights };
+}
+function ansiparse(str) {
+ let matchingControl = null;
+ let matchingData = null;
+ let matchingText = "";
+ let ansiState = [];
+ let result = [];
+ let state = {};
+ let eraseChar;
+ eraseChar = () => {
+ let index;
+ let text;
+ if (matchingText.length) {
+ matchingText = matchingText.substr(0, matchingText.length - 1);
+ } else if (result.length) {
+ index = result.length - 1;
+ text = result[index].text;
+ if (text.length === 1) {
+ result.pop();
+ } else {
+ result[index].text = text.substr(0, text.length - 1);
+ }
+ }
+ };
+ for (let i = 0; i < str.length; i++) {
+ if (matchingControl != null) {
+ if (matchingControl == "" && str[i] == "[") {
+ if (matchingText) {
+ state.text = matchingText;
+ result.push(state);
+ state = {};
+ matchingText = "";
+ }
+ if (matchingText == "" && (str[i + 1] == "m" || str[i + 1] == "K")) {
+ if (state.foreground || state.background) {
+ state.text = "";
+ result.push(state);
+ }
+ state = {};
+ }
+ matchingControl = null;
+ matchingData = "";
+ } else {
+ matchingText += matchingControl + str[i];
+ matchingControl = null;
+ }
+ continue;
+ } else if (matchingData != null) {
+ if (str[i] == ";") {
+ ansiState.push(matchingData);
+ matchingData = "";
+ } else if (str[i] == "m" || str[i] == "K") {
+ ansiState.push(matchingData);
+ matchingData = null;
+ matchingText = "";
+ ansiState.forEach((ansiCode) => {
+ if (foregroundColors[ansiCode]) {
+ state.foreground = foregroundColors[ansiCode];
+ } else if (backgroundColors[ansiCode]) {
+ state.background = backgroundColors[ansiCode];
+ } else if (ansiCode == 39) {
+ delete state.foreground;
+ } else if (ansiCode == 49) {
+ delete state.background;
+ } else if (styles2[ansiCode]) {
+ state[styles2[ansiCode]] = true;
+ } else if (ansiCode == 22) {
+ state.bold = false;
+ } else if (ansiCode == 23) {
+ state.italic = false;
+ } else if (ansiCode == 24) {
+ state.underline = false;
+ }
+ });
+ ansiState = [];
+ } else {
+ matchingData += str[i];
+ }
+ continue;
+ }
+ if (str[i] == "") {
+ matchingControl = str[i];
+ } else if (str[i] == "\b") {
+ eraseChar();
+ } else {
+ matchingText += str[i];
+ }
+ }
+ if (matchingText) {
+ state.text = matchingText + (matchingControl ? matchingControl : "");
+ result.push(state);
+ }
+ return result;
+}
+var foregroundColors, backgroundColors, styles2;
+var init_ansiparse = __esm({
+ "src/util/ansiparse.ts"() {
+ init_string();
+ foregroundColors = {
+ 30: "black",
+ 31: "red",
+ 32: "green",
+ 33: "yellow",
+ 34: "blue",
+ 35: "magenta",
+ 36: "cyan",
+ 37: "white",
+ 90: "grey"
+ };
+ backgroundColors = {
+ 40: "black",
+ 41: "red",
+ 42: "green",
+ 43: "yellow",
+ 44: "blue",
+ 45: "magenta",
+ 46: "cyan",
+ 47: "white"
+ };
+ styles2 = {
+ 1: "bold",
+ 3: "italic",
+ 4: "underline"
+ };
+ }
+});
+
+// node_modules/ansi-regex/index.js
+var require_ansi_regex = __commonJS({
+ "node_modules/ansi-regex/index.js"(exports2, module2) {
+ "use strict";
+ module2.exports = ({ onlyFirst = false } = {}) => {
+ const pattern = [
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
+ ].join("|");
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
+ };
+ }
+});
+
+// node_modules/strip-ansi/index.js
+var require_strip_ansi = __commonJS({
+ "node_modules/strip-ansi/index.js"(exports2, module2) {
+ "use strict";
+ var ansiRegex = require_ansi_regex();
+ module2.exports = (string2) => typeof string2 === "string" ? string2.replace(ansiRegex(), "") : string2;
+ }
+});
+
+// src/markdown/index.ts
+function parseDocuments(docs, opts = {}) {
+ let lines = [];
+ let highlights = [];
+ let codes = [];
+ let idx = 0;
+ for (let doc of docs) {
+ let currline = lines.length;
+ let { content, filetype } = doc;
+ if (filetype == "markdown") {
+ let info = parseMarkdown(content, opts);
+ codes.push(...info.codes.map((o) => {
+ o.startLine = o.startLine + currline;
+ o.endLine = o.endLine + currline;
+ return o;
+ }));
+ highlights.push(...info.highlights.map((o) => {
+ o.lnum = o.lnum + currline;
+ return o;
+ }));
+ lines.push(...info.lines);
+ } else {
+ let parts = content.trim().split(/\r?\n/);
+ if (diagnosticFiletypes.includes(doc.filetype)) {
+ codes.push({ hlGroup: `Coc${filetype}Float`, startLine: currline, endLine: currline + parts.length });
+ } else {
+ codes.push({ filetype: doc.filetype, startLine: currline, endLine: currline + parts.length });
+ }
+ lines.push(...parts);
+ }
+ if (doc.active) {
+ let arr = getHighlightItems(content, currline, doc.active);
+ if (arr.length)
+ highlights.push(...arr);
+ }
+ if (idx != docs.length - 1) {
+ lines.push("\u2500");
+ }
+ idx = idx + 1;
+ }
+ return { lines, highlights, codes };
+}
+function getHighlightItems(content, currline, active) {
+ let res = [];
+ let [start, end] = active;
+ let lines = content.split(/\r?\n/);
+ let used = 0;
+ let inRange = false;
+ for (let i = 0; i < lines.length; i++) {
+ let line = lines[i];
+ if (!inRange) {
+ if (used + line.length > start) {
+ inRange = true;
+ let colStart = byteLength(line.slice(0, start - used));
+ if (used + line.length > end) {
+ let colEnd = byteLength(line.slice(0, end - used));
+ inRange = false;
+ res.push({ colStart, colEnd, lnum: i + currline, hlGroup: "CocUnderline" });
+ break;
+ } else {
+ let colEnd = byteLength(line);
+ res.push({ colStart, colEnd, lnum: i + currline, hlGroup: "CocUnderline" });
+ }
+ }
+ } else {
+ if (used + line.length > end) {
+ let colEnd = byteLength(line.slice(0, end - used));
+ res.push({ colStart: 0, colEnd, lnum: i + currline, hlGroup: "CocUnderline" });
+ inRange = false;
+ break;
+ } else {
+ let colEnd = byteLength(line);
+ res.push({ colStart: 0, colEnd, lnum: i + currline, hlGroup: "CocUnderline" });
+ }
+ }
+ used = used + line.length + 1;
+ }
+ return res;
+}
+function parseMarkdown(content, opts) {
+ import_marked.default.setOptions({
+ renderer: new renderer_default(),
+ gfm: true
+ });
+ let lines = [];
+ let highlights = [];
+ let codes = [];
+ let currline = 0;
+ let inCodeBlock = false;
+ let filetype;
+ let startLnum = 0;
+ let parsed = (0, import_marked.default)(content);
+ let links2 = renderer_default.getLinks();
+ if (links2.length) {
+ parsed = parsed + "\n\n" + links2.join("\n");
+ }
+ parsed = parsed.replace(/\s*$/, "");
+ let parsedLines = parsed.split(/\n/);
+ for (let i = 0; i < parsedLines.length; i++) {
+ let line = parsedLines[i];
+ if (!line.length) {
+ let pre = lines[lines.length - 1];
+ if (pre && pre.length) {
+ lines.push(line);
+ currline++;
+ }
+ continue;
+ }
+ if (opts.excludeImages && line.indexOf("![") !== -1) {
+ line = line.replace(/\s*!\[.*?\]\(.*?\)/g, "");
+ if (!(0, import_strip_ansi.default)(line).trim().length)
+ continue;
+ }
+ if (/\s*```\s*([A-Za-z0-9_,]+)?$/.test(line)) {
+ if (!inCodeBlock) {
+ let pre = parsedLines[i - 1];
+ if (pre && /^\s*```\s*/.test(pre)) {
+ lines.push("");
+ currline++;
+ }
+ inCodeBlock = true;
+ filetype = line.replace(/^\s*```\s*/, "");
+ if (filetype == "js")
+ filetype = "javascript";
+ if (filetype == "ts")
+ filetype = "typescript";
+ if (filetype == "bash")
+ filetype = "sh";
+ startLnum = currline;
+ } else {
+ inCodeBlock = false;
+ codes.push({
+ filetype,
+ startLine: startLnum,
+ endLine: currline
+ });
+ }
+ continue;
+ }
+ if (inCodeBlock) {
+ lines.push(line);
+ currline++;
+ continue;
+ }
+ let res = parseAnsiHighlights(line, true);
+ if (res.highlights) {
+ for (let hi of res.highlights) {
+ let { hlGroup, span } = hi;
+ highlights.push({
+ hlGroup,
+ lnum: currline,
+ colStart: span[0],
+ colEnd: span[1]
+ });
+ }
+ }
+ lines.push(res.line);
+ currline++;
+ }
+ return { lines, highlights, codes };
+}
+var import_marked, import_strip_ansi, diagnosticFiletypes, logger4;
+var init_markdown = __esm({
+ "src/markdown/index.ts"() {
+ import_marked = __toModule(require_marked());
+ init_renderer();
+ init_ansiparse();
+ init_string();
+ import_strip_ansi = __toModule(require_strip_ansi());
+ diagnosticFiletypes = ["Error", "Warning", "Info", "Hint"];
+ logger4 = require_logger2()("markdown-index");
+ }
+});
+
+// src/util/mutex.ts
+var Mutex;
+var init_mutex = __esm({
+ "src/util/mutex.ts"() {
+ Mutex = class {
+ constructor() {
+ this.tasks = [];
+ this.count = 1;
+ }
+ sched() {
+ if (this.count > 0 && this.tasks.length > 0) {
+ this.count--;
+ let next = this.tasks.shift();
+ next();
+ }
+ }
+ get busy() {
+ return this.count == 0;
+ }
+ acquire() {
+ return new Promise((res) => {
+ let task = () => {
+ let released = false;
+ res(() => {
+ if (!released) {
+ released = true;
+ this.count++;
+ this.sched();
+ }
+ });
+ };
+ this.tasks.push(task);
+ process.nextTick(this.sched.bind(this));
+ });
+ }
+ use(f) {
+ return this.acquire().then((release) => f().then((res) => {
+ release();
+ return res;
+ }).catch((err) => {
+ release();
+ throw err;
+ }));
+ }
+ };
+ }
+});
+
+// src/model/floatFactory.ts
+var import_debounce2, import_vscode_languageserver_protocol3, isVim, logger5, FloatFactory;
+var init_floatFactory = __esm({
+ "src/model/floatFactory.ts"() {
+ import_debounce2 = __toModule(require_debounce());
+ import_vscode_languageserver_protocol3 = __toModule(require_main2());
+ init_events();
+ init_markdown();
+ init_util();
+ init_mutex();
+ init_object();
+ isVim = process.env.VIM_NODE_RPC == "1";
+ logger5 = require_logger2()("model-float");
+ FloatFactory = class {
+ constructor(nvim) {
+ this.nvim = nvim;
+ this.winid = 0;
+ this._bufnr = 0;
+ this.mutex = new Mutex();
+ this.disposables = [];
+ this.onCursorMoved = (0, import_debounce2.default)(this._onCursorMoved.bind(this), 100);
+ }
+ bindEvents(autoHide, alignTop) {
+ let eventNames = ["InsertLeave", "InsertEnter", "BufEnter"];
+ for (let ev of eventNames) {
+ events_default.on(ev, (bufnr) => {
+ if (bufnr == this._bufnr)
+ return;
+ this.close();
+ }, null, this.disposables);
+ }
+ events_default.on("MenuPopupChanged", () => {
+ if (events_default.pumAlignTop == alignTop) {
+ this.close();
+ }
+ }, null, this.disposables);
+ this.disposables.push(import_vscode_languageserver_protocol3.Disposable.create(() => {
+ this.onCursorMoved.clear();
+ }));
+ events_default.on("CursorMoved", this.onCursorMoved.bind(this, autoHide), this, this.disposables);
+ events_default.on("CursorMovedI", this.onCursorMoved.bind(this, autoHide), this, this.disposables);
+ }
+ unbind() {
+ if (this.disposables.length) {
+ disposeAll(this.disposables);
+ this.disposables = [];
+ }
+ }
+ _onCursorMoved(autoHide, bufnr, cursor) {
+ if (bufnr == this._bufnr)
+ return;
+ if (bufnr == this.targetBufnr && equals(cursor, this.cursor)) {
+ return;
+ }
+ if (autoHide || bufnr != this.targetBufnr || !events_default.insertMode) {
+ this.close();
+ return;
+ }
+ }
+ async create(docs, _allowSelection = false, offsetX = 0) {
+ await this.show(docs, {
+ offsetX
+ });
+ }
+ applyFloatConfig(conf, opts) {
+ for (let key of Object.keys(opts)) {
+ if (key == "border") {
+ if (opts.border)
+ conf.border = [1, 1, 1, 1];
+ continue;
+ }
+ conf[key] = opts[key];
+ }
+ return conf;
+ }
+ async show(docs, config = {}) {
+ if (docs.length == 0 || docs.every((doc) => doc.content.length == 0)) {
+ this.close();
+ return;
+ }
+ let curr = Date.now();
+ let release = await this.mutex.acquire();
+ try {
+ await this.createPopup(docs, config, curr);
+ release();
+ } catch (e) {
+ this.nvim.echoError(e);
+ release();
+ }
+ }
+ async createPopup(docs, opts, timestamp) {
+ docs = docs.filter((o) => o.content.trim().length > 0);
+ let { lines, codes, highlights } = parseDocuments(docs);
+ let config = {
+ pumAlignTop: events_default.pumAlignTop,
+ preferTop: typeof opts.preferTop === "boolean" ? opts.preferTop : false,
+ offsetX: opts.offsetX || 0,
+ title: opts.title || "",
+ close: opts.close ? 1 : 0,
+ codes,
+ highlights,
+ modes: opts.modes || ["n", "i", "ic", "s"]
+ };
+ if (!isVim) {
+ if (typeof opts.winblend === "number")
+ config.winblend = opts.winblend;
+ if (opts.focusable != null)
+ config.focusable = opts.focusable ? 1 : 0;
+ if (opts.shadow)
+ config.shadow = 1;
+ }
+ if (opts.maxHeight)
+ config.maxHeight = opts.maxHeight;
+ if (opts.maxWidth)
+ config.maxWidth = opts.maxWidth;
+ if (opts.border && !opts.border.every((o) => o == 0)) {
+ config.border = opts.border;
+ }
+ if (opts.title && !config.border)
+ config.border = [1, 1, 1, 1];
+ if (opts.highlight)
+ config.highlight = opts.highlight;
+ if (opts.borderhighlight)
+ config.borderhighlight = [opts.borderhighlight];
+ if (opts.cursorline)
+ config.cursorline = 1;
+ let autoHide = opts.autoHide == false ? false : true;
+ if (autoHide)
+ config.autohide = 1;
+ this.unbind();
+ let arr = await this.nvim.call("coc#float#create_cursor_float", [this.winid, this._bufnr, lines, config]);
+ this.nvim.redrawVim();
+ if (!arr || arr.length == 0 || this.closeTs > timestamp) {
+ let winid2 = arr && arr.length > 0 ? arr[2] : this.winid;
+ if (winid2) {
+ this.winid = 0;
+ this.nvim.call("coc#float#close", [winid2], true);
+ this.nvim.redrawVim();
+ }
+ return;
+ }
+ let [targetBufnr, cursor, winid, bufnr, alignTop] = arr;
+ this.winid = winid;
+ this._bufnr = bufnr;
+ this.targetBufnr = targetBufnr;
+ this.cursor = cursor;
+ this.bindEvents(autoHide, alignTop == 1);
+ }
+ close() {
+ let { winid, nvim } = this;
+ this.closeTs = Date.now();
+ this.unbind();
+ if (winid) {
+ this.winid = 0;
+ nvim.call("coc#float#close", [winid], true);
+ nvim.redrawVim();
+ }
+ }
+ checkRetrigger(bufnr) {
+ if (this.winid && this.targetBufnr == bufnr)
+ return true;
+ return false;
+ }
+ get bufnr() {
+ return this._bufnr;
+ }
+ get buffer() {
+ return this.bufnr ? this.nvim.createBuffer(this.bufnr) : null;
+ }
+ get window() {
+ return this.winid ? this.nvim.createWindow(this.winid) : null;
+ }
+ async activated() {
+ if (!this.winid)
+ return false;
+ return await this.nvim.call("coc#float#valid", [this.winid]) != 0;
+ }
+ dispose() {
+ this.cursor = void 0;
+ this.close();
+ }
+ };
+ }
+});
+
+// src/util/position.ts
+function rangeInRange(r, range) {
+ return positionInRange(r.start, range) === 0 && positionInRange(r.end, range) === 0;
+}
+function rangeOverlap(r, range) {
+ let { start, end } = r;
+ if (comparePosition(end, range.start) <= 0) {
+ return false;
+ }
+ if (comparePosition(start, range.end) >= 0) {
+ return false;
+ }
+ return true;
+}
+function rangeIntersect(r, range) {
+ if (positionInRange(r.start, range) == 0) {
+ return true;
+ }
+ if (positionInRange(r.end, range) == 0) {
+ return true;
+ }
+ if (rangeInRange(range, r)) {
+ return true;
+ }
+ return false;
+}
+function lineInRange(line, range) {
+ let { start, end } = range;
+ return line >= start.line && line <= end.line;
+}
+function emptyRange(range) {
+ let { start, end } = range;
+ return start.line == end.line && start.character == end.character;
+}
+function positionInRange(position, range) {
+ let { start, end } = range;
+ if (comparePosition(position, start) < 0)
+ return -1;
+ if (comparePosition(position, end) > 0)
+ return 1;
+ return 0;
+}
+function comparePosition(position, other) {
+ if (position.line > other.line)
+ return 1;
+ if (other.line == position.line && position.character > other.character)
+ return 1;
+ if (other.line == position.line && position.character == other.character)
+ return 0;
+ return -1;
+}
+function isSingleLine(range) {
+ return range.start.line == range.end.line;
+}
+function getChangedPosition(start, edit2) {
+ let { range, newText } = edit2;
+ if (comparePosition(range.end, start) <= 0) {
+ let lines = newText.split("\n");
+ let lineCount = lines.length - (range.end.line - range.start.line) - 1;
+ let characterCount = 0;
+ if (range.end.line == start.line) {
+ let single = isSingleLine(range) && lineCount == 0;
+ let removed = single ? range.end.character - range.start.character : range.end.character;
+ let added = single ? newText.length : lines[lines.length - 1].length;
+ characterCount = added - removed;
+ }
+ return { line: lineCount, character: characterCount };
+ }
+ return { line: 0, character: 0 };
+}
+function adjustPosition(pos, edit2) {
+ let { range, newText } = edit2;
+ if (comparePosition(range.start, pos) > 1)
+ return pos;
+ let { start, end } = range;
+ let newLines = newText.split("\n");
+ let delta = end.line - start.line - newLines.length + 1;
+ let lastLine = newLines[newLines.length - 1];
+ let line = pos.line - delta;
+ if (pos.line != end.line)
+ return { line, character: pos.character };
+ let pre = newLines.length == 1 && start.line != end.line ? start.character : 0;
+ let removed = start.line == end.line && newLines.length == 1 ? end.character - start.character : end.character;
+ let character = pre + pos.character + lastLine.length - removed;
+ return {
+ line,
+ character
+ };
+}
+function positionToOffset(lines, line, character) {
+ let offset = 0;
+ for (let i = 0; i <= line; i++) {
+ if (i == line) {
+ offset += character;
+ } else {
+ offset += lines[i].length + 1;
+ }
+ }
+ return offset;
+}
+function editRange(range, text, edit2) {
+ if (!rangeInRange(edit2.range, range))
+ return text;
+ let { start, end } = edit2.range;
+ let lines = text.split("\n");
+ let character = start.line == range.start.line ? start.character - range.start.character : start.character;
+ let startOffset = positionToOffset(lines, start.line - range.start.line, character);
+ character = end.line == range.start.line ? end.character - range.start.character : end.character;
+ let endOffset = positionToOffset(lines, end.line - range.start.line, character);
+ return `${text.slice(0, startOffset)}${edit2.newText}${text.slice(endOffset, text.length)}`;
+}
+function getChangedFromEdits(start, edits) {
+ let changed = { line: 0, character: 0 };
+ for (let edit2 of edits) {
+ let d = getChangedPosition(start, edit2);
+ changed = { line: changed.line + d.line, character: changed.character + d.character };
+ }
+ return changed.line == 0 && changed.character == 0 ? null : changed;
+}
+var init_position = __esm({
+ "src/util/position.ts"() {
+ }
+});
+
+// src/model/outputChannel.ts
+var logger6, BufferChannel;
+var init_outputChannel = __esm({
+ "src/model/outputChannel.ts"() {
+ init_util();
+ logger6 = require_logger2()("outpubChannel");
+ BufferChannel = class {
+ constructor(name2, nvim, onDispose) {
+ this.name = name2;
+ this.nvim = nvim;
+ this.onDispose = onDispose;
+ this.lines = [""];
+ this.disposables = [];
+ this._disposed = false;
+ this.created = false;
+ }
+ get content() {
+ return this.lines.join("\n");
+ }
+ _append(value) {
+ let { nvim } = this;
+ let idx = this.lines.length - 1;
+ let newlines = value.split(/\r?\n/);
+ let lastline = this.lines[idx] + newlines[0];
+ this.lines[idx] = lastline;
+ let append = newlines.slice(1);
+ this.lines = this.lines.concat(append);
+ if (!this.created)
+ return;
+ nvim.pauseNotification();
+ nvim.call("setbufline", [this.bufname, "$", lastline], true);
+ if (append.length) {
+ nvim.call("appendbufline", [this.bufname, "$", append], true);
+ }
+ nvim.resumeNotification(false, true);
+ }
+ append(value) {
+ if (!this.validate())
+ return;
+ this._append(value);
+ }
+ appendLine(value) {
+ if (!this.validate())
+ return;
+ this._append(value + "\n");
+ }
+ clear(keep) {
+ if (!this.validate())
+ return;
+ let { nvim } = this;
+ this.lines = keep ? this.lines.slice(-keep) : [];
+ if (!this.created)
+ return;
+ nvim.pauseNotification();
+ nvim.call("deletebufline", [this.bufname, 1, "$"], true);
+ if (this.lines.length) {
+ nvim.call("appendbufline", [this.bufname, "$", this.lines], true);
+ }
+ nvim.resumeNotification(false, true);
+ }
+ hide() {
+ this.created = false;
+ this.nvim.command(`exe 'silent! bd! '.fnameescape('${this.bufname}')`, true);
+ }
+ get bufname() {
+ return `output:///${this.name}`;
+ }
+ show(preserveFocus) {
+ let { nvim } = this;
+ nvim.pauseNotification();
+ nvim.command(`exe 'vsplit '.fnameescape('${this.bufname}')`, true);
+ if (preserveFocus) {
+ nvim.command("wincmd p", true);
+ }
+ nvim.command("redraw", true);
+ nvim.resumeNotification(false, true);
+ this.created = true;
+ }
+ validate() {
+ return !this._disposed;
+ }
+ dispose() {
+ if (this.onDispose)
+ this.onDispose();
+ this._disposed = true;
+ this.hide();
+ this.lines = [];
+ disposeAll(this.disposables);
+ }
+ };
+ }
+});
+
+// src/channels.ts
+var logger7, Channels, channels_default;
+var init_channels = __esm({
+ "src/channels.ts"() {
+ init_outputChannel();
+ init_events();
+ logger7 = require_logger2()("channels");
+ Channels = class {
+ constructor() {
+ this.outputChannels = new Map();
+ this.bufnrs = new Map();
+ this.disposable = events_default.on("BufUnload", (bufnr) => {
+ let name2 = this.bufnrs.get(bufnr);
+ if (name2) {
+ let channel = this.outputChannels.get(name2);
+ if (channel)
+ channel.created = false;
+ }
+ });
+ }
+ getProvider(nvim) {
+ let provider = {
+ onDidChange: null,
+ provideTextDocumentContent: async (uri) => {
+ let channel = this.get(uri.path.slice(1));
+ if (!channel)
+ return "";
+ nvim.pauseNotification();
+ nvim.call("bufnr", ["%"], true);
+ nvim.command("setlocal nospell nofoldenable nowrap noswapfile", true);
+ nvim.command("setlocal buftype=nofile bufhidden=hide", true);
+ nvim.command("setfiletype log", true);
+ let res = await nvim.resumeNotification();
+ if (!res[1]) {
+ this.bufnrs.set(res[0][0], channel.name);
+ channel.created = true;
+ }
+ return channel.content;
+ }
+ };
+ return provider;
+ }
+ get names() {
+ return Array.from(this.outputChannels.keys());
+ }
+ get(channelName) {
+ return this.outputChannels.get(channelName);
+ }
+ create(name2, nvim) {
+ if (this.outputChannels.has(name2))
+ return this.outputChannels.get(name2);
+ if (!/^[\w\s-.]+$/.test(name2))
+ throw new Error(`Invalid channel name "${name2}", only word characters and white space allowed.`);
+ let channel = new BufferChannel(name2, nvim, () => {
+ this.outputChannels.delete(name2);
+ });
+ this.outputChannels.set(name2, channel);
+ return channel;
+ }
+ show(name2, preserveFocus) {
+ let channel = this.outputChannels.get(name2);
+ if (!channel)
+ return;
+ channel.show(preserveFocus);
+ }
+ dispose() {
+ this.disposable.dispose();
+ for (let channel of this.outputChannels.values()) {
+ channel.dispose();
+ }
+ this.outputChannels.clear();
+ }
+ };
+ channels_default = new Channels();
+ }
+});
+
+// src/model/dialog.ts
+var logger8, Dialog;
+var init_dialog = __esm({
+ "src/model/dialog.ts"() {
+ init_events();
+ init_util();
+ logger8 = require_logger2()("model-dialog");
+ Dialog = class {
+ constructor(nvim, config) {
+ this.nvim = nvim;
+ this.config = config;
+ this.disposables = [];
+ events_default.on("BufWinLeave", (bufnr) => {
+ if (bufnr == this.bufnr) {
+ this.dispose();
+ if (config.callback)
+ config.callback(-1);
+ }
+ }, null, this.disposables);
+ events_default.on("FloatBtnClick", (bufnr, idx) => {
+ if (bufnr == this.bufnr) {
+ this.dispose();
+ let btns = config == null ? void 0 : config.buttons.filter((o) => o.disabled != true);
+ if (config.callback)
+ config.callback(btns[idx].index);
+ }
+ }, null, this.disposables);
+ }
+ get lines() {
+ return [...this.config.content.split(/\r?\n/)];
+ }
+ async show(preferences) {
+ let { nvim } = this;
+ let { title, close, buttons } = this.config;
+ let borderhighlight = this.config.borderhighlight || preferences.floatBorderHighlight;
+ let highlight = this.config.highlight || preferences.floatHighlight;
+ let opts = { maxwidth: preferences.maxWidth || 80 };
+ if (title)
+ opts.title = title;
+ if (close || typeof close === "undefined")
+ opts.close = 1;
+ if (preferences.maxHeight)
+ opts.maxHeight = preferences.maxHeight;
+ if (preferences.maxWidth)
+ opts.maxWidth = preferences.maxWidth;
+ if (highlight)
+ opts.highlight = highlight;
+ if (borderhighlight)
+ opts.borderhighlight = [borderhighlight];
+ if (buttons)
+ opts.buttons = buttons.filter((o) => !o.disabled).map((o) => o.text);
+ let res = await nvim.call("coc#float#create_dialog", [this.lines, opts]);
+ if (!res[1])
+ return;
+ this.bufnr = res[1];
+ nvim.command("redraw", true);
+ }
+ get winid() {
+ if (!this.bufnr)
+ return Promise.resolve(null);
+ return this.nvim.call("bufwinid", [this.bufnr]);
+ }
+ dispose() {
+ this.bufnr = void 0;
+ disposeAll(this.disposables);
+ this.disposables = [];
+ }
+ };
+ }
+});
+
+// src/model/popup.ts
+var isVim2, Popup;
+var init_popup = __esm({
+ "src/model/popup.ts"() {
+ isVim2 = process.env.VIM_NODE_RPC == "1";
+ Popup = class {
+ constructor(nvim, winid, bufnr) {
+ this.nvim = nvim;
+ this.winid = winid;
+ this.bufnr = bufnr;
+ }
+ get valid() {
+ return this.nvim.call("coc#float#valid", [this.winid]).then((res) => {
+ return !!res;
+ });
+ }
+ close() {
+ this.nvim.call("coc#float#close", [this.winid], true);
+ }
+ refreshScrollbar() {
+ if (!isVim2)
+ this.nvim.call("coc#float#nvim_scrollbar", [this.winid], true);
+ }
+ execute(cmd) {
+ this.nvim.call("coc#compat#execute", [this.winid, cmd], true);
+ }
+ async scrollForward() {
+ let { nvim, bufnr, winid } = this;
+ let buf = nvim.createBuffer(bufnr);
+ let total = await buf.length;
+ let botline;
+ if (!isVim2) {
+ let infos = await nvim.call("getwininfo", [winid]);
+ if (!infos || !infos.length)
+ return;
+ botline = infos[0].botline;
+ } else {
+ botline = await nvim.eval(`get(popup_getpos(${winid}), 'lastline', 0)`);
+ }
+ if (botline >= total || botline == 0)
+ return;
+ nvim.pauseNotification();
+ this.setCursor(botline - 1);
+ this.execute(`silent! noa setl scrolloff=0`);
+ this.execute(`normal! ${botline}Gzt`);
+ this.refreshScrollbar();
+ nvim.command("redraw", true);
+ nvim.resumeNotification(false, true);
+ }
+ async scrollBackward() {
+ let { nvim, winid } = this;
+ let topline;
+ if (!isVim2) {
+ let infos = await nvim.call("getwininfo", [winid]);
+ if (!infos || !infos.length)
+ return;
+ topline = infos[0].topline;
+ } else {
+ topline = await nvim.eval(`get(popup_getpos(${winid}), 'firstline', 0)`);
+ }
+ if (topline == 1)
+ return;
+ nvim.pauseNotification();
+ this.setCursor(topline - 1);
+ this.execute(`normal! ${topline}Gzb`);
+ this.refreshScrollbar();
+ nvim.command("redraw", true);
+ nvim.resumeNotification(false, true);
+ }
+ setCursor(index) {
+ let { nvim, bufnr, winid } = this;
+ if (isVim2) {
+ nvim.call("win_execute", [winid, `exe ${index + 1}`], true);
+ } else {
+ let win = nvim.createWindow(winid);
+ win.notify("nvim_win_set_cursor", [[index + 1, 0]]);
+ nvim.command(`sign unplace 6 buffer=${bufnr}`, true);
+ nvim.command(`sign place 6 line=${index + 1} name=CocCurrentLine buffer=${bufnr}`, true);
+ }
+ }
+ };
+ }
+});
+
+// src/model/menu.ts
+var import_vscode_languageserver_protocol4, logger9, Menu;
+var init_menu = __esm({
+ "src/model/menu.ts"() {
+ import_vscode_languageserver_protocol4 = __toModule(require_main2());
+ init_events();
+ init_util();
+ init_popup();
+ logger9 = require_logger2()("model-menu");
+ Menu = class {
+ constructor(nvim, config, token) {
+ this.nvim = nvim;
+ this.config = config;
+ this.currIndex = 0;
+ this.disposables = [];
+ this.keyMappings = new Map();
+ this._onDidClose = new import_vscode_languageserver_protocol4.Emitter();
+ this.onDidClose = this._onDidClose.event;
+ this.total = config.items.length;
+ if (token) {
+ token.onCancellationRequested(() => {
+ var _a2;
+ (_a2 = this.win) == null ? void 0 : _a2.close();
+ });
+ }
+ this.disposables.push(this._onDidClose);
+ this.addKeymappings();
+ }
+ attachEvents() {
+ events_default.on("InputChar", this.onInputChar.bind(this), null, this.disposables);
+ events_default.on("BufWinLeave", (bufnr) => {
+ if (bufnr == this.bufnr) {
+ this._onDidClose.fire(-1);
+ this.bufnr = void 0;
+ this.win = void 0;
+ this.dispose();
+ }
+ }, null, this.disposables);
+ }
+ addKeymappings() {
+ let { nvim } = this;
+ this.addKeys(["", ""], () => {
+ this._onDidClose.fire(-1);
+ this.dispose();
+ });
+ this.addKeys(["\r", ""], () => {
+ this._onDidClose.fire(this.currIndex);
+ this.dispose();
+ });
+ let setCursorIndex = (idx) => {
+ var _a2;
+ if (!this.win)
+ return;
+ nvim.pauseNotification();
+ this.setCursor(idx);
+ (_a2 = this.win) == null ? void 0 : _a2.refreshScrollbar();
+ nvim.command("redraw", true);
+ nvim.resumeNotification(false, true);
+ };
+ this.addKeys("", async () => {
+ var _a2;
+ await ((_a2 = this.win) == null ? void 0 : _a2.scrollForward());
+ });
+ this.addKeys("", async () => {
+ var _a2;
+ await ((_a2 = this.win) == null ? void 0 : _a2.scrollBackward());
+ });
+ this.addKeys(["j", "", "", ""], () => {
+ let idx = this.currIndex == this.total - 1 ? 0 : this.currIndex + 1;
+ setCursorIndex(idx);
+ });
+ this.addKeys(["k", "", "", ""], () => {
+ let idx = this.currIndex == 0 ? this.total - 1 : this.currIndex - 1;
+ setCursorIndex(idx);
+ });
+ this.addKeys(["g"], () => {
+ setCursorIndex(0);
+ });
+ this.addKeys(["G"], () => {
+ setCursorIndex(this.total - 1);
+ });
+ let timer;
+ let firstNumber;
+ this.addKeys(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], (character) => {
+ if (timer)
+ clearTimeout(timer);
+ let n = parseInt(character, 10);
+ if (isNaN(n) || n > this.total)
+ return;
+ if (firstNumber == null && n == 0)
+ return;
+ if (firstNumber) {
+ let count = firstNumber * 10 + n;
+ firstNumber = void 0;
+ this._onDidClose.fire(count - 1);
+ this.dispose();
+ return;
+ }
+ if (this.total < 10 || n * 10 > this.total) {
+ this._onDidClose.fire(n - 1);
+ this.dispose();
+ return;
+ }
+ timer = setTimeout(async () => {
+ this._onDidClose.fire(n - 1);
+ this.dispose();
+ }, 200);
+ firstNumber = n;
+ });
+ }
+ async show(preferences = {}) {
+ let { nvim } = this;
+ let { title, items } = this.config;
+ let opts = {};
+ if (title)
+ opts.title = title;
+ if (preferences.maxHeight)
+ opts.maxHeight = preferences.maxHeight;
+ if (preferences.maxWidth)
+ opts.maxWidth = preferences.maxWidth;
+ if (preferences.floatHighlight)
+ opts.highlight = preferences.floatHighlight;
+ if (preferences.floatBorderHighlight)
+ opts.borderhighlight = [preferences.floatBorderHighlight];
+ let lines = items.map((v, i) => {
+ if (i < 99)
+ return `${i + 1}. ${v}`;
+ return v;
+ });
+ if (preferences.confirmKey && preferences.confirmKey != "") {
+ this.addKeys(preferences.confirmKey, () => {
+ this._onDidClose.fire(this.currIndex);
+ this.dispose();
+ });
+ }
+ let res = await nvim.call("coc#float#create_menu", [lines, opts]);
+ this.win = new Popup(nvim, res[0], res[1]);
+ this.bufnr = res[1];
+ this.attachEvents();
+ nvim.call("coc#prompt#start_prompt", ["menu"], true);
+ return res[0];
+ }
+ get buffer() {
+ return this.bufnr ? this.nvim.createBuffer(this.bufnr) : void 0;
+ }
+ dispose() {
+ var _a2;
+ disposeAll(this.disposables);
+ this.disposables = [];
+ this.nvim.call("coc#prompt#stop_prompt", ["menu"], true);
+ (_a2 = this.win) == null ? void 0 : _a2.close();
+ this.win = void 0;
+ }
+ async onInputChar(session, character) {
+ if (session != "menu" || !this.win)
+ return;
+ let fn = this.keyMappings.get(character);
+ if (fn) {
+ await Promise.resolve(fn(character));
+ } else {
+ logger9.warn(`Ignored key press: ${character}`);
+ }
+ }
+ setCursor(index) {
+ if (!this.win)
+ return;
+ this.currIndex = index;
+ this.win.setCursor(index);
+ }
+ addKeys(keys, fn) {
+ if (Array.isArray(keys)) {
+ for (let key of keys) {
+ this.keyMappings.set(key, fn);
+ }
+ } else {
+ this.keyMappings.set(keys, fn);
+ }
+ }
+ };
+ }
+});
+
+// src/model/notification.ts
+var isVim3, logger10, Notification;
+var init_notification = __esm({
+ "src/model/notification.ts"() {
+ init_events();
+ init_util();
+ isVim3 = process.env.VIM_NODE_RPC == "1";
+ logger10 = require_logger2()("model-notification");
+ Notification = class {
+ constructor(nvim, config, attachEvents = true) {
+ this.nvim = nvim;
+ this.config = config;
+ this.disposables = [];
+ this._disposed = false;
+ if (attachEvents) {
+ events_default.on("BufWinLeave", (bufnr) => {
+ if (bufnr == this.bufnr) {
+ this.dispose();
+ if (config.callback)
+ config.callback(-1);
+ }
+ }, null, this.disposables);
+ events_default.on("FloatBtnClick", (bufnr, idx) => {
+ if (bufnr == this.bufnr) {
+ this.dispose();
+ let btns = config == null ? void 0 : config.buttons.filter((o) => o.disabled != true);
+ if (config.callback)
+ config.callback(btns[idx].index);
+ }
+ }, null, this.disposables);
+ }
+ }
+ get lines() {
+ return this.config.content.split(/\r?\n/);
+ }
+ async show(preferences) {
+ let { nvim } = this;
+ let { title, close, timeout, buttons, borderhighlight } = this.config;
+ let opts = Object.assign({}, preferences);
+ opts.close = close ? 1 : 0;
+ if (title)
+ opts.title = title;
+ if (borderhighlight)
+ opts.borderhighlight = borderhighlight;
+ if (buttons)
+ opts.buttons = buttons.filter((o) => !o.disabled).map((o) => o.text);
+ if (timeout)
+ opts.timeout = timeout;
+ let res = await nvim.call("coc#float#create_notification", [this.lines, opts]);
+ if (!res)
+ return false;
+ if (this._disposed) {
+ this.nvim.call("coc#float#close", [res[0]], true);
+ if (isVim3)
+ this.nvim.command("redraw", true);
+ } else {
+ this._winid = res[0];
+ this.bufnr = res[1];
+ }
+ return this._winid != void 0;
+ }
+ get winid() {
+ return this._winid;
+ }
+ dispose() {
+ if (this._disposed)
+ return;
+ this._disposed = true;
+ let { winid } = this;
+ if (winid) {
+ this.nvim.call("coc#float#close", [winid], true);
+ if (isVim3)
+ this.nvim.command("redraw", true);
+ }
+ this.bufnr = void 0;
+ this._winid = void 0;
+ disposeAll(this.disposables);
+ this.disposables = [];
+ }
+ };
+ }
+});
+
+// src/model/picker.ts
+var import_vscode_languageserver_protocol5, logger11, isVim4, Picker;
+var init_picker = __esm({
+ "src/model/picker.ts"() {
+ import_vscode_languageserver_protocol5 = __toModule(require_main2());
+ init_events();
+ init_util();
+ init_string();
+ init_popup();
+ logger11 = require_logger2()("model-dialog");
+ isVim4 = process.env.VIM_NODE_RPC == "1";
+ Picker = class {
+ constructor(nvim, config, token) {
+ this.nvim = nvim;
+ this.config = config;
+ this.picked = new Set();
+ this.currIndex = 0;
+ this.disposables = [];
+ this.keyMappings = new Map();
+ this._onDidClose = new import_vscode_languageserver_protocol5.Emitter();
+ this.onDidClose = this._onDidClose.event;
+ for (let i = 0; i < config.items.length; i++) {
+ let item = config.items[i];
+ if (item.picked)
+ this.picked.add(i);
+ }
+ this.total = config.items.length;
+ if (token) {
+ token.onCancellationRequested(() => {
+ var _a2;
+ (_a2 = this.win) == null ? void 0 : _a2.close();
+ });
+ }
+ this.disposables.push(this._onDidClose);
+ this.addKeymappings();
+ }
+ attachEvents() {
+ events_default.on("InputChar", this.onInputChar.bind(this), null, this.disposables);
+ events_default.on("BufWinLeave", (bufnr) => {
+ if (bufnr == this.bufnr) {
+ this._onDidClose.fire(void 0);
+ this.bufnr = void 0;
+ this.win = void 0;
+ this.dispose();
+ }
+ }, null, this.disposables);
+ events_default.on("FloatBtnClick", (bufnr, idx) => {
+ if (bufnr == this.bufnr) {
+ if (idx == 0) {
+ let selected = Array.from(this.picked);
+ this._onDidClose.fire(selected.length ? selected : void 0);
+ } else {
+ this._onDidClose.fire(void 0);
+ }
+ this.dispose();
+ }
+ }, null, this.disposables);
+ }
+ addKeymappings() {
+ let { nvim } = this;
+ const toggleSelect = (idx) => {
+ if (this.picked.has(idx)) {
+ this.picked.delete(idx);
+ } else {
+ this.picked.add(idx);
+ }
+ };
+ this.addKeys("", async () => {
+ if (isVim4 || !this.win)
+ return;
+ let [winid, lnum, col] = await nvim.eval("[v:mouse_winid,v:mouse_lnum,v:mouse_col]");
+ if (global.hasOwnProperty("__TEST__")) {
+ let res = await nvim.getVar("mouse_position");
+ winid = res[0];
+ lnum = res[1];
+ col = res[2];
+ }
+ nvim.pauseNotification();
+ if (winid == this.win.winid) {
+ if (col <= 3) {
+ toggleSelect(lnum - 1);
+ this.changeLine(lnum - 1);
+ } else {
+ this.setCursor(lnum - 1);
+ }
+ }
+ nvim.call("win_gotoid", [winid], true);
+ nvim.call("cursor", [lnum, col], true);
+ nvim.call("coc#float#nvim_float_click", [], true);
+ nvim.command("redraw", true);
+ await nvim.resumeNotification();
+ });
+ this.addKeys(["", ""], () => {
+ this._onDidClose.fire(void 0);
+ this.dispose();
+ });
+ this.addKeys("", () => {
+ if (this.picked.size == 0) {
+ this._onDidClose.fire(void 0);
+ } else {
+ let selected = Array.from(this.picked);
+ this._onDidClose.fire(selected);
+ }
+ this.dispose();
+ });
+ let setCursorIndex = (idx) => {
+ nvim.pauseNotification();
+ this.setCursor(idx);
+ this.win.refreshScrollbar();
+ nvim.command("redraw", true);
+ nvim.resumeNotification(false, true);
+ };
+ this.addKeys(["j", "", "", ""], () => {
+ let idx = this.currIndex == this.total - 1 ? 0 : this.currIndex + 1;
+ setCursorIndex(idx);
+ });
+ this.addKeys(["k", "", "