From 5c769f7ab8c60d5d49b65ad999b9edaeebe5447e Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Tue, 14 Mar 2023 05:06:53 +0900 Subject: [PATCH] renovate VSCode extension --- extension/.vscode/extensions.json | 3 + extension/.vscode/tasks.json | 37 + extension/dist/extension.js | 1 + extension/dist/extension.js.map | 1 + extension/extension.js | 32 - extension/package-lock.json | 2465 ++++++++++++++++++++ extension/package.json | 69 +- extension/rome.json | 11 + extension/src/commands.ts | 19 + extension/src/extension.ts | 97 + extension/src/test/runTest.ts | 23 + extension/src/test/suite/extension.test.ts | 15 + extension/src/test/suite/index.ts | 38 + extension/tsconfig.json | 17 + extension/webpack.config.js | 48 + 15 files changed, 2841 insertions(+), 35 deletions(-) create mode 100644 extension/.vscode/extensions.json create mode 100644 extension/.vscode/tasks.json create mode 100644 extension/dist/extension.js create mode 100644 extension/dist/extension.js.map delete mode 100644 extension/extension.js create mode 100644 extension/rome.json create mode 100644 extension/src/commands.ts create mode 100644 extension/src/extension.ts create mode 100644 extension/src/test/runTest.ts create mode 100644 extension/src/test/suite/extension.test.ts create mode 100644 extension/src/test/suite/index.ts create mode 100644 extension/tsconfig.json create mode 100644 extension/webpack.config.js diff --git a/extension/.vscode/extensions.json b/extension/.vscode/extensions.json new file mode 100644 index 0000000..6fb3218 --- /dev/null +++ b/extension/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["amodio.tsl-problem-matcher", "rome.rome"] +} diff --git a/extension/.vscode/tasks.json b/extension/.vscode/tasks.json new file mode 100644 index 0000000..6a1ad1f --- /dev/null +++ b/extension/.vscode/tasks.json @@ -0,0 +1,37 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": ["$ts-webpack-watch", "$tslint-webpack-watch"], + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "watch-tests", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": "build" + }, + { + "label": "tasks: watch-tests", + "dependsOn": ["npm: watch", "npm: watch-tests"], + "problemMatcher": [] + } + ] +} diff --git a/extension/dist/extension.js b/extension/dist/extension.js new file mode 100644 index 0000000..e42111e --- /dev/null +++ b/extension/dist/extension.js @@ -0,0 +1 @@ +(()=>{var e={5623:e=>{"use strict";function t(e,t,r){e instanceof RegExp&&(e=n(e,r)),t instanceof RegExp&&(t=n(t,r));var o=i(e,t,r);return o&&{start:o[0],end:o[1],pre:r.slice(0,o[0]),body:r.slice(o[0]+e.length,o[1]),post:r.slice(o[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function i(e,t,n){var i,r,o,s,a,c=n.indexOf(e),u=n.indexOf(t,c+1),l=c;if(c>=0&&u>0){if(e===t)return[c,u];for(i=[],o=n.length;l>=0&&!a;)l==c?(i.push(l),c=n.indexOf(e,l+1)):1==i.length?a=[i.pop(),u]:((r=i.pop())=0?c:u;i.length&&(a=[o,s])}return a}e.exports=t,t.range=i},3644:(e,t,n)=>{var i=n(5623);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),f(function(e){return e.split("\\\\").join(r).split("\\{").join(o).split("\\}").join(s).split("\\,").join(a).split("\\.").join(c)}(e),!0).map(l)):[]};var r="\0SLASH"+Math.random()+"\0",o="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",c="\0PERIOD"+Math.random()+"\0";function u(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function l(e){return e.split(r).join("\\").split(o).join("{").split(s).join("}").split(a).join(",").split(c).join(".")}function d(e){if(!e)return[""];var t=[],n=i("{","}",e);if(!n)return e.split(",");var r=n.pre,o=n.body,s=n.post,a=r.split(",");a[a.length-1]+="{"+o+"}";var c=d(s);return s.length&&(a[a.length-1]+=c.shift(),a.push.apply(a,c)),t.push.apply(t,a),t}function h(e){return"{"+e+"}"}function p(e){return/^-?0\d/.test(e)}function g(e,t){return e<=t}function m(e,t){return e>=t}function f(e,t){var n=[],r=i("{","}",e);if(!r)return[e];var o=r.pre,a=r.post.length?f(r.post,!1):[""];if(/\$$/.test(r.pre))for(var c=0;c=0;if(!D&&!b)return r.post.match(/,.*\}/)?f(e=r.pre+"{"+r.body+s+r.post):[e];if(D)v=r.body.split(/\.\./);else if(1===(v=d(r.body)).length&&1===(v=f(v[0],!1).map(h)).length)return a.map((function(e){return r.pre+v[0]+e}));if(D){var S=u(v[0]),w=u(v[1]),T=Math.max(v[0].length,v[1].length),_=3==v.length?Math.abs(u(v[2])):1,k=g;w0){var q=new Array(O+1).join("0");E=x<0?"-"+q+E.slice(1):q+E}}y.push(E)}}else{y=[];for(var F=0;F{"use strict";const i=n(4411),r=Symbol("max"),o=Symbol("length"),s=Symbol("lengthCalculator"),a=Symbol("allowStale"),c=Symbol("maxAge"),u=Symbol("dispose"),l=Symbol("noDisposeOnSet"),d=Symbol("lruList"),h=Symbol("cache"),p=Symbol("updateAgeOnGet"),g=()=>1,m=(e,t,n)=>{const i=e[h].get(t);if(i){const t=i.value;if(f(e,t)){if(y(e,i),!e[a])return}else n&&(e[p]&&(i.value.now=Date.now()),e[d].unshiftNode(i));return t.value}},f=(e,t)=>{if(!t||!t.maxAge&&!e[c])return!1;const n=Date.now()-t.now;return t.maxAge?n>t.maxAge:e[c]&&n>e[c]},v=e=>{if(e[o]>e[r])for(let t=e[d].tail;e[o]>e[r]&&null!==t;){const n=t.prev;y(e,t),t=n}},y=(e,t)=>{if(t){const n=t.value;e[u]&&e[u](n.key,n.value),e[o]-=n.length,e[h].delete(n.key),e[d].removeNode(t)}};class C{constructor(e,t,n,i,r){this.key=e,this.value=t,this.length=n,this.now=i,this.maxAge=r||0}}const R=(e,t,n,i)=>{let r=n.value;f(e,r)&&(y(e,n),e[a]||(r=void 0)),r&&t.call(i,r.value,r.key,e)};e.exports=class{constructor(e){if("number"==typeof e&&(e={max:e}),e||(e={}),e.max&&("number"!=typeof e.max||e.max<0))throw new TypeError("max must be a non-negative number");this[r]=e.max||1/0;const t=e.length||g;if(this[s]="function"!=typeof t?g:t,this[a]=e.stale||!1,e.maxAge&&"number"!=typeof e.maxAge)throw new TypeError("maxAge must be a number");this[c]=e.maxAge||0,this[u]=e.dispose,this[l]=e.noDisposeOnSet||!1,this[p]=e.updateAgeOnGet||!1,this.reset()}set max(e){if("number"!=typeof e||e<0)throw new TypeError("max must be a non-negative number");this[r]=e||1/0,v(this)}get max(){return this[r]}set allowStale(e){this[a]=!!e}get allowStale(){return this[a]}set maxAge(e){if("number"!=typeof e)throw new TypeError("maxAge must be a non-negative number");this[c]=e,v(this)}get maxAge(){return this[c]}set lengthCalculator(e){"function"!=typeof e&&(e=g),e!==this[s]&&(this[s]=e,this[o]=0,this[d].forEach((e=>{e.length=this[s](e.value,e.key),this[o]+=e.length}))),v(this)}get lengthCalculator(){return this[s]}get length(){return this[o]}get itemCount(){return this[d].length}rforEach(e,t){t=t||this;for(let n=this[d].tail;null!==n;){const i=n.prev;R(this,e,n,t),n=i}}forEach(e,t){t=t||this;for(let n=this[d].head;null!==n;){const i=n.next;R(this,e,n,t),n=i}}keys(){return this[d].toArray().map((e=>e.key))}values(){return this[d].toArray().map((e=>e.value))}reset(){this[u]&&this[d]&&this[d].length&&this[d].forEach((e=>this[u](e.key,e.value))),this[h]=new Map,this[d]=new i,this[o]=0}dump(){return this[d].map((e=>!f(this,e)&&{k:e.key,v:e.value,e:e.now+(e.maxAge||0)})).toArray().filter((e=>e))}dumpLru(){return this[d]}set(e,t,n){if((n=n||this[c])&&"number"!=typeof n)throw new TypeError("maxAge must be a number");const i=n?Date.now():0,a=this[s](t,e);if(this[h].has(e)){if(a>this[r])return y(this,this[h].get(e)),!1;const s=this[h].get(e).value;return this[u]&&(this[l]||this[u](e,s.value)),s.now=i,s.maxAge=n,s.value=t,this[o]+=a-s.length,s.length=a,this.get(e),v(this),!0}const p=new C(e,t,a,i,n);return p.length>this[r]?(this[u]&&this[u](e,t),!1):(this[o]+=p.length,this[d].unshift(p),this[h].set(e,this[d].head),v(this),!0)}has(e){if(!this[h].has(e))return!1;const t=this[h].get(e).value;return!f(this,t)}get(e){return m(this,e,!0)}peek(e){return m(this,e,!1)}pop(){const e=this[d].tail;return e?(y(this,e),e.value):null}del(e){y(this,this[h].get(e))}load(e){this.reset();const t=Date.now();for(let n=e.length-1;n>=0;n--){const i=e[n],r=i.e||0;if(0===r)this.set(i.k,i.v);else{const e=r-t;e>0&&this.set(i.k,i.v,e)}}}prune(){this[h].forEach(((e,t)=>m(this,t,!1)))}}},8696:e=>{const t="object"==typeof process&&process&&"win32"===process.platform;e.exports=t?{sep:"\\"}:{sep:"/"}},1171:(e,t,n)=>{const i=e.exports=(e,t,n={})=>(f(t),!(!n.nocomment&&"#"===t.charAt(0))&&new y(t,n).match(e));e.exports=i;const r=n(8696);i.sep=r.sep;const o=Symbol("globstar **");i.GLOBSTAR=o;const s=n(3644),a={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},c="[^/]",u=c+"*?",l=e=>e.split("").reduce(((e,t)=>(e[t]=!0,e)),{}),d=l("().*{}+?[]^$\\!"),h=l("[.("),p=/\/+/;i.filter=(e,t={})=>(n,r,o)=>i(n,e,t);const g=(e,t={})=>{const n={};return Object.keys(e).forEach((t=>n[t]=e[t])),Object.keys(t).forEach((e=>n[e]=t[e])),n};i.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return i;const t=i,n=(n,i,r)=>t(n,i,g(e,r));return(n.Minimatch=class extends t.Minimatch{constructor(t,n){super(t,g(e,n))}}).defaults=n=>t.defaults(g(e,n)).Minimatch,n.filter=(n,i)=>t.filter(n,g(e,i)),n.defaults=n=>t.defaults(g(e,n)),n.makeRe=(n,i)=>t.makeRe(n,g(e,i)),n.braceExpand=(n,i)=>t.braceExpand(n,g(e,i)),n.match=(n,i,r)=>t.match(n,i,g(e,r)),n},i.braceExpand=(e,t)=>m(e,t);const m=(e,t={})=>(f(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:s(e)),f=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},v=Symbol("subparse");i.makeRe=(e,t)=>new y(e,t||{}).makeRe(),i.match=(e,t,n={})=>{const i=new y(t,n);return e=e.filter((e=>i.match(e))),i.options.nonull&&!e.length&&e.push(t),e};class y{constructor(e,t){f(e),t||(t={}),this.options=t,this.set=[],this.pattern=e,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.make()}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();let n=this.globSet=this.braceExpand();t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,n),n=this.globParts=n.map((e=>e.split(p))),this.debug(this.pattern,n),n=n.map(((e,t,n)=>e.map(this.parse,this))),this.debug(this.pattern,n),n=n.filter((e=>-1===e.indexOf(!1))),this.debug(this.pattern,n),this.set=n}parseNegate(){if(this.options.nonegate)return;const e=this.pattern;let t=!1,n=0;for(let i=0;i>> no match, partial?",e,h,t,p),h!==a))}if("string"==typeof l?(u=d===l,this.debug("string match",l,d,u)):(u=d.match(l),this.debug("pattern match",l,d,u)),!u)return!1}if(r===a&&s===c)return!0;if(r===a)return n;if(s===c)return r===a-1&&""===e[r];throw new Error("wtf?")}braceExpand(){return m(this.pattern,this.options)}parse(e,t){f(e);const n=this.options;if("**"===e){if(!n.noglobstar)return o;e="*"}if(""===e)return"";let i="",r=!1,s=!1;const l=[],p=[];let g,m,y,C,R=!1,D=-1,b=-1,S="."===e.charAt(0),w=n.dot||S;const T=e=>"."===e.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",_=()=>{if(g){switch(g){case"*":i+=u,r=!0;break;case"?":i+=c,r=!0;break;default:i+="\\"+g}this.debug("clearStateChar %j %j",g,i),g=!1}};for(let t,o=0;o(n||(n="\\"),t+t+n+"|"))),this.debug("tail=%j\n %s",e,e,y,i);const t="*"===y.type?u:"?"===y.type?c:"\\"+y.type;r=!0,i=i.slice(0,y.reStart)+t+"\\("+e}_(),s&&(i+="\\\\");const k=h[i.charAt(0)];for(let e=p.length-1;e>-1;e--){const n=p[e],r=i.slice(0,n.reStart),o=i.slice(n.reStart,n.reEnd-8);let s=i.slice(n.reEnd);const a=i.slice(n.reEnd-8,n.reEnd)+s,c=r.split(")").length,u=r.split("(").length-c;let l=s;for(let e=0;ee.replace(/\\(.)/g,"$1"))(e);const P=n.nocase?"i":"";try{return Object.assign(new RegExp("^"+i+"$",P),{_glob:e,_src:i})}catch(e){return new RegExp("$.")}}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,n=t.noglobstar?u:t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",i=t.nocase?"i":"";let r=e.map((e=>(e=e.map((e=>"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===o?o:e._src)).reduce(((e,t)=>(e[e.length-1]===o&&t===o||e.push(t),e)),[]),e.forEach(((t,i)=>{t===o&&e[i-1]!==o&&(0===i?e.length>1?e[i+1]="(?:\\/|"+n+"\\/)?"+e[i+1]:e[i]=n:i===e.length-1?e[i-1]+="(?:\\/|"+n+")?":(e[i-1]+="(?:\\/|\\/"+n+"\\/)"+e[i+1],e[i+1]=o))})),e.filter((e=>e!==o)).join("/")))).join("|");r="^(?:"+r+")$",this.negate&&(r="^(?!"+r+").*$");try{this.regexp=new RegExp(r,i)}catch(e){this.regexp=!1}return this.regexp}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;"/"!==r.sep&&(e=e.split(r.sep).join("/")),e=e.split(p),this.debug(this.pattern,"split",e);const i=this.set;let o;this.debug(this.pattern,"set",i);for(let t=e.length-1;t>=0&&(o=e[t],!o);t--);for(let r=0;r{const i=Symbol("SemVer ANY");class r{static get ANY(){return i}constructor(e,t){if(t=o(t),e instanceof r){if(e.loose===!!t.loose)return e;e=e.value}u("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===i?this.value="":this.value=this.operator+this.semver.version,u("comp",this)}parse(e){const t=this.options.loose?s[a.COMPARATORLOOSE]:s[a.COMPARATOR],n=e.match(t);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new l(n[2],this.options.loose):this.semver=i}toString(){return this.value}test(e){if(u("Comparator.test",e,this.options.loose),this.semver===i||e===i)return!0;if("string"==typeof e)try{e=new l(e,this.options)}catch(e){return!1}return c(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Comparator is required");if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return""===this.value||new d(e.value,t).test(this.value);if(""===e.operator)return""===e.value||new d(this.value,t).test(e.semver);const n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,s=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=c(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),u=c(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||i||o&&s||a||u}}e.exports=r;const o=n(2893),{re:s,t:a}=n(5765),c=n(7539),u=n(4225),l=n(6376),d=n(6902)},6902:(e,t,n)=>{class i{constructor(e,t){if(t=o(t),e instanceof i)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new i(e.raw,t);if(e instanceof s)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split("||").map((e=>this.parseRange(e.trim()))).filter((e=>e.length)),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){const e=this.set[0];if(this.set=this.set.filter((e=>!g(e[0]))),0===this.set.length)this.set=[e];else if(this.set.length>1)for(const e of this.set)if(1===e.length&&m(e[0])){this.set=[e];break}}this.format()}format(){return this.range=this.set.map((e=>e.join(" ").trim())).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();const t=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=r.get(t);if(n)return n;const i=this.options.loose,o=i?u[l.HYPHENRANGELOOSE]:u[l.HYPHENRANGE];e=e.replace(o,k(this.options.includePrerelease)),a("hyphen replace",e),e=e.replace(u[l.COMPARATORTRIM],d),a("comparator trim",e);let c=(e=(e=(e=e.replace(u[l.TILDETRIM],h)).replace(u[l.CARETTRIM],p)).split(/\s+/).join(" ")).split(" ").map((e=>v(e,this.options))).join(" ").split(/\s+/).map((e=>_(e,this.options)));i&&(c=c.filter((e=>(a("loose invalid filter",e,this.options),!!e.match(u[l.COMPARATORLOOSE]))))),a("range list",c);const m=new Map,f=c.map((e=>new s(e,this.options)));for(const e of f){if(g(e))return[e];m.set(e.value,e)}m.size>1&&m.has("")&&m.delete("");const y=[...m.values()];return r.set(t,y),y}intersects(e,t){if(!(e instanceof i))throw new TypeError("a Range is required");return this.set.some((n=>f(n,t)&&e.set.some((e=>f(e,t)&&n.every((n=>e.every((e=>n.intersects(e,t)))))))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new c(e,this.options)}catch(e){return!1}for(let t=0;t"<0.0.0-0"===e.value,m=e=>""===e.value,f=(e,t)=>{let n=!0;const i=e.slice();let r=i.pop();for(;n&&i.length;)n=i.every((e=>r.intersects(e,t))),r=i.pop();return n},v=(e,t)=>(a("comp",e,t),e=D(e,t),a("caret",e),e=C(e,t),a("tildes",e),e=S(e,t),a("xrange",e),e=T(e,t),a("stars",e),e),y=e=>!e||"x"===e.toLowerCase()||"*"===e,C=(e,t)=>e.trim().split(/\s+/).map((e=>R(e,t))).join(" "),R=(e,t)=>{const n=t.loose?u[l.TILDELOOSE]:u[l.TILDE];return e.replace(n,((t,n,i,r,o)=>{let s;return a("tilde",e,t,n,i,r,o),y(n)?s="":y(i)?s=`>=${n}.0.0 <${+n+1}.0.0-0`:y(r)?s=`>=${n}.${i}.0 <${n}.${+i+1}.0-0`:o?(a("replaceTilde pr",o),s=`>=${n}.${i}.${r}-${o} <${n}.${+i+1}.0-0`):s=`>=${n}.${i}.${r} <${n}.${+i+1}.0-0`,a("tilde return",s),s}))},D=(e,t)=>e.trim().split(/\s+/).map((e=>b(e,t))).join(" "),b=(e,t)=>{a("caret",e,t);const n=t.loose?u[l.CARETLOOSE]:u[l.CARET],i=t.includePrerelease?"-0":"";return e.replace(n,((t,n,r,o,s)=>{let c;return a("caret",e,t,n,r,o,s),y(n)?c="":y(r)?c=`>=${n}.0.0${i} <${+n+1}.0.0-0`:y(o)?c="0"===n?`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`:`>=${n}.${r}.0${i} <${+n+1}.0.0-0`:s?(a("replaceCaret pr",s),c="0"===n?"0"===r?`>=${n}.${r}.${o}-${s} <${n}.${r}.${+o+1}-0`:`>=${n}.${r}.${o}-${s} <${n}.${+r+1}.0-0`:`>=${n}.${r}.${o}-${s} <${+n+1}.0.0-0`):(a("no pr"),c="0"===n?"0"===r?`>=${n}.${r}.${o}${i} <${n}.${r}.${+o+1}-0`:`>=${n}.${r}.${o}${i} <${n}.${+r+1}.0-0`:`>=${n}.${r}.${o} <${+n+1}.0.0-0`),a("caret return",c),c}))},S=(e,t)=>(a("replaceXRanges",e,t),e.split(/\s+/).map((e=>w(e,t))).join(" ")),w=(e,t)=>{e=e.trim();const n=t.loose?u[l.XRANGELOOSE]:u[l.XRANGE];return e.replace(n,((n,i,r,o,s,c)=>{a("xRange",e,n,i,r,o,s,c);const u=y(r),l=u||y(o),d=l||y(s),h=d;return"="===i&&h&&(i=""),c=t.includePrerelease?"-0":"",u?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&h?(l&&(o=0),s=0,">"===i?(i=">=",l?(r=+r+1,o=0,s=0):(o=+o+1,s=0)):"<="===i&&(i="<",l?r=+r+1:o=+o+1),"<"===i&&(c="-0"),n=`${i+r}.${o}.${s}${c}`):l?n=`>=${r}.0.0${c} <${+r+1}.0.0-0`:d&&(n=`>=${r}.${o}.0${c} <${r}.${+o+1}.0-0`),a("xRange return",n),n}))},T=(e,t)=>(a("replaceStars",e,t),e.trim().replace(u[l.STAR],"")),_=(e,t)=>(a("replaceGTE0",e,t),e.trim().replace(u[t.includePrerelease?l.GTE0PRE:l.GTE0],"")),k=e=>(t,n,i,r,o,s,a,c,u,l,d,h,p)=>`${n=y(i)?"":y(r)?`>=${i}.0.0${e?"-0":""}`:y(o)?`>=${i}.${r}.0${e?"-0":""}`:s?`>=${n}`:`>=${n}${e?"-0":""}`} ${c=y(u)?"":y(l)?`<${+u+1}.0.0-0`:y(d)?`<${u}.${+l+1}.0-0`:h?`<=${u}.${l}.${d}-${h}`:e?`<${u}.${l}.${+d+1}-0`:`<=${c}`}`.trim(),P=(e,t,n)=>{for(let n=0;n0){const i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}},6376:(e,t,n)=>{const i=n(4225),{MAX_LENGTH:r,MAX_SAFE_INTEGER:o}=n(3295),{re:s,t:a}=n(5765),c=n(2893),{compareIdentifiers:u}=n(6742);class l{constructor(e,t){if(t=c(t),e instanceof l){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError(`Invalid Version: ${e}`);if(e.length>r)throw new TypeError(`version is longer than ${r} characters`);i("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const n=e.trim().match(t.loose?s[a.LOOSE]:s[a.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[e]&&(this.prerelease[e]++,e=-2);-1===e&&this.prerelease.push(0)}t&&(0===u(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}}e.exports=l},7539:(e,t,n)=>{const i=n(8718),r=n(1194),o=n(1312),s=n(5903),a=n(1544),c=n(2056);e.exports=(e,t,n,u)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return i(e,n,u);case"!=":return r(e,n,u);case">":return o(e,n,u);case">=":return s(e,n,u);case"<":return a(e,n,u);case"<=":return c(e,n,u);default:throw new TypeError(`Invalid operator: ${t}`)}}},6269:(e,t,n)=>{const i=n(6376);e.exports=(e,t,n)=>new i(e,n).compare(new i(t,n))},8718:(e,t,n)=>{const i=n(6269);e.exports=(e,t,n)=>0===i(e,t,n)},1312:(e,t,n)=>{const i=n(6269);e.exports=(e,t,n)=>i(e,t,n)>0},5903:(e,t,n)=>{const i=n(6269);e.exports=(e,t,n)=>i(e,t,n)>=0},1544:(e,t,n)=>{const i=n(6269);e.exports=(e,t,n)=>i(e,t,n)<0},2056:(e,t,n)=>{const i=n(6269);e.exports=(e,t,n)=>i(e,t,n)<=0},1194:(e,t,n)=>{const i=n(6269);e.exports=(e,t,n)=>0!==i(e,t,n)},3959:(e,t,n)=>{const{MAX_LENGTH:i}=n(3295),{re:r,t:o}=n(5765),s=n(6376),a=n(2893);e.exports=(e,t)=>{if(t=a(t),e instanceof s)return e;if("string"!=typeof e)return null;if(e.length>i)return null;if(!(t.loose?r[o.LOOSE]:r[o.FULL]).test(e))return null;try{return new s(e,t)}catch(e){return null}}},5712:(e,t,n)=>{const i=n(6902);e.exports=(e,t,n)=>{try{t=new i(t,n)}catch(e){return!1}return t.test(e)}},3295:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:t,MAX_SAFE_COMPONENT_LENGTH:16}},4225:e=>{const t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=t},6742:e=>{const t=/^[0-9]+$/,n=(e,n)=>{const i=t.test(e),r=t.test(n);return i&&r&&(e=+e,n=+n),e===n?0:i&&!r?-1:r&&!i?1:en(t,e)}},2893:e=>{const t=["includePrerelease","loose","rtl"];e.exports=e=>e?"object"!=typeof e?{loose:!0}:t.filter((t=>e[t])).reduce(((e,t)=>(e[t]=!0,e)),{}):{}},5765:(e,t,n)=>{const{MAX_SAFE_COMPONENT_LENGTH:i}=n(3295),r=n(4225),o=(t=e.exports={}).re=[],s=t.src=[],a=t.t={};let c=0;const u=(e,t,n)=>{const i=c++;r(e,i,t),a[e]=i,s[i]=t,o[i]=new RegExp(t,n?"g":void 0)};u("NUMERICIDENTIFIER","0|[1-9]\\d*"),u("NUMERICIDENTIFIERLOOSE","[0-9]+"),u("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),u("MAINVERSION",`(${s[a.NUMERICIDENTIFIER]})\\.(${s[a.NUMERICIDENTIFIER]})\\.(${s[a.NUMERICIDENTIFIER]})`),u("MAINVERSIONLOOSE",`(${s[a.NUMERICIDENTIFIERLOOSE]})\\.(${s[a.NUMERICIDENTIFIERLOOSE]})\\.(${s[a.NUMERICIDENTIFIERLOOSE]})`),u("PRERELEASEIDENTIFIER",`(?:${s[a.NUMERICIDENTIFIER]}|${s[a.NONNUMERICIDENTIFIER]})`),u("PRERELEASEIDENTIFIERLOOSE",`(?:${s[a.NUMERICIDENTIFIERLOOSE]}|${s[a.NONNUMERICIDENTIFIER]})`),u("PRERELEASE",`(?:-(${s[a.PRERELEASEIDENTIFIER]}(?:\\.${s[a.PRERELEASEIDENTIFIER]})*))`),u("PRERELEASELOOSE",`(?:-?(${s[a.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${s[a.PRERELEASEIDENTIFIERLOOSE]})*))`),u("BUILDIDENTIFIER","[0-9A-Za-z-]+"),u("BUILD",`(?:\\+(${s[a.BUILDIDENTIFIER]}(?:\\.${s[a.BUILDIDENTIFIER]})*))`),u("FULLPLAIN",`v?${s[a.MAINVERSION]}${s[a.PRERELEASE]}?${s[a.BUILD]}?`),u("FULL",`^${s[a.FULLPLAIN]}$`),u("LOOSEPLAIN",`[v=\\s]*${s[a.MAINVERSIONLOOSE]}${s[a.PRERELEASELOOSE]}?${s[a.BUILD]}?`),u("LOOSE",`^${s[a.LOOSEPLAIN]}$`),u("GTLT","((?:<|>)?=?)"),u("XRANGEIDENTIFIERLOOSE",`${s[a.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),u("XRANGEIDENTIFIER",`${s[a.NUMERICIDENTIFIER]}|x|X|\\*`),u("XRANGEPLAIN",`[v=\\s]*(${s[a.XRANGEIDENTIFIER]})(?:\\.(${s[a.XRANGEIDENTIFIER]})(?:\\.(${s[a.XRANGEIDENTIFIER]})(?:${s[a.PRERELEASE]})?${s[a.BUILD]}?)?)?`),u("XRANGEPLAINLOOSE",`[v=\\s]*(${s[a.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[a.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[a.XRANGEIDENTIFIERLOOSE]})(?:${s[a.PRERELEASELOOSE]})?${s[a.BUILD]}?)?)?`),u("XRANGE",`^${s[a.GTLT]}\\s*${s[a.XRANGEPLAIN]}$`),u("XRANGELOOSE",`^${s[a.GTLT]}\\s*${s[a.XRANGEPLAINLOOSE]}$`),u("COERCE",`(^|[^\\d])(\\d{1,${i}})(?:\\.(\\d{1,${i}}))?(?:\\.(\\d{1,${i}}))?(?:$|[^\\d])`),u("COERCERTL",s[a.COERCE],!0),u("LONETILDE","(?:~>?)"),u("TILDETRIM",`(\\s*)${s[a.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",u("TILDE",`^${s[a.LONETILDE]}${s[a.XRANGEPLAIN]}$`),u("TILDELOOSE",`^${s[a.LONETILDE]}${s[a.XRANGEPLAINLOOSE]}$`),u("LONECARET","(?:\\^)"),u("CARETTRIM",`(\\s*)${s[a.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",u("CARET",`^${s[a.LONECARET]}${s[a.XRANGEPLAIN]}$`),u("CARETLOOSE",`^${s[a.LONECARET]}${s[a.XRANGEPLAINLOOSE]}$`),u("COMPARATORLOOSE",`^${s[a.GTLT]}\\s*(${s[a.LOOSEPLAIN]})$|^$`),u("COMPARATOR",`^${s[a.GTLT]}\\s*(${s[a.FULLPLAIN]})$|^$`),u("COMPARATORTRIM",`(\\s*)${s[a.GTLT]}\\s*(${s[a.LOOSEPLAIN]}|${s[a.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",u("HYPHENRANGE",`^\\s*(${s[a.XRANGEPLAIN]})\\s+-\\s+(${s[a.XRANGEPLAIN]})\\s*$`),u("HYPHENRANGELOOSE",`^\\s*(${s[a.XRANGEPLAINLOOSE]})\\s+-\\s+(${s[a.XRANGEPLAINLOOSE]})\\s*$`),u("STAR","(<|>)?=?\\s*\\*"),u("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),u("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},5049:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.showReferences=void 0;const i=n(9496);t.showReferences=async function(e,t,n,r){e&&await i.commands.executeCommand("editor.action.showReferences",i.Uri.parse(t),e.protocol2CodeConverter.asPosition(n),r.map(e.protocol2CodeConverter.asLocation))}},3870:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressType=t.ProgressToken=t.createMessageConnection=t.NullLogger=t.ConnectionOptions=t.ConnectionStrategy=t.AbstractMessageBuffer=t.WriteableStreamMessageWriter=t.AbstractMessageWriter=t.MessageWriter=t.ReadableStreamMessageReader=t.AbstractMessageReader=t.MessageReader=t.SharedArrayReceiverStrategy=t.SharedArraySenderStrategy=t.CancellationToken=t.CancellationTokenSource=t.Emitter=t.Event=t.Disposable=t.LRUCache=t.Touch=t.LinkedMap=t.ParameterStructures=t.NotificationType9=t.NotificationType8=t.NotificationType7=t.NotificationType6=t.NotificationType5=t.NotificationType4=t.NotificationType3=t.NotificationType2=t.NotificationType1=t.NotificationType0=t.NotificationType=t.ErrorCodes=t.ResponseError=t.RequestType9=t.RequestType8=t.RequestType7=t.RequestType6=t.RequestType5=t.RequestType4=t.RequestType3=t.RequestType2=t.RequestType1=t.RequestType0=t.RequestType=t.Message=t.RAL=void 0,t.MessageStrategy=t.CancellationStrategy=t.CancellationSenderStrategy=t.CancellationReceiverStrategy=t.ConnectionError=t.ConnectionErrors=t.LogTraceNotification=t.SetTraceNotification=t.TraceFormat=t.TraceValues=t.Trace=void 0;const i=n(839);Object.defineProperty(t,"Message",{enumerable:!0,get:function(){return i.Message}}),Object.defineProperty(t,"RequestType",{enumerable:!0,get:function(){return i.RequestType}}),Object.defineProperty(t,"RequestType0",{enumerable:!0,get:function(){return i.RequestType0}}),Object.defineProperty(t,"RequestType1",{enumerable:!0,get:function(){return i.RequestType1}}),Object.defineProperty(t,"RequestType2",{enumerable:!0,get:function(){return i.RequestType2}}),Object.defineProperty(t,"RequestType3",{enumerable:!0,get:function(){return i.RequestType3}}),Object.defineProperty(t,"RequestType4",{enumerable:!0,get:function(){return i.RequestType4}}),Object.defineProperty(t,"RequestType5",{enumerable:!0,get:function(){return i.RequestType5}}),Object.defineProperty(t,"RequestType6",{enumerable:!0,get:function(){return i.RequestType6}}),Object.defineProperty(t,"RequestType7",{enumerable:!0,get:function(){return i.RequestType7}}),Object.defineProperty(t,"RequestType8",{enumerable:!0,get:function(){return i.RequestType8}}),Object.defineProperty(t,"RequestType9",{enumerable:!0,get:function(){return i.RequestType9}}),Object.defineProperty(t,"ResponseError",{enumerable:!0,get:function(){return i.ResponseError}}),Object.defineProperty(t,"ErrorCodes",{enumerable:!0,get:function(){return i.ErrorCodes}}),Object.defineProperty(t,"NotificationType",{enumerable:!0,get:function(){return i.NotificationType}}),Object.defineProperty(t,"NotificationType0",{enumerable:!0,get:function(){return i.NotificationType0}}),Object.defineProperty(t,"NotificationType1",{enumerable:!0,get:function(){return i.NotificationType1}}),Object.defineProperty(t,"NotificationType2",{enumerable:!0,get:function(){return i.NotificationType2}}),Object.defineProperty(t,"NotificationType3",{enumerable:!0,get:function(){return i.NotificationType3}}),Object.defineProperty(t,"NotificationType4",{enumerable:!0,get:function(){return i.NotificationType4}}),Object.defineProperty(t,"NotificationType5",{enumerable:!0,get:function(){return i.NotificationType5}}),Object.defineProperty(t,"NotificationType6",{enumerable:!0,get:function(){return i.NotificationType6}}),Object.defineProperty(t,"NotificationType7",{enumerable:!0,get:function(){return i.NotificationType7}}),Object.defineProperty(t,"NotificationType8",{enumerable:!0,get:function(){return i.NotificationType8}}),Object.defineProperty(t,"NotificationType9",{enumerable:!0,get:function(){return i.NotificationType9}}),Object.defineProperty(t,"ParameterStructures",{enumerable:!0,get:function(){return i.ParameterStructures}});const r=n(6184);Object.defineProperty(t,"LinkedMap",{enumerable:!0,get:function(){return r.LinkedMap}}),Object.defineProperty(t,"LRUCache",{enumerable:!0,get:function(){return r.LRUCache}}),Object.defineProperty(t,"Touch",{enumerable:!0,get:function(){return r.Touch}});const o=n(3911);Object.defineProperty(t,"Disposable",{enumerable:!0,get:function(){return o.Disposable}});const s=n(7135);Object.defineProperty(t,"Event",{enumerable:!0,get:function(){return s.Event}}),Object.defineProperty(t,"Emitter",{enumerable:!0,get:function(){return s.Emitter}});const a=n(3881);Object.defineProperty(t,"CancellationTokenSource",{enumerable:!0,get:function(){return a.CancellationTokenSource}}),Object.defineProperty(t,"CancellationToken",{enumerable:!0,get:function(){return a.CancellationToken}});const c=n(8211);Object.defineProperty(t,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return c.SharedArraySenderStrategy}}),Object.defineProperty(t,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return c.SharedArrayReceiverStrategy}});const u=n(6525);Object.defineProperty(t,"MessageReader",{enumerable:!0,get:function(){return u.MessageReader}}),Object.defineProperty(t,"AbstractMessageReader",{enumerable:!0,get:function(){return u.AbstractMessageReader}}),Object.defineProperty(t,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return u.ReadableStreamMessageReader}});const l=n(6654);Object.defineProperty(t,"MessageWriter",{enumerable:!0,get:function(){return l.MessageWriter}}),Object.defineProperty(t,"AbstractMessageWriter",{enumerable:!0,get:function(){return l.AbstractMessageWriter}}),Object.defineProperty(t,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return l.WriteableStreamMessageWriter}});const d=n(5530);Object.defineProperty(t,"AbstractMessageBuffer",{enumerable:!0,get:function(){return d.AbstractMessageBuffer}});const h=n(1343);Object.defineProperty(t,"ConnectionStrategy",{enumerable:!0,get:function(){return h.ConnectionStrategy}}),Object.defineProperty(t,"ConnectionOptions",{enumerable:!0,get:function(){return h.ConnectionOptions}}),Object.defineProperty(t,"NullLogger",{enumerable:!0,get:function(){return h.NullLogger}}),Object.defineProperty(t,"createMessageConnection",{enumerable:!0,get:function(){return h.createMessageConnection}}),Object.defineProperty(t,"ProgressToken",{enumerable:!0,get:function(){return h.ProgressToken}}),Object.defineProperty(t,"ProgressType",{enumerable:!0,get:function(){return h.ProgressType}}),Object.defineProperty(t,"Trace",{enumerable:!0,get:function(){return h.Trace}}),Object.defineProperty(t,"TraceValues",{enumerable:!0,get:function(){return h.TraceValues}}),Object.defineProperty(t,"TraceFormat",{enumerable:!0,get:function(){return h.TraceFormat}}),Object.defineProperty(t,"SetTraceNotification",{enumerable:!0,get:function(){return h.SetTraceNotification}}),Object.defineProperty(t,"LogTraceNotification",{enumerable:!0,get:function(){return h.LogTraceNotification}}),Object.defineProperty(t,"ConnectionErrors",{enumerable:!0,get:function(){return h.ConnectionErrors}}),Object.defineProperty(t,"ConnectionError",{enumerable:!0,get:function(){return h.ConnectionError}}),Object.defineProperty(t,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return h.CancellationReceiverStrategy}}),Object.defineProperty(t,"CancellationSenderStrategy",{enumerable:!0,get:function(){return h.CancellationSenderStrategy}}),Object.defineProperty(t,"CancellationStrategy",{enumerable:!0,get:function(){return h.CancellationStrategy}}),Object.defineProperty(t,"MessageStrategy",{enumerable:!0,get:function(){return h.MessageStrategy}});const p=n(147);t.RAL=p.default},3881:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationTokenSource=t.CancellationToken=void 0;const i=n(147),r=n(7574),o=n(7135);var s;!function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:o.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:o.Event.None}),e.is=function(t){const n=t;return n&&(n===e.None||n===e.Cancelled||r.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}}(s=t.CancellationToken||(t.CancellationToken={}));const a=Object.freeze((function(e,t){const n=(0,i.default)().timer.setTimeout(e.bind(t),0);return{dispose(){n.dispose()}}}));class c{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||(this._emitter=new o.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}t.CancellationTokenSource=class{get token(){return this._token||(this._token=new c),this._token}cancel(){this._token?this._token.cancel():this._token=s.Cancelled}dispose(){this._token?this._token instanceof c&&this._token.dispose():this._token=s.None}}},1343:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createMessageConnection=t.ConnectionOptions=t.MessageStrategy=t.CancellationStrategy=t.CancellationSenderStrategy=t.CancellationReceiverStrategy=t.RequestCancellationReceiverStrategy=t.IdCancellationReceiverStrategy=t.ConnectionStrategy=t.ConnectionError=t.ConnectionErrors=t.LogTraceNotification=t.SetTraceNotification=t.TraceFormat=t.TraceValues=t.Trace=t.NullLogger=t.ProgressType=t.ProgressToken=void 0;const i=n(147),r=n(7574),o=n(839),s=n(6184),a=n(7135),c=n(3881);var u,l,d,h,p,g,m,f,v,y,C,R,D,b,S,w,T,_;!function(e){e.type=new o.NotificationType("$/cancelRequest")}(u||(u={})),function(e){e.is=function(e){return"string"==typeof e||"number"==typeof e}}(l=t.ProgressToken||(t.ProgressToken={})),function(e){e.type=new o.NotificationType("$/progress")}(d||(d={})),t.ProgressType=class{constructor(){}},function(e){e.is=function(e){return r.func(e)}}(h||(h={})),t.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}}),function(e){e[e.Off=0]="Off",e[e.Messages=1]="Messages",e[e.Compact=2]="Compact",e[e.Verbose=3]="Verbose"}(p=t.Trace||(t.Trace={})),(_=t.TraceValues||(t.TraceValues={})).Off="off",_.Messages="messages",_.Compact="compact",_.Verbose="verbose",function(e){e.fromString=function(t){if(!r.string(t))return e.Off;switch(t=t.toLowerCase()){case"off":default:return e.Off;case"messages":return e.Messages;case"compact":return e.Compact;case"verbose":return e.Verbose}},e.toString=function(t){switch(t){case e.Off:return"off";case e.Messages:return"messages";case e.Compact:return"compact";case e.Verbose:return"verbose";default:return"off"}}}(p=t.Trace||(t.Trace={})),function(e){e.Text="text",e.JSON="json"}(t.TraceFormat||(t.TraceFormat={})),function(e){e.fromString=function(t){return r.string(t)&&"json"===(t=t.toLowerCase())?e.JSON:e.Text}}(g=t.TraceFormat||(t.TraceFormat={})),function(e){e.type=new o.NotificationType("$/setTrace")}(m=t.SetTraceNotification||(t.SetTraceNotification={})),function(e){e.type=new o.NotificationType("$/logTrace")}(f=t.LogTraceNotification||(t.LogTraceNotification={})),function(e){e[e.Closed=1]="Closed",e[e.Disposed=2]="Disposed",e[e.AlreadyListening=3]="AlreadyListening"}(v=t.ConnectionErrors||(t.ConnectionErrors={}));class k extends Error{constructor(e,t){super(t),this.code=e,Object.setPrototypeOf(this,k.prototype)}}t.ConnectionError=k,function(e){e.is=function(e){const t=e;return t&&r.func(t.cancelUndispatched)}}(y=t.ConnectionStrategy||(t.ConnectionStrategy={})),function(e){e.is=function(e){const t=e;return t&&(void 0===t.kind||"id"===t.kind)&&r.func(t.createCancellationTokenSource)&&(void 0===t.dispose||r.func(t.dispose))}}(C=t.IdCancellationReceiverStrategy||(t.IdCancellationReceiverStrategy={})),function(e){e.is=function(e){const t=e;return t&&"request"===t.kind&&r.func(t.createCancellationTokenSource)&&(void 0===t.dispose||r.func(t.dispose))}}(R=t.RequestCancellationReceiverStrategy||(t.RequestCancellationReceiverStrategy={})),function(e){e.Message=Object.freeze({createCancellationTokenSource:e=>new c.CancellationTokenSource}),e.is=function(e){return C.is(e)||R.is(e)}}(D=t.CancellationReceiverStrategy||(t.CancellationReceiverStrategy={})),function(e){e.Message=Object.freeze({sendCancellation:(e,t)=>e.sendNotification(u.type,{id:t}),cleanup(e){}}),e.is=function(e){const t=e;return t&&r.func(t.sendCancellation)&&r.func(t.cleanup)}}(b=t.CancellationSenderStrategy||(t.CancellationSenderStrategy={})),function(e){e.Message=Object.freeze({receiver:D.Message,sender:b.Message}),e.is=function(e){const t=e;return t&&D.is(t.receiver)&&b.is(t.sender)}}(S=t.CancellationStrategy||(t.CancellationStrategy={})),function(e){e.is=function(e){const t=e;return t&&r.func(t.handleMessage)}}(w=t.MessageStrategy||(t.MessageStrategy={})),(t.ConnectionOptions||(t.ConnectionOptions={})).is=function(e){const t=e;return t&&(S.is(t.cancellationStrategy)||y.is(t.connectionStrategy)||w.is(t.messageStrategy))},function(e){e[e.New=1]="New",e[e.Listening=2]="Listening",e[e.Closed=3]="Closed",e[e.Disposed=4]="Disposed"}(T||(T={})),t.createMessageConnection=function(e,n,y,R){const D=void 0!==y?y:t.NullLogger;let b=0,_=0,P=0;const x="2.0";let E;const O=new Map;let q;const F=new Map,N=new Map;let I,M,L=new s.LinkedMap,A=new Map,j=new Set,$=new Map,H=p.Off,W=g.Text,K=T.New;const U=new a.Emitter,z=new a.Emitter,V=new a.Emitter,G=new a.Emitter,B=new a.Emitter,X=R&&R.cancellationStrategy?R.cancellationStrategy:S.Message;function J(e){if(null===e)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+e.toString()}function Q(e){}function Y(){return K===T.Listening}function Z(){return K===T.Closed}function ee(){return K===T.Disposed}function te(){K!==T.New&&K!==T.Listening||(K=T.Closed,z.fire(void 0))}function ne(){I||0===L.size||(I=(0,i.default)().timer.setImmediate((()=>{I=void 0,function(){if(0===L.size)return;const e=L.shift();try{const t=R?.messageStrategy;w.is(t)?t.handleMessage(e,ie):ie(e)}finally{ne()}}()})))}function ie(e){o.Message.isRequest(e)?function(e){if(ee())return;function t(t,i,r){const s={jsonrpc:x,id:e.id};t instanceof o.ResponseError?s.error=t.toJson():s.result=void 0===t?null:t,se(s,i,r),n.write(s).catch((()=>D.error("Sending response failed.")))}function i(t,i,r){const o={jsonrpc:x,id:e.id,error:t.toJson()};se(o,i,r),n.write(o).catch((()=>D.error("Sending response failed.")))}!function(e){if(H!==p.Off&&M)if(W===g.Text){let t;H!==p.Verbose&&H!==p.Compact||!e.params||(t=`Params: ${oe(e.params)}\n\n`),M.log(`Received request '${e.method} - (${e.id})'.`,t)}else ce("receive-request",e)}(e);const s=O.get(e.method);let a,c;s&&(a=s.type,c=s.handler);const u=Date.now();if(c||E){const s=e.id??String(Date.now()),l=C.is(X.receiver)?X.receiver.createCancellationTokenSource(s):X.receiver.createCancellationTokenSource(e);null!==e.id&&j.has(e.id)&&l.cancel(),null!==e.id&&$.set(s,l);try{let d;if(c)if(void 0===e.params){if(void 0!==a&&0!==a.numberOfParams)return void i(new o.ResponseError(o.ErrorCodes.InvalidParams,`Request ${e.method} defines ${a.numberOfParams} params but received none.`),e.method,u);d=c(l.token)}else if(Array.isArray(e.params)){if(void 0!==a&&a.parameterStructures===o.ParameterStructures.byName)return void i(new o.ResponseError(o.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by name but received parameters by position`),e.method,u);d=c(...e.params,l.token)}else{if(void 0!==a&&a.parameterStructures===o.ParameterStructures.byPosition)return void i(new o.ResponseError(o.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by position but received parameters by name`),e.method,u);d=c(e.params,l.token)}else E&&(d=E(e.method,e.params,l.token));const h=d;d?h.then?h.then((n=>{$.delete(s),t(n,e.method,u)}),(t=>{$.delete(s),t instanceof o.ResponseError?i(t,e.method,u):t&&r.string(t.message)?i(new o.ResponseError(o.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${t.message}`),e.method,u):i(new o.ResponseError(o.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,u)})):($.delete(s),t(d,e.method,u)):($.delete(s),function(t,i,r){void 0===t&&(t=null);const o={jsonrpc:x,id:e.id,result:t};se(o,i,r),n.write(o).catch((()=>D.error("Sending response failed.")))}(d,e.method,u))}catch(n){$.delete(s),n instanceof o.ResponseError?t(n,e.method,u):n&&r.string(n.message)?i(new o.ResponseError(o.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${n.message}`),e.method,u):i(new o.ResponseError(o.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,u)}}else i(new o.ResponseError(o.ErrorCodes.MethodNotFound,`Unhandled method ${e.method}`),e.method,u)}(e):o.Message.isNotification(e)?function(e){if(ee())return;let t,n;if(e.method===u.type.method){const t=e.params.id;return j.delete(t),void ae(e)}{const i=F.get(e.method);i&&(n=i.handler,t=i.type)}if(n||q)try{if(ae(e),n)if(void 0===e.params)void 0!==t&&0!==t.numberOfParams&&t.parameterStructures!==o.ParameterStructures.byName&&D.error(`Notification ${e.method} defines ${t.numberOfParams} params but received none.`),n();else if(Array.isArray(e.params)){const i=e.params;e.method===d.type.method&&2===i.length&&l.is(i[0])?n({token:i[0],value:i[1]}):(void 0!==t&&(t.parameterStructures===o.ParameterStructures.byName&&D.error(`Notification ${e.method} defines parameters by name but received parameters by position`),t.numberOfParams!==e.params.length&&D.error(`Notification ${e.method} defines ${t.numberOfParams} params but received ${i.length} arguments`)),n(...i))}else void 0!==t&&t.parameterStructures===o.ParameterStructures.byPosition&&D.error(`Notification ${e.method} defines parameters by position but received parameters by name`),n(e.params);else q&&q(e.method,e.params)}catch(t){t.message?D.error(`Notification handler '${e.method}' failed with message: ${t.message}`):D.error(`Notification handler '${e.method}' failed unexpectedly.`)}else V.fire(e)}(e):o.Message.isResponse(e)?function(e){if(!ee())if(null===e.id)e.error?D.error(`Received response message without id: Error is: \n${JSON.stringify(e.error,void 0,4)}`):D.error("Received response message without id. No further error information provided.");else{const t=e.id,n=A.get(t);if(function(e,t){if(H!==p.Off&&M)if(W===g.Text){let n;if(H!==p.Verbose&&H!==p.Compact||(e.error&&e.error.data?n=`Error data: ${oe(e.error.data)}\n\n`:e.result?n=`Result: ${oe(e.result)}\n\n`:void 0===e.error&&(n="No result returned.\n\n")),t){const i=e.error?` Request failed: ${e.error.message} (${e.error.code}).`:"";M.log(`Received response '${t.method} - (${e.id})' in ${Date.now()-t.timerStart}ms.${i}`,n)}else M.log(`Received response ${e.id} without active response promise.`,n)}else ce("receive-response",e)}(e,n),void 0!==n){A.delete(t);try{if(e.error){const t=e.error;n.reject(new o.ResponseError(t.code,t.message,t.data))}else{if(void 0===e.result)throw new Error("Should never happen.");n.resolve(e.result)}}catch(e){e.message?D.error(`Response handler '${n.method}' failed with message: ${e.message}`):D.error(`Response handler '${n.method}' failed unexpectedly.`)}}}}(e):function(e){if(!e)return void D.error("Received empty message.");D.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(e,null,4)}`);const t=e;if(r.string(t.id)||r.number(t.id)){const e=t.id,n=A.get(e);n&&n.reject(new Error("The received response has neither a result nor an error property."))}}(e)}e.onClose(te),e.onError((function(e){U.fire([e,void 0,void 0])})),n.onClose(te),n.onError((function(e){U.fire(e)}));const re=e=>{try{if(o.Message.isNotification(e)&&e.method===u.type.method){const t=e.params.id,i=J(t),r=L.get(i);if(o.Message.isRequest(r)){const o=R?.connectionStrategy,s=o&&o.cancelUndispatched?o.cancelUndispatched(r,Q):void 0;if(s&&(void 0!==s.error||void 0!==s.result))return L.delete(i),$.delete(t),s.id=r.id,se(s,e.method,Date.now()),void n.write(s).catch((()=>D.error("Sending response for canceled message failed.")))}const s=$.get(t);if(void 0!==s)return s.cancel(),void ae(e);j.add(t)}!function(e,t){var n;o.Message.isRequest(t)?e.set(J(t.id),t):o.Message.isResponse(t)?e.set(null===(n=t.id)?"res-unknown-"+(++P).toString():"res-"+n.toString(),t):e.set("not-"+(++_).toString(),t)}(L,e)}finally{ne()}};function oe(e){if(null!=e)switch(H){case p.Verbose:return JSON.stringify(e,null,4);case p.Compact:return JSON.stringify(e);default:return}}function se(e,t,n){if(H!==p.Off&&M)if(W===g.Text){let i;H!==p.Verbose&&H!==p.Compact||(e.error&&e.error.data?i=`Error data: ${oe(e.error.data)}\n\n`:e.result?i=`Result: ${oe(e.result)}\n\n`:void 0===e.error&&(i="No result returned.\n\n")),M.log(`Sending response '${t} - (${e.id})'. Processing request took ${Date.now()-n}ms`,i)}else ce("send-response",e)}function ae(e){if(H!==p.Off&&M&&e.method!==f.type.method)if(W===g.Text){let t;H!==p.Verbose&&H!==p.Compact||(t=e.params?`Params: ${oe(e.params)}\n\n`:"No parameters provided.\n\n"),M.log(`Received notification '${e.method}'.`,t)}else ce("receive-notification",e)}function ce(e,t){if(!M||H===p.Off)return;const n={isLSPMessage:!0,type:e,message:t,timestamp:Date.now()};M.log(n)}function ue(){if(Z())throw new k(v.Closed,"Connection is closed.");if(ee())throw new k(v.Disposed,"Connection is disposed.")}function le(e){return void 0===e?null:e}function de(e){return null===e?void 0:e}function he(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}function pe(e,t){switch(e){case o.ParameterStructures.auto:return he(t)?de(t):[le(t)];case o.ParameterStructures.byName:if(!he(t))throw new Error("Received parameters by name but param is not an object literal.");return de(t);case o.ParameterStructures.byPosition:return[le(t)];default:throw new Error(`Unknown parameter structure ${e.toString()}`)}}function ge(e,t){let n;const i=e.numberOfParams;switch(i){case 0:n=void 0;break;case 1:n=pe(e.parameterStructures,t[0]);break;default:n=[];for(let e=0;e{let i,s;if(ue(),r.string(e)){i=e;const n=t[0];let r=0,a=o.ParameterStructures.auto;o.ParameterStructures.is(n)&&(r=1,a=n);let c=t.length;const u=c-r;switch(u){case 0:s=void 0;break;case 1:s=pe(a,t[r]);break;default:if(a===o.ParameterStructures.byName)throw new Error(`Received ${u} parameters for 'by Name' notification parameter structure.`);s=t.slice(r,c).map((e=>le(e)))}}else{const n=t;i=e.method,s=ge(e,n)}const a={jsonrpc:x,method:i,params:s};return function(e){if(H!==p.Off&&M)if(W===g.Text){let t;H!==p.Verbose&&H!==p.Compact||(t=e.params?`Params: ${oe(e.params)}\n\n`:"No parameters provided.\n\n"),M.log(`Sending notification '${e.method}'.`,t)}else ce("send-notification",e)}(a),n.write(a).catch((e=>{throw D.error("Sending notification failed."),e}))},onNotification:(e,t)=>{let n;return ue(),r.func(e)?q=e:t&&(r.string(e)?(n=e,F.set(e,{type:void 0,handler:t})):(n=e.method,F.set(e.method,{type:e,handler:t}))),{dispose:()=>{void 0!==n?F.delete(n):q=void 0}}},onProgress:(e,t,n)=>{if(N.has(t))throw new Error(`Progress handler for token ${t} already registered`);return N.set(t,n),{dispose:()=>{N.delete(t)}}},sendProgress:(e,t,n)=>me.sendNotification(d.type,{token:t,value:n}),onUnhandledProgress:G.event,sendRequest:(e,...t)=>{let i,s,a;if(ue(),function(){if(!Y())throw new Error("Call listen() first.")}(),r.string(e)){i=e;const n=t[0],r=t[t.length-1];let u=0,l=o.ParameterStructures.auto;o.ParameterStructures.is(n)&&(u=1,l=n);let d=t.length;c.CancellationToken.is(r)&&(d-=1,a=r);const h=d-u;switch(h){case 0:s=void 0;break;case 1:s=pe(l,t[u]);break;default:if(l===o.ParameterStructures.byName)throw new Error(`Received ${h} parameters for 'by Name' request parameter structure.`);s=t.slice(u,d).map((e=>le(e)))}}else{const n=t;i=e.method,s=ge(e,n);const r=e.numberOfParams;a=c.CancellationToken.is(n[r])?n[r]:void 0}const u=b++;let l;a&&(l=a.onCancellationRequested((()=>{const e=X.sender.sendCancellation(me,u);return void 0===e?(D.log(`Received no promise from cancellation strategy when cancelling id ${u}`),Promise.resolve()):e.catch((()=>{D.log(`Sending cancellation messages for id ${u} failed`)}))})));const d={jsonrpc:x,id:u,method:i,params:s};return function(e){if(H!==p.Off&&M)if(W===g.Text){let t;H!==p.Verbose&&H!==p.Compact||!e.params||(t=`Params: ${oe(e.params)}\n\n`),M.log(`Sending request '${e.method} - (${e.id})'.`,t)}else ce("send-request",e)}(d),"function"==typeof X.sender.enableCancellation&&X.sender.enableCancellation(d),new Promise((async(e,t)=>{const r={method:i,timerStart:Date.now(),resolve:t=>{e(t),X.sender.cleanup(u),l?.dispose()},reject:e=>{t(e),X.sender.cleanup(u),l?.dispose()}};try{await n.write(d),A.set(u,r)}catch(e){throw D.error("Sending request failed."),r.reject(new o.ResponseError(o.ErrorCodes.MessageWriteError,e.message?e.message:"Unknown reason")),e}}))},onRequest:(e,t)=>{ue();let n=null;return h.is(e)?(n=void 0,E=e):r.string(e)?(n=null,void 0!==t&&(n=e,O.set(e,{handler:t,type:void 0}))):void 0!==t&&(n=e.method,O.set(e.method,{type:e,handler:t})),{dispose:()=>{null!==n&&(void 0!==n?O.delete(n):E=void 0)}}},hasPendingResponse:()=>A.size>0,trace:async(e,t,n)=>{let i=!1,o=g.Text;void 0!==n&&(r.boolean(n)?i=n:(i=n.sendNotification||!1,o=n.traceFormat||g.Text)),H=e,W=o,M=H===p.Off?void 0:t,!i||Z()||ee()||await me.sendNotification(m.type,{value:p.toString(e)})},onError:U.event,onClose:z.event,onUnhandledNotification:V.event,onDispose:B.event,end:()=>{n.end()},dispose:()=>{if(ee())return;K=T.Disposed,B.fire(void 0);const t=new o.ResponseError(o.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(const e of A.values())e.reject(t);A=new Map,$=new Map,j=new Set,L=new s.LinkedMap,r.func(n.dispose)&&n.dispose(),r.func(e.dispose)&&e.dispose()},listen:()=>{ue(),function(){if(Y())throw new k(v.AlreadyListening,"Connection is already listening")}(),K=T.Listening,e.listen(re)},inspect:()=>{(0,i.default)().console.log("inspect")}};return me.onNotification(f.type,(e=>{if(H===p.Off||!M)return;const t=H===p.Verbose||H===p.Compact;M.log(e.message,t?e.verbose:void 0)})),me.onNotification(d.type,(e=>{const t=N.get(e.token);t?t(e.value):G.fire(e)})),me}},3911:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Disposable=void 0,(t.Disposable||(t.Disposable={})).create=function(e){return{dispose:e}}},7135:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=t.Event=void 0;const i=n(147);!function(e){const t={dispose(){}};e.None=function(){return t}}(t.Event||(t.Event={}));class r{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let i=0,r=this._callbacks.length;i{this._callbacks||(this._callbacks=new r),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);const i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=o._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}t.Emitter=o,o._noop=function(){}},7574:(e,t)=>{"use strict";function n(e){return"string"==typeof e||e instanceof String}function i(e){return Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=function(e){return"function"==typeof e},t.array=i,t.stringArray=function(e){return i(e)&&e.every((e=>n(e)))}},6184:(e,t)=>{"use strict";var n,i;Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=t.LinkedMap=t.Touch=void 0,function(e){e.None=0,e.First=1,e.AsOld=e.First,e.Last=2,e.AsNew=e.Last}(i=t.Touch||(t.Touch={}));class r{constructor(){this[n]="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(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,t=i.None){const n=this._map.get(e);if(n)return t!==i.None&&this.touch(n,t),n.value}set(e,t,n=i.None){let r=this._map.get(e);if(r)r.value=t,n!==i.None&&this.touch(r,n);else{switch(r={key:e,value:t,next:void 0,previous:void 0},n){case i.None:this.addItemLast(r);break;case i.First:this.addItemFirst(r);break;case i.Last:default:this.addItemLast(r)}this._map.set(e,r),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const n=this._state;let i=this._head;for(;i;){if(t?e.bind(t)(i.value,i.key,this):e(i.value,i.key,this),this._state!==n)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){const e=this._state;let t=this._head;const n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){const e={value:t.key,done:!1};return t=t.next,e}return{value:void 0,done:!0}}};return n}values(){const e=this._state;let t=this._head;const n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){const e={value:t.value,done:!1};return t=t.next,e}return{value:void 0,done:!0}}};return n}entries(){const e=this._state;let t=this._head;const n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){const e={value:[t.key,t.value],done:!1};return t=t.next,e}return{value:void 0,done:!0}}};return n}[(n=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(0===e)return void this.clear();let t=this._head,n=this.size;for(;t&&n>e;)this._map.delete(t.key),t=t.next,n--;this._head=t,this._size=n,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(this._head||this._tail){if(!this._head)throw new Error("Invalid list");e.next=this._head,this._head.previous=e}else this._tail=e;this._head=e,this._state++}addItemLast(e){if(this._head||this._tail){if(!this._tail)throw new Error("Invalid list");e.previous=this._tail,this._tail.next=e}else this._head=e;this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,n=e.previous;if(!t||!n)throw new Error("Invalid list");t.previous=n,n.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(t===i.First||t===i.Last)if(t===i.First){if(e===this._head)return;const t=e.next,n=e.previous;e===this._tail?(n.next=void 0,this._tail=n):(t.previous=n,n.next=t),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===i.Last){if(e===this._tail)return;const t=e.next,n=e.previous;e===this._head?(t.previous=void 0,this._head=t):(t.previous=n,n.next=t),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}toJSON(){const e=[];return this.forEach(((t,n)=>{e.push([n,t])})),e}fromJSON(e){this.clear();for(const[t,n]of e)this.set(t,n)}}t.LinkedMap=r,t.LRUCache=class extends r{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=i.AsNew){return super.get(e,t)}peek(e){return super.get(e,i.None)}set(e,t){return super.set(e,t,i.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}},5530:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractMessageBuffer=void 0,t.AbstractMessageBuffer=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){const t="string"==typeof e?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(0===this._chunks.length)return;let t=0,n=0,i=0,r=0;e:for(;nthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){const t=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(t)}if(this._chunks[0].byteLength>e){const t=this._chunks[0],n=this.asNative(t,e);return this._chunks[0]=t.slice(e),this._totalLength-=e,n}const t=this.allocNative(e);let n=0;for(;e>0;){const i=this._chunks[0];if(i.byteLength>e){const r=i.slice(0,e);t.set(r,n),n+=e,this._chunks[0]=i.slice(e),this._totalLength-=e,e-=e}else t.set(i,n),n+=i.byteLength,this._chunks.shift(),this._totalLength-=i.byteLength,e-=i.byteLength}return t}}},6525:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReadableStreamMessageReader=t.AbstractMessageReader=t.MessageReader=void 0;const i=n(147),r=n(7574),o=n(7135),s=n(142);var a;(t.MessageReader||(t.MessageReader={})).is=function(e){let t=e;return t&&r.func(t.listen)&&r.func(t.dispose)&&r.func(t.onError)&&r.func(t.onClose)&&r.func(t.onPartialMessage)};class c{constructor(){this.errorEmitter=new o.Emitter,this.closeEmitter=new o.Emitter,this.partialMessageEmitter=new o.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${r.string(e.message)?e.message:"unknown"}`)}}t.AbstractMessageReader=c,function(e){e.fromOptions=function(e){let t,n;const r=new Map;let o;const s=new Map;if(void 0===e||"string"==typeof e)t=e??"utf-8";else{if(t=e.charset??"utf-8",void 0!==e.contentDecoder&&(n=e.contentDecoder,r.set(n.name,n)),void 0!==e.contentDecoders)for(const t of e.contentDecoders)r.set(t.name,t);if(void 0!==e.contentTypeDecoder&&(o=e.contentTypeDecoder,s.set(o.name,o)),void 0!==e.contentTypeDecoders)for(const t of e.contentTypeDecoders)s.set(t.name,t)}return void 0===o&&(o=(0,i.default)().applicationJson.decoder,s.set(o.name,o)),{charset:t,contentDecoder:n,contentDecoders:r,contentTypeDecoder:o,contentTypeDecoders:s}}}(a||(a={})),t.ReadableStreamMessageReader=class extends c{constructor(e,t){super(),this.readable=e,this.options=a.fromOptions(t),this.buffer=(0,i.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new s.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;const t=this.readable.onData((e=>{this.onData(e)}));return this.readable.onError((e=>this.fireError(e))),this.readable.onClose((()=>this.fireClose())),t}onData(e){for(this.buffer.append(e);;){if(-1===this.nextMessageLength){const e=this.buffer.tryReadHeaders(!0);if(!e)return;const t=e.get("content-length");if(!t)return void this.fireError(new Error("Header must provide a Content-Length property."));const n=parseInt(t);if(isNaN(n))return void this.fireError(new Error("Content-Length value must be a number."));this.nextMessageLength=n}const e=this.buffer.tryReadBody(this.nextMessageLength);if(void 0===e)return void this.setPartialMessageTimer();this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock((async()=>{const t=void 0!==this.options.contentDecoder?await this.options.contentDecoder.decode(e):e,n=await this.options.contentTypeDecoder.decode(t,this.options);this.callback(n)})).catch((e=>{this.fireError(e)}))}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),this._partialMessageTimeout<=0||(this.partialMessageTimer=(0,i.default)().timer.setTimeout(((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())}),this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}}},6654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WriteableStreamMessageWriter=t.AbstractMessageWriter=t.MessageWriter=void 0;const i=n(147),r=n(7574),o=n(142),s=n(7135);var a;(t.MessageWriter||(t.MessageWriter={})).is=function(e){let t=e;return t&&r.func(t.dispose)&&r.func(t.onClose)&&r.func(t.onError)&&r.func(t.write)};class c{constructor(){this.errorEmitter=new s.Emitter,this.closeEmitter=new s.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,n){this.errorEmitter.fire([this.asError(e),t,n])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${r.string(e.message)?e.message:"unknown"}`)}}t.AbstractMessageWriter=c,function(e){e.fromOptions=function(e){return void 0===e||"string"==typeof e?{charset:e??"utf-8",contentTypeEncoder:(0,i.default)().applicationJson.encoder}:{charset:e.charset??"utf-8",contentEncoder:e.contentEncoder,contentTypeEncoder:e.contentTypeEncoder??(0,i.default)().applicationJson.encoder}}}(a||(a={})),t.WriteableStreamMessageWriter=class extends c{constructor(e,t){super(),this.writable=e,this.options=a.fromOptions(t),this.errorCount=0,this.writeSemaphore=new o.Semaphore(1),this.writable.onError((e=>this.fireError(e))),this.writable.onClose((()=>this.fireClose()))}async write(e){return this.writeSemaphore.lock((async()=>this.options.contentTypeEncoder.encode(e,this.options).then((e=>void 0!==this.options.contentEncoder?this.options.contentEncoder.encode(e):e)).then((t=>{const n=[];return n.push("Content-Length: ",t.byteLength.toString(),"\r\n"),n.push("\r\n"),this.doWrite(e,n,t)}),(e=>{throw this.fireError(e),e}))))}async doWrite(e,t,n){try{return await this.writable.write(t.join(""),"ascii"),this.writable.write(n)}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}}},839:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Message=t.NotificationType9=t.NotificationType8=t.NotificationType7=t.NotificationType6=t.NotificationType5=t.NotificationType4=t.NotificationType3=t.NotificationType2=t.NotificationType1=t.NotificationType0=t.NotificationType=t.RequestType9=t.RequestType8=t.RequestType7=t.RequestType6=t.RequestType5=t.RequestType4=t.RequestType3=t.RequestType2=t.RequestType1=t.RequestType=t.RequestType0=t.AbstractMessageSignature=t.ParameterStructures=t.ResponseError=t.ErrorCodes=void 0;const i=n(7574);var r,o;!function(e){e.ParseError=-32700,e.InvalidRequest=-32600,e.MethodNotFound=-32601,e.InvalidParams=-32602,e.InternalError=-32603,e.jsonrpcReservedErrorRangeStart=-32099,e.serverErrorStart=-32099,e.MessageWriteError=-32099,e.MessageReadError=-32098,e.PendingResponseRejected=-32097,e.ConnectionInactive=-32096,e.ServerNotInitialized=-32002,e.UnknownErrorCode=-32001,e.jsonrpcReservedErrorRangeEnd=-32e3,e.serverErrorEnd=-32e3}(r=t.ErrorCodes||(t.ErrorCodes={}));class s extends Error{constructor(e,t,n){super(t),this.code=i.number(e)?e:r.UnknownErrorCode,this.data=n,Object.setPrototypeOf(this,s.prototype)}toJson(){const e={code:this.code,message:this.message};return void 0!==this.data&&(e.data=this.data),e}}t.ResponseError=s;class a{constructor(e){this.kind=e}static is(e){return e===a.auto||e===a.byName||e===a.byPosition}toString(){return this.kind}}t.ParameterStructures=a,a.auto=new a("auto"),a.byPosition=new a("byPosition"),a.byName=new a("byName");class c{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return a.auto}}t.AbstractMessageSignature=c,t.RequestType0=class extends c{constructor(e){super(e,0)}},t.RequestType=class extends c{constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},t.RequestType1=class extends c{constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},t.RequestType2=class extends c{constructor(e){super(e,2)}},t.RequestType3=class extends c{constructor(e){super(e,3)}},t.RequestType4=class extends c{constructor(e){super(e,4)}},t.RequestType5=class extends c{constructor(e){super(e,5)}},t.RequestType6=class extends c{constructor(e){super(e,6)}},t.RequestType7=class extends c{constructor(e){super(e,7)}},t.RequestType8=class extends c{constructor(e){super(e,8)}},t.RequestType9=class extends c{constructor(e){super(e,9)}},t.NotificationType=class extends c{constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},t.NotificationType0=class extends c{constructor(e){super(e,0)}},t.NotificationType1=class extends c{constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}},t.NotificationType2=class extends c{constructor(e){super(e,2)}},t.NotificationType3=class extends c{constructor(e){super(e,3)}},t.NotificationType4=class extends c{constructor(e){super(e,4)}},t.NotificationType5=class extends c{constructor(e){super(e,5)}},t.NotificationType6=class extends c{constructor(e){super(e,6)}},t.NotificationType7=class extends c{constructor(e){super(e,7)}},t.NotificationType8=class extends c{constructor(e){super(e,8)}},t.NotificationType9=class extends c{constructor(e){super(e,9)}},(o=t.Message||(t.Message={})).isRequest=function(e){const t=e;return t&&i.string(t.method)&&(i.string(t.id)||i.number(t.id))},o.isNotification=function(e){const t=e;return t&&i.string(t.method)&&void 0===e.id},o.isResponse=function(e){const t=e;return t&&(void 0!==t.result||!!t.error)&&(i.string(t.id)||i.number(t.id)||null===t.id)}},147:(e,t)=>{"use strict";let n;function i(){if(void 0===n)throw new Error("No runtime abstraction layer installed");return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.install=function(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");n=e}}(i||(i={})),t.default=i},142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Semaphore=void 0;const i=n(147);t.Semaphore=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise(((t,n)=>{this._waiting.push({thunk:e,resolve:t,reject:n}),this.runNext()}))}get active(){return this._active}runNext(){0!==this._waiting.length&&this._active!==this._capacity&&(0,i.default)().timer.setImmediate((()=>this.doRunNext()))}doRunNext(){if(0===this._waiting.length||this._active===this._capacity)return;const e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{const t=e.thunk();t instanceof Promise?t.then((t=>{this._active--,e.resolve(t),this.runNext()}),(t=>{this._active--,e.reject(t),this.runNext()})):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}}},8211:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SharedArrayReceiverStrategy=t.SharedArraySenderStrategy=void 0;const i=n(3881);var r;!function(e){e.Continue=0,e.Cancelled=1}(r||(r={})),t.SharedArraySenderStrategy=class{constructor(){this.buffers=new Map}enableCancellation(e){if(null===e.id)return;const t=new SharedArrayBuffer(4);new Int32Array(t,0,1)[0]=r.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){const n=this.buffers.get(t);if(void 0===n)return;const i=new Int32Array(n,0,1);Atomics.store(i,0,r.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};class o{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===r.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}}class s{constructor(e){this.token=new o(e)}cancel(){}dispose(){}}t.SharedArrayReceiverStrategy=class{constructor(){this.kind="request"}createCancellationTokenSource(e){const t=e.$cancellationData;return void 0===t?new i.CancellationTokenSource:new s(t)}}},4389:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.createMessageConnection=t.createServerSocketTransport=t.createClientSocketTransport=t.createServerPipeTransport=t.createClientPipeTransport=t.generateRandomPipeName=t.StreamMessageWriter=t.StreamMessageReader=t.SocketMessageWriter=t.SocketMessageReader=t.PortMessageWriter=t.PortMessageReader=t.IPCMessageWriter=t.IPCMessageReader=void 0;const o=n(3034);o.default.install();const s=n(1017),a=n(2037),c=n(6113),u=n(1808),l=n(3870);r(n(3870),t);class d extends l.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on("error",(e=>this.fireError(e))),t.on("close",(()=>this.fireClose()))}listen(e){return this.process.on("message",e),l.Disposable.create((()=>this.process.off("message",e)))}}t.IPCMessageReader=d;class h extends l.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;const t=this.process;t.on("error",(e=>this.fireError(e))),t.on("close",(()=>this.fireClose))}write(e){try{return"function"==typeof this.process.send&&this.process.send(e,void 0,void 0,(t=>{t?(this.errorCount++,this.handleError(t,e)):this.errorCount=0})),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}}t.IPCMessageWriter=h;class p extends l.AbstractMessageReader{constructor(e){super(),this.onData=new l.Emitter,e.on("close",(()=>this.fireClose)),e.on("error",(e=>this.fireError(e))),e.on("message",(e=>{this.onData.fire(e)}))}listen(e){return this.onData.event(e)}}t.PortMessageReader=p;class g extends l.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on("close",(()=>this.fireClose())),e.on("error",(e=>this.fireError(e)))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}}t.PortMessageWriter=g;class m extends l.ReadableStreamMessageReader{constructor(e,t="utf-8"){super((0,o.default)().stream.asReadableStream(e),t)}}t.SocketMessageReader=m;class f extends l.WriteableStreamMessageWriter{constructor(e,t){super((0,o.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}}t.SocketMessageWriter=f;class v extends l.ReadableStreamMessageReader{constructor(e,t){super((0,o.default)().stream.asReadableStream(e),t)}}t.StreamMessageReader=v;class y extends l.WriteableStreamMessageWriter{constructor(e,t){super((0,o.default)().stream.asWritableStream(e),t)}}t.StreamMessageWriter=y;const C=process.env.XDG_RUNTIME_DIR,R=new Map([["linux",107],["darwin",103]]);t.generateRandomPipeName=function(){const e=(0,c.randomBytes)(21).toString("hex");if("win32"===process.platform)return`\\\\.\\pipe\\vscode-jsonrpc-${e}-sock`;let t;t=C?s.join(C,`vscode-ipc-${e}.sock`):s.join(a.tmpdir(),`vscode-${e}.sock`);const n=R.get(process.platform);return void 0!==n&&t.length>n&&(0,o.default)().console.warn(`WARNING: IPC handle "${t}" is longer than ${n} characters.`),t},t.createClientPipeTransport=function(e,t="utf-8"){let n;const i=new Promise(((e,t)=>{n=e}));return new Promise(((r,o)=>{let s=(0,u.createServer)((e=>{s.close(),n([new m(e,t),new f(e,t)])}));s.on("error",o),s.listen(e,(()=>{s.removeListener("error",o),r({onConnected:()=>i})}))}))},t.createServerPipeTransport=function(e,t="utf-8"){const n=(0,u.createConnection)(e);return[new m(n,t),new f(n,t)]},t.createClientSocketTransport=function(e,t="utf-8"){let n;const i=new Promise(((e,t)=>{n=e}));return new Promise(((r,o)=>{const s=(0,u.createServer)((e=>{s.close(),n([new m(e,t),new f(e,t)])}));s.on("error",o),s.listen(e,"127.0.0.1",(()=>{s.removeListener("error",o),r({onConnected:()=>i})}))}))},t.createServerSocketTransport=function(e,t="utf-8"){const n=(0,u.createConnection)(e,"127.0.0.1");return[new m(n,t),new f(n,t)]},t.createMessageConnection=function(e,t,n,i){n||(n=l.NullLogger);const r=function(e){const t=e;return void 0!==t.read&&void 0!==t.addListener}(e)?new v(e):e,o=function(e){const t=e;return void 0!==t.write&&void 0!==t.addListener}(t)?new y(t):t;return l.ConnectionStrategy.is(i)&&(i={connectionStrategy:i}),(0,l.createMessageConnection)(r,o,n,i)}},3034:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(3837),r=n(3870);class o extends r.AbstractMessageBuffer{constructor(e="utf-8"){super(e)}emptyBuffer(){return o.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,t){return e instanceof Buffer?e.toString(t):new i.TextDecoder(t).decode(e)}asNative(e,t){return void 0===t?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,t):Buffer.from(e,0,t)}allocNative(e){return Buffer.allocUnsafe(e)}}o.emptyBuffer=Buffer.allocUnsafe(0);class s{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),r.Disposable.create((()=>this.stream.off("close",e)))}onError(e){return this.stream.on("error",e),r.Disposable.create((()=>this.stream.off("error",e)))}onEnd(e){return this.stream.on("end",e),r.Disposable.create((()=>this.stream.off("end",e)))}onData(e){return this.stream.on("data",e),r.Disposable.create((()=>this.stream.off("data",e)))}}class a{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),r.Disposable.create((()=>this.stream.off("close",e)))}onError(e){return this.stream.on("error",e),r.Disposable.create((()=>this.stream.off("error",e)))}onEnd(e){return this.stream.on("end",e),r.Disposable.create((()=>this.stream.off("end",e)))}write(e,t){return new Promise(((n,i)=>{const r=e=>{null==e?n():i(e)};"string"==typeof e?this.stream.write(e,t,r):this.stream.write(e,r)}))}end(){this.stream.end()}}const c=Object.freeze({messageBuffer:Object.freeze({create:e=>new o(e)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(e,t)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(e,void 0,0),t.charset))}catch(e){return Promise.reject(e)}}}),decoder:Object.freeze({name:"application/json",decode:(e,t)=>{try{return e instanceof Buffer?Promise.resolve(JSON.parse(e.toString(t.charset))):Promise.resolve(JSON.parse(new i.TextDecoder(t.charset).decode(e)))}catch(e){return Promise.reject(e)}}})}),stream:Object.freeze({asReadableStream:e=>new s(e),asWritableStream:e=>new a(e)}),console,timer:Object.freeze({setTimeout(e,t,...n){const i=setTimeout(e,t,...n);return{dispose:()=>clearTimeout(i)}},setImmediate(e,...t){const n=setImmediate(e,...t);return{dispose:()=>clearImmediate(n)}},setInterval(e,t,...n){const i=setInterval(e,t,...n);return{dispose:()=>clearInterval(i)}}})});function u(){return c}!function(e){e.install=function(){r.RAL.install(c)}}(u||(u={})),t.default=u},5028:(e,t,n)=>{"use strict";e.exports=n(4389)},5734:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.DiagnosticPullMode=t.vsdiag=void 0,r(n(273),t),r(n(8909),t);var o=n(2570);Object.defineProperty(t,"vsdiag",{enumerable:!0,get:function(){return o.vsdiag}}),Object.defineProperty(t,"DiagnosticPullMode",{enumerable:!0,get:function(){return o.DiagnosticPullMode}}),r(n(4384),t)},5578:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallHierarchyFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s{constructor(e){this.client=e,this.middleware=e.middleware}prepareCallHierarchy(e,t,n){const i=this.client,o=this.middleware,s=(e,t,n)=>{const o=i.code2ProtocolConverter.asTextDocumentPositionParams(e,t);return i.sendRequest(r.CallHierarchyPrepareRequest.type,o,n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asCallHierarchyItems(e,n)),(e=>i.handleFailedRequest(r.CallHierarchyPrepareRequest.type,n,e,null)))};return o.prepareCallHierarchy?o.prepareCallHierarchy(e,t,n,s):s(e,t,n)}provideCallHierarchyIncomingCalls(e,t){const n=this.client,i=this.middleware,o=(e,t)=>{const i={item:n.code2ProtocolConverter.asCallHierarchyItem(e)};return n.sendRequest(r.CallHierarchyIncomingCallsRequest.type,i,t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asCallHierarchyIncomingCalls(e,t)),(e=>n.handleFailedRequest(r.CallHierarchyIncomingCallsRequest.type,t,e,null)))};return i.provideCallHierarchyIncomingCalls?i.provideCallHierarchyIncomingCalls(e,t,o):o(e,t)}provideCallHierarchyOutgoingCalls(e,t){const n=this.client,i=this.middleware,o=(e,t)=>{const i={item:n.code2ProtocolConverter.asCallHierarchyItem(e)};return n.sendRequest(r.CallHierarchyOutgoingCallsRequest.type,i,t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asCallHierarchyOutgoingCalls(e,t)),(e=>n.handleFailedRequest(r.CallHierarchyOutgoingCallsRequest.type,t,e,null)))};return i.provideCallHierarchyOutgoingCalls?i.provideCallHierarchyOutgoingCalls(e,t,o):o(e,t)}}class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.CallHierarchyPrepareRequest.type)}fillClientCapabilities(e){const t=e;(0,o.ensure)((0,o.ensure)(t,"textDocument"),"callHierarchy").dynamicRegistration=!0}initialize(e,t){const[n,i]=this.getRegistration(t,e.callHierarchyProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=this._client,n=new s(t);return[i.languages.registerCallHierarchyProvider(this._client.protocol2CodeConverter.asDocumentSelector(e.documentSelector),n),n]}}t.CallHierarchyFeature=a},4384:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProposedFeatures=t.BaseLanguageClient=t.MessageTransports=t.SuspendMode=t.State=t.CloseAction=t.ErrorAction=t.RevealOutputChannelOn=void 0;const i=n(9496),r=n(273),o=n(71),s=n(8785),a=n(9763),c=n(4904),u=n(1980),l=n(8071),d=n(8909),h=n(2570),p=n(203),g=n(6495),m=n(743),f=n(1435),v=n(6782),y=n(122),C=n(2908),R=n(9959),D=n(2483),b=n(3051),S=n(8480),w=n(9474),T=n(7711),_=n(6426),k=n(6458),P=n(3471),x=n(4849),E=n(5338),O=n(8880),q=n(9889),F=n(328),N=n(5941),I=n(6454),M=n(707),L=n(750),A=n(3603),j=n(5578),$=n(9957),H=n(7606),W=n(3483),K=n(4175),U=n(5098),z=n(6190);var V,G,B,X,J,Q,Y;!function(e){e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error",e[e.Never=4]="Never"}(V=t.RevealOutputChannelOn||(t.RevealOutputChannelOn={})),function(e){e[e.Continue=1]="Continue",e[e.Shutdown=2]="Shutdown"}(G=t.ErrorAction||(t.ErrorAction={})),function(e){e[e.DoNotRestart=1]="DoNotRestart",e[e.Restart=2]="Restart"}(B=t.CloseAction||(t.CloseAction={})),function(e){e[e.Stopped=1]="Stopped",e[e.Starting=3]="Starting",e[e.Running=2]="Running"}(X=t.State||(t.State={})),(Y=t.SuspendMode||(t.SuspendMode={})).off="off",Y.on="on";class Z{constructor(e,t){this.client=e,this.maxRestartCount=t,this.restarts=[]}error(e,t,n){return n&&n<=3?{action:G.Continue}:{action:G.Shutdown}}closed(){return this.restarts.push(Date.now()),this.restarts.length<=this.maxRestartCount?{action:B.Restart}:this.restarts[this.restarts.length-1]-this.restarts[0]<=18e4?{action:B.DoNotRestart,message:`The ${this.client.name} server crashed ${this.maxRestartCount+1} times in the last 3 minutes. The server will not be restarted. See the output for more information.`}:(this.restarts.shift(),{action:B.Restart})}}!function(e){e.Initial="initial",e.Starting="starting",e.StartFailed="startFailed",e.Running="running",e.Stopping="stopping",e.Stopped="stopped"}(J||(J={})),(t.MessageTransports||(t.MessageTransports={})).is=function(e){return e&&r.MessageReader.is(e.reader)&&r.MessageWriter.is(e.writer)};class ee{constructor(e,t,n){this._traceFormat=r.TraceFormat.Text,this._diagnosticQueue=new Map,this._diagnosticQueueState={state:"idle"},this._features=[],this._dynamicFeatures=new Map,this.workspaceEditLock=new c.Semaphore(1),this._id=e,this._name=t;const i={isTrusted:!1,supportHtml:!1};void 0!==(n=n||{}).markdown&&(i.isTrusted=!0===n.markdown.isTrusted,i.supportHtml=!0===n.markdown.supportHtml),this._clientOptions={documentSelector:n.documentSelector??[],synchronize:n.synchronize??{},diagnosticCollectionName:n.diagnosticCollectionName,outputChannelName:n.outputChannelName??this._name,revealOutputChannelOn:n.revealOutputChannelOn??V.Error,stdioEncoding:n.stdioEncoding??"utf8",initializationOptions:n.initializationOptions,initializationFailedHandler:n.initializationFailedHandler,progressOnInitialization:!!n.progressOnInitialization,errorHandler:n.errorHandler??this.createDefaultErrorHandler(n.connectionOptions?.maxRestartCount),middleware:n.middleware??{},uriConverters:n.uriConverters,workspaceFolder:n.workspaceFolder,connectionOptions:n.connectionOptions,markdown:i,diagnosticPullOptions:n.diagnosticPullOptions??{onChange:!0,onSave:!1},notebookDocumentOptions:n.notebookDocumentOptions??{}},this._clientOptions.synchronize=this._clientOptions.synchronize||{},this._state=J.Initial,this._ignoredRegistrations=new Set,this._listeners=[],this._notificationHandlers=new Map,this._pendingNotificationHandlers=new Map,this._notificationDisposables=new Map,this._requestHandlers=new Map,this._pendingRequestHandlers=new Map,this._requestDisposables=new Map,this._progressHandlers=new Map,this._pendingProgressHandlers=new Map,this._progressDisposables=new Map,this._connection=void 0,this._initializeResult=void 0,n.outputChannel?(this._outputChannel=n.outputChannel,this._disposeOutputChannel=!1):(this._outputChannel=void 0,this._disposeOutputChannel=!0),this._traceOutputChannel=n.traceOutputChannel,this._diagnostics=void 0,this._pendingOpenNotifications=new Set,this._pendingChangeSemaphore=new c.Semaphore(1),this._pendingChangeDelayer=new c.Delayer(250),this._fileEvents=[],this._fileEventDelayer=new c.Delayer(250),this._onStop=void 0,this._telemetryEmitter=new r.Emitter,this._stateChangeEmitter=new r.Emitter,this._trace=r.Trace.Off,this._tracer={log:(e,t)=>{a.string(e)?this.logTrace(e,t):this.logObjectTrace(e)}},this._c2p=o.createConverter(n.uriConverters?n.uriConverters.code2Protocol:void 0),this._p2c=s.createConverter(n.uriConverters?n.uriConverters.protocol2Code:void 0,this._clientOptions.markdown.isTrusted,this._clientOptions.markdown.supportHtml),this._syncedDocuments=new Map,this.registerBuiltinFeatures()}get name(){return this._name}get middleware(){return this._clientOptions.middleware??Object.create(null)}get clientOptions(){return this._clientOptions}get protocol2CodeConverter(){return this._p2c}get code2ProtocolConverter(){return this._c2p}get onTelemetry(){return this._telemetryEmitter.event}get onDidChangeState(){return this._stateChangeEmitter.event}get outputChannel(){return this._outputChannel||(this._outputChannel=i.window.createOutputChannel(this._clientOptions.outputChannelName?this._clientOptions.outputChannelName:this._name)),this._outputChannel}get traceOutputChannel(){return this._traceOutputChannel?this._traceOutputChannel:this.outputChannel}get diagnostics(){return this._diagnostics}get state(){return this.getPublicState()}get $state(){return this._state}set $state(e){let t=this.getPublicState();this._state=e;let n=this.getPublicState();n!==t&&this._stateChangeEmitter.fire({oldState:t,newState:n})}getPublicState(){switch(this.$state){case J.Starting:return X.Starting;case J.Running:return X.Running;default:return X.Stopped}}get initializeResult(){return this._initializeResult}async sendRequest(e,...t){if(this.$state===J.StartFailed||this.$state===J.Stopping||this.$state===J.Stopped)return Promise.reject(new r.ResponseError(r.ErrorCodes.ConnectionInactive,"Client is not running"));const n=await this.$start();return this._didChangeTextDocumentFeature.syncKind===r.TextDocumentSyncKind.Full&&await this.sendPendingFullTextDocumentChanges(n),n.sendRequest(e,...t)}onRequest(e,t){const n="string"==typeof e?e:e.method;this._requestHandlers.set(n,t);const i=this.activeConnection();let r;return void 0!==i?(this._requestDisposables.set(n,i.onRequest(e,t)),r={dispose:()=>{const e=this._requestDisposables.get(n);void 0!==e&&(e.dispose(),this._requestDisposables.delete(n))}}):(this._pendingRequestHandlers.set(n,t),r={dispose:()=>{this._pendingRequestHandlers.delete(n);const e=this._requestDisposables.get(n);void 0!==e&&(e.dispose(),this._requestDisposables.delete(n))}}),{dispose:()=>{this._requestHandlers.delete(n),r.dispose()}}}async sendNotification(e,t){if(this.$state===J.StartFailed||this.$state===J.Stopping||this.$state===J.Stopped)return Promise.reject(new r.ResponseError(r.ErrorCodes.ConnectionInactive,"Client is not running"));const n=this._didChangeTextDocumentFeature.syncKind===r.TextDocumentSyncKind.Full;let i;n&&"string"!=typeof e&&e.method===r.DidOpenTextDocumentNotification.method&&(i=t?.textDocument.uri,this._pendingOpenNotifications.add(i));const o=await this.$start();return n&&await this.sendPendingFullTextDocumentChanges(o),void 0!==i&&this._pendingOpenNotifications.delete(i),o.sendNotification(e,t)}onNotification(e,t){const n="string"==typeof e?e:e.method;this._notificationHandlers.set(n,t);const i=this.activeConnection();let r;return void 0!==i?(this._notificationDisposables.set(n,i.onNotification(e,t)),r={dispose:()=>{const e=this._notificationDisposables.get(n);void 0!==e&&(e.dispose(),this._notificationDisposables.delete(n))}}):(this._pendingNotificationHandlers.set(n,t),r={dispose:()=>{this._pendingNotificationHandlers.delete(n);const e=this._notificationDisposables.get(n);void 0!==e&&(e.dispose(),this._notificationDisposables.delete(n))}}),{dispose:()=>{this._notificationHandlers.delete(n),r.dispose()}}}async sendProgress(e,t,n){if(this.$state===J.StartFailed||this.$state===J.Stopping||this.$state===J.Stopped)return Promise.reject(new r.ResponseError(r.ErrorCodes.ConnectionInactive,"Client is not running"));try{return(await this.$start()).sendProgress(e,t,n)}catch(e){throw this.error(`Sending progress for token ${t} failed.`,e),e}}onProgress(e,t,n){this._progressHandlers.set(t,{type:e,handler:n});const i=this.activeConnection();let o;const s=this._clientOptions.middleware?.handleWorkDoneProgress,a=r.WorkDoneProgress.is(e)&&void 0!==s?e=>{s(t,e,(()=>n(e)))}:n;return void 0!==i?(this._progressDisposables.set(t,i.onProgress(e,t,a)),o={dispose:()=>{const e=this._progressDisposables.get(t);void 0!==e&&(e.dispose(),this._progressDisposables.delete(t))}}):(this._pendingProgressHandlers.set(t,{type:e,handler:n}),o={dispose:()=>{this._pendingProgressHandlers.delete(t);const e=this._progressDisposables.get(t);void 0!==e&&(e.dispose(),this._progressDisposables.delete(t))}}),{dispose:()=>{this._progressHandlers.delete(t),o.dispose()}}}createDefaultErrorHandler(e){if(void 0!==e&&e<0)throw new Error(`Invalid maxRestartCount: ${e}`);return new Z(this,e??4)}async setTrace(e){this._trace=e;const t=this.activeConnection();void 0!==t&&await t.trace(this._trace,this._tracer,{sendNotification:!1,traceFormat:this._traceFormat})}data2String(e){if(e instanceof r.ResponseError){const t=e;return` Message: ${t.message}\n Code: ${t.code} ${t.data?"\n"+t.data.toString():""}`}return e instanceof Error?a.string(e.stack)?e.stack:e.message:a.string(e)?e:e.toString()}info(e,t,n=!0){this.outputChannel.appendLine(`[Info - ${(new Date).toLocaleTimeString()}] ${e}`),null!=t&&this.outputChannel.appendLine(this.data2String(t)),n&&this._clientOptions.revealOutputChannelOn<=V.Info&&this.showNotificationMessage(r.MessageType.Info,e)}warn(e,t,n=!0){this.outputChannel.appendLine(`[Warn - ${(new Date).toLocaleTimeString()}] ${e}`),null!=t&&this.outputChannel.appendLine(this.data2String(t)),n&&this._clientOptions.revealOutputChannelOn<=V.Warn&&this.showNotificationMessage(r.MessageType.Warning,e)}error(e,t,n=!0){this.outputChannel.appendLine(`[Error - ${(new Date).toLocaleTimeString()}] ${e}`),null!=t&&this.outputChannel.appendLine(this.data2String(t)),("force"===n||n&&this._clientOptions.revealOutputChannelOn<=V.Error)&&this.showNotificationMessage(r.MessageType.Error,e)}showNotificationMessage(e,t){t=t??"A request has failed. See the output for more information.",(e===r.MessageType.Error?i.window.showErrorMessage:e===r.MessageType.Warning?i.window.showWarningMessage:i.window.showInformationMessage)(t,"Go to output").then((e=>{void 0!==e&&this.outputChannel.show(!0)}))}logTrace(e,t){this.traceOutputChannel.appendLine(`[Trace - ${(new Date).toLocaleTimeString()}] ${e}`),t&&this.traceOutputChannel.appendLine(this.data2String(t))}logObjectTrace(e){e.isLSPMessage&&e.type?this.traceOutputChannel.append(`[LSP - ${(new Date).toLocaleTimeString()}] `):this.traceOutputChannel.append(`[Trace - ${(new Date).toLocaleTimeString()}] `),e&&this.traceOutputChannel.appendLine(`${JSON.stringify(e)}`)}needsStart(){return this.$state===J.Initial||this.$state===J.Stopping||this.$state===J.Stopped}needsStop(){return this.$state===J.Starting||this.$state===J.Running}activeConnection(){return this.$state===J.Running&&void 0!==this._connection?this._connection:void 0}isRunning(){return this.$state===J.Running}async start(){if("disposing"===this._disposed||"disposed"===this._disposed)throw new Error("Client got disposed and can't be restarted.");if(this.$state===J.Stopping)throw new Error("Client is currently stopping. Can only restart a full stopped client");if(void 0!==this._onStart)return this._onStart;const[e,t,n]=this.createOnStartPromise();this._onStart=e,void 0===this._diagnostics&&(this._diagnostics=this._clientOptions.diagnosticCollectionName?i.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName):i.languages.createDiagnosticCollection());for(const[e,t]of this._notificationHandlers)this._pendingNotificationHandlers.has(e)||this._pendingNotificationHandlers.set(e,t);for(const[e,t]of this._requestHandlers)this._pendingRequestHandlers.has(e)||this._pendingRequestHandlers.set(e,t);for(const[e,t]of this._progressHandlers)this._pendingProgressHandlers.has(e)||this._pendingProgressHandlers.set(e,t);this.$state=J.Starting;try{const e=await this.createConnection();e.onNotification(r.LogMessageNotification.type,(e=>{switch(e.type){case r.MessageType.Error:this.error(e.message,void 0,!1);break;case r.MessageType.Warning:this.warn(e.message,void 0,!1);break;case r.MessageType.Info:this.info(e.message,void 0,!1);break;default:this.outputChannel.appendLine(e.message)}})),e.onNotification(r.ShowMessageNotification.type,(e=>{switch(e.type){case r.MessageType.Error:i.window.showErrorMessage(e.message);break;case r.MessageType.Warning:i.window.showWarningMessage(e.message);break;case r.MessageType.Info:default:i.window.showInformationMessage(e.message)}})),e.onRequest(r.ShowMessageRequest.type,(e=>{let t;switch(e.type){case r.MessageType.Error:t=i.window.showErrorMessage;break;case r.MessageType.Warning:t=i.window.showWarningMessage;break;case r.MessageType.Info:default:t=i.window.showInformationMessage}let n=e.actions||[];return t(e.message,...n)})),e.onNotification(r.TelemetryEventNotification.type,(e=>{this._telemetryEmitter.fire(e)})),e.onRequest(r.ShowDocumentRequest.type,(async e=>{const t=async e=>{const t=this.protocol2CodeConverter.asUri(e.uri);try{if(!0===e.external)return{success:await i.env.openExternal(t)};{const n={};return void 0!==e.selection&&(n.selection=this.protocol2CodeConverter.asRange(e.selection)),void 0===e.takeFocus||!1===e.takeFocus?n.preserveFocus=!0:!0===e.takeFocus&&(n.preserveFocus=!1),await i.window.showTextDocument(t,n),{success:!0}}}catch(e){return{success:!1}}},n=this._clientOptions.middleware.window?.showDocument;return void 0!==n?n(e,t):t(e)})),e.listen(),await this.initialize(e),t()}catch(e){this.$state=J.StartFailed,this.error(`${this._name} client: couldn't create connection to server.`,e,"force"),n(e)}return this._onStart}createOnStartPromise(){let e,t;return[new Promise(((n,i)=>{e=n,t=i})),e,t]}async initialize(e){this.refreshTrace(e,!1);const t=this._clientOptions.initializationOptions,[n,o]=void 0!==this._clientOptions.workspaceFolder?[this._clientOptions.workspaceFolder.uri.fsPath,[{uri:this._c2p.asUri(this._clientOptions.workspaceFolder.uri),name:this._clientOptions.workspaceFolder.name}]]:[this._clientGetRootPath(),null],s={processId:null,clientInfo:{name:i.env.appName,version:i.version},locale:this.getLocale(),rootPath:n||null,rootUri:n?this._c2p.asUri(i.Uri.file(n)):null,capabilities:this.computeClientCapabilities(),initializationOptions:a.func(t)?t():t,trace:r.Trace.toString(this._trace),workspaceFolders:o};if(this.fillInitializeParams(s),!this._clientOptions.progressOnInitialization)return this.doInitialize(e,s);{const t=u.generateUuid(),n=new l.ProgressPart(e,t);s.workDoneToken=t;try{const t=await this.doInitialize(e,s);return n.done(),t}catch(e){throw n.cancel(),e}}}async doInitialize(e,t){try{const n=await e.initialize(t);if(void 0!==n.capabilities.positionEncoding&&n.capabilities.positionEncoding!==r.PositionEncodingKind.UTF16)throw new Error(`Unsupported position encoding (${n.capabilities.positionEncoding}) received from server ${this.name}`);let i;this._initializeResult=n,this.$state=J.Running,a.number(n.capabilities.textDocumentSync)?i=n.capabilities.textDocumentSync===r.TextDocumentSyncKind.None?{openClose:!1,change:r.TextDocumentSyncKind.None,save:void 0}:{openClose:!0,change:n.capabilities.textDocumentSync,save:{includeText:!1}}:void 0!==n.capabilities.textDocumentSync&&null!==n.capabilities.textDocumentSync&&(i=n.capabilities.textDocumentSync),this._capabilities=Object.assign({},n.capabilities,{resolvedTextDocumentSync:i}),e.onNotification(r.PublishDiagnosticsNotification.type,(e=>this.handleDiagnostics(e))),e.onRequest(r.RegistrationRequest.type,(e=>this.handleRegistrationRequest(e))),e.onRequest("client/registerFeature",(e=>this.handleRegistrationRequest(e))),e.onRequest(r.UnregistrationRequest.type,(e=>this.handleUnregistrationRequest(e))),e.onRequest("client/unregisterFeature",(e=>this.handleUnregistrationRequest(e))),e.onRequest(r.ApplyWorkspaceEditRequest.type,(e=>this.handleApplyWorkspaceEdit(e)));for(const[t,n]of this._pendingNotificationHandlers)this._notificationDisposables.set(t,e.onNotification(t,n));this._pendingNotificationHandlers.clear();for(const[t,n]of this._pendingRequestHandlers)this._requestDisposables.set(t,e.onRequest(t,n));this._pendingRequestHandlers.clear();for(const[t,n]of this._pendingProgressHandlers)this._progressDisposables.set(t,e.onProgress(n.type,t,n.handler));return this._pendingProgressHandlers.clear(),await e.sendNotification(r.InitializedNotification.type,{}),this.hookFileEvents(e),this.hookConfigurationChanged(e),this.initializeFeatures(e),n}catch(t){throw this._clientOptions.initializationFailedHandler?this._clientOptions.initializationFailedHandler(t)?this.initialize(e):this.stop():t instanceof r.ResponseError&&t.data&&t.data.retry?i.window.showErrorMessage(t.message,{title:"Retry",id:"retry"}).then((t=>{t&&"retry"===t.id?this.initialize(e):this.stop()})):(t&&t.message&&i.window.showErrorMessage(t.message),this.error("Server initialization failed.",t),this.stop()),t}}_clientGetRootPath(){let e=i.workspace.workspaceFolders;if(!e||0===e.length)return;let t=e[0];return"file"===t.uri.scheme?t.uri.fsPath:void 0}stop(e=2e3){return this.shutdown("stop",e)}dispose(e=2e3){try{return this._disposed="disposing",this.stop(e)}finally{this._disposed="disposed"}}async shutdown(e,t){if(this.$state===J.Stopped||this.$state===J.Initial)return;if(this.$state===J.Stopping){if(void 0!==this._onStop)return this._onStop;throw new Error("Client is stopping but no stop promise available.")}const n=this.activeConnection();if(void 0===n||this.$state!==J.Running)throw new Error(`Client is not running and can't be stopped. It's current state is: ${this.$state}`);this._initializeResult=void 0,this.$state=J.Stopping,this.cleanUp(e);const i=new Promise((e=>{(0,r.RAL)().timer.setTimeout(e,t)})),o=(async e=>(await e.shutdown(),await e.exit(),e))(n);return this._onStop=Promise.race([i,o]).then((e=>{if(void 0===e)throw this.error("Stopping server timed out",void 0,!1),new Error("Stopping the server timed out");e.end(),e.dispose()}),(e=>{throw this.error("Stopping server failed",e,!1),e})).finally((()=>{this.$state=J.Stopped,"stop"===e&&this.cleanUpChannel(),this._onStart=void 0,this._onStop=void 0,this._connection=void 0,this._ignoredRegistrations.clear()}))}cleanUp(e){this._fileEvents=[],this._fileEventDelayer.cancel();const t=this._listeners.splice(0,this._listeners.length);for(const e of t)e.dispose();this._syncedDocuments&&this._syncedDocuments.clear();for(const e of Array.from(this._features.entries()).map((e=>e[1])).reverse())e.dispose();"stop"===e&&void 0!==this._diagnostics&&(this._diagnostics.dispose(),this._diagnostics=void 0),void 0!==this._idleInterval&&(this._idleInterval.dispose(),this._idleInterval=void 0)}cleanUpChannel(){void 0!==this._outputChannel&&this._disposeOutputChannel&&(this._outputChannel.dispose(),this._outputChannel=void 0)}notifyFileEvent(e){const t=this;async function n(e){return t._fileEvents.push(e),t._fileEventDelayer.trigger((async()=>{await t.sendNotification(r.DidChangeWatchedFilesNotification.type,{changes:t._fileEvents}),t._fileEvents=[]}))}const i=this.clientOptions.middleware?.workspace;(i?.didChangeWatchedFile?i.didChangeWatchedFile(e,n):n(e)).catch((e=>{t.error("Notify file events failed.",e)}))}async sendPendingFullTextDocumentChanges(e){return this._pendingChangeSemaphore.lock((async()=>{try{const t=this._didChangeTextDocumentFeature.getPendingDocumentChanges(this._pendingOpenNotifications);if(0===t.length)return;for(const n of t){const t=this.code2ProtocolConverter.asChangeTextDocumentParams(n);await e.sendNotification(r.DidChangeTextDocumentNotification.type,t),this._didChangeTextDocumentFeature.notificationSent(n,r.DidChangeTextDocumentNotification.type,t)}}catch(e){throw this.error("Sending pending changes failed",e,!1),e}}))}triggerPendingChangeDelivery(){this._pendingChangeDelayer.trigger((async()=>{const e=this.activeConnection();void 0!==e?await this.sendPendingFullTextDocumentChanges(e):this.triggerPendingChangeDelivery()})).catch((e=>this.error("Delivering pending changes failed",e,!1)))}handleDiagnostics(e){if(!this._diagnostics)return;const t=e.uri;"busy"===this._diagnosticQueueState.state&&this._diagnosticQueueState.document===t&&this._diagnosticQueueState.tokenSource.cancel(),this._diagnosticQueue.set(e.uri,e.diagnostics),this.triggerDiagnosticQueue()}triggerDiagnosticQueue(){(0,r.RAL)().timer.setImmediate((()=>{this.workDiagnosticQueue()}))}workDiagnosticQueue(){if("busy"===this._diagnosticQueueState.state)return;const e=this._diagnosticQueue.entries().next();if(!0===e.done)return;const[t,n]=e.value;this._diagnosticQueue.delete(t);const r=new i.CancellationTokenSource;this._diagnosticQueueState={state:"busy",document:t,tokenSource:r},this._p2c.asDiagnostics(n,r.token).then((e=>{if(!r.token.isCancellationRequested){const n=this._p2c.asUri(t),i=this.clientOptions.middleware;i.handleDiagnostics?i.handleDiagnostics(n,e,((e,t)=>this.setDiagnostics(e,t))):this.setDiagnostics(n,e)}})).finally((()=>{this._diagnosticQueueState={state:"idle"},this.triggerDiagnosticQueue()}))}setDiagnostics(e,t){this._diagnostics&&this._diagnostics.set(e,t)}getLocale(){return i.env.language}async $start(){if(this.$state===J.StartFailed)throw new Error("Previous start failed. Can't restart server.");await this.start();const e=this.activeConnection();if(void 0===e)throw new Error("Starting server failed");return e}async createConnection(){const e=await this.createMessageTransports(this._clientOptions.stdioEncoding||"utf8");return this._connection=function(e,t,n,i,o){const s=new te,c=(0,r.createProtocolConnection)(e,t,s,o);return c.onError((e=>{n(e[0],e[1],e[2])})),c.onClose(i),{listen:()=>c.listen(),sendRequest:c.sendRequest,onRequest:c.onRequest,hasPendingResponse:c.hasPendingResponse,sendNotification:c.sendNotification,onNotification:c.onNotification,onProgress:c.onProgress,sendProgress:c.sendProgress,trace:(e,t,n)=>{const i={sendNotification:!1,traceFormat:r.TraceFormat.Text};return void 0===n?c.trace(e,t,i):(a.boolean(n),c.trace(e,t,n))},initialize:e=>c.sendRequest(r.InitializeRequest.type,e),shutdown:()=>c.sendRequest(r.ShutdownRequest.type,void 0),exit:()=>c.sendNotification(r.ExitNotification.type),end:()=>c.end(),dispose:()=>c.dispose()}}(e.reader,e.writer,((e,t,n)=>{this.handleConnectionError(e,t,n).catch((e=>this.error("Handling connection error failed",e)))}),(()=>{this.handleConnectionClosed().catch((e=>this.error("Handling connection close failed",e)))}),this._clientOptions.connectionOptions),this._connection}async handleConnectionClosed(){if(this.$state===J.Stopped)return;try{void 0!==this._connection&&this._connection.dispose()}catch(e){}let e={action:B.DoNotRestart};if(this.$state!==J.Stopping)try{e=await this._clientOptions.errorHandler.closed()}catch(e){}this._connection=void 0,e.action===B.DoNotRestart?(this.error(e.message??"Connection to server got closed. Server will not be restarted.",void 0,!0!==e.handled&&"force"),this.cleanUp("stop"),this.$state===J.Starting?this.$state=J.StartFailed:this.$state=J.Stopped,this._onStop=Promise.resolve(),this._onStart=void 0):e.action===B.Restart&&(this.info(e.message??"Connection to server got closed. Server will restart.",!e.handled),this.cleanUp("restart"),this.$state=J.Initial,this._onStop=Promise.resolve(),this._onStart=void 0,this.start().catch((e=>this.error("Restarting server failed",e,"force"))))}async handleConnectionError(e,t,n){const i=await this._clientOptions.errorHandler.error(e,t,n);i.action===G.Shutdown&&(this.error(i.message??`Client ${this._name}: connection to server is erroring. Shutting down server.`,void 0,!0!==i.handled&&"force"),this.stop().catch((e=>{this.error("Stopping server failed",e,!1)})))}hookConfigurationChanged(e){this._listeners.push(i.workspace.onDidChangeConfiguration((()=>{this.refreshTrace(e,!0)})))}refreshTrace(e,t=!1){const n=i.workspace.getConfiguration(this._id);let o=r.Trace.Off,s=r.TraceFormat.Text;if(n){const e=n.get("trace.server","off");"string"==typeof e?o=r.Trace.fromString(e):(o=r.Trace.fromString(n.get("trace.server.verbosity","off")),s=r.TraceFormat.fromString(n.get("trace.server.format","text")))}this._trace=o,this._traceFormat=s,e.trace(this._trace,this._tracer,{sendNotification:t,traceFormat:this._traceFormat}).catch((e=>{this.error("Updating trace failed with error",e,!1)}))}hookFileEvents(e){let t,n=this._clientOptions.synchronize.fileEvents;n&&(t=a.array(n)?n:[n],t&&this._dynamicFeatures.get(r.DidChangeWatchedFilesNotification.type.method).registerRaw(u.generateUuid(),t))}registerFeatures(e){for(let t of e)this.registerFeature(t)}registerFeature(e){if(this._features.push(e),d.DynamicFeature.is(e)){const t=e.registrationType;this._dynamicFeatures.set(t.method,e)}}getFeature(e){return this._dynamicFeatures.get(e)}hasDedicatedTextSynchronizationFeature(e){const t=this.getFeature(r.NotebookDocumentSyncRegistrationType.method);return void 0!==t&&t instanceof p.NotebookDocumentSyncFeature&&t.handles(e)}registerBuiltinFeatures(){const e=new Map;this.registerFeature(new g.ConfigurationFeature(this)),this.registerFeature(new m.DidOpenTextDocumentFeature(this,this._syncedDocuments)),this._didChangeTextDocumentFeature=new m.DidChangeTextDocumentFeature(this,e),this._didChangeTextDocumentFeature.onPendingChangeAdded((()=>{this.triggerPendingChangeDelivery()})),this.registerFeature(this._didChangeTextDocumentFeature),this.registerFeature(new m.WillSaveFeature(this)),this.registerFeature(new m.WillSaveWaitUntilFeature(this)),this.registerFeature(new m.DidSaveTextDocumentFeature(this)),this.registerFeature(new m.DidCloseTextDocumentFeature(this,this._syncedDocuments,e)),this.registerFeature(new E.FileSystemWatcherFeature(this,(e=>this.notifyFileEvent(e)))),this.registerFeature(new f.CompletionItemFeature(this)),this.registerFeature(new v.HoverFeature(this)),this.registerFeature(new C.SignatureHelpFeature(this)),this.registerFeature(new y.DefinitionFeature(this)),this.registerFeature(new S.ReferencesFeature(this)),this.registerFeature(new R.DocumentHighlightFeature(this)),this.registerFeature(new D.DocumentSymbolFeature(this)),this.registerFeature(new b.WorkspaceSymbolFeature(this)),this.registerFeature(new w.CodeActionFeature(this)),this.registerFeature(new T.CodeLensFeature(this)),this.registerFeature(new _.DocumentFormattingFeature(this)),this.registerFeature(new _.DocumentRangeFormattingFeature(this)),this.registerFeature(new _.DocumentOnTypeFormattingFeature(this)),this.registerFeature(new k.RenameFeature(this)),this.registerFeature(new P.DocumentLinkFeature(this)),this.registerFeature(new x.ExecuteCommandFeature(this)),this.registerFeature(new g.SyncConfigurationFeature(this)),this.registerFeature(new F.TypeDefinitionFeature(this)),this.registerFeature(new q.ImplementationFeature(this)),this.registerFeature(new O.ColorProviderFeature(this)),void 0===this.clientOptions.workspaceFolder&&this.registerFeature(new N.WorkspaceFoldersFeature(this)),this.registerFeature(new I.FoldingRangeFeature(this)),this.registerFeature(new M.DeclarationFeature(this)),this.registerFeature(new L.SelectionRangeFeature(this)),this.registerFeature(new A.ProgressFeature(this)),this.registerFeature(new j.CallHierarchyFeature(this)),this.registerFeature(new $.SemanticTokensFeature(this)),this.registerFeature(new W.LinkedEditingFeature(this)),this.registerFeature(new H.DidCreateFilesFeature(this)),this.registerFeature(new H.DidRenameFilesFeature(this)),this.registerFeature(new H.DidDeleteFilesFeature(this)),this.registerFeature(new H.WillCreateFilesFeature(this)),this.registerFeature(new H.WillRenameFilesFeature(this)),this.registerFeature(new H.WillDeleteFilesFeature(this)),this.registerFeature(new K.TypeHierarchyFeature(this)),this.registerFeature(new U.InlineValueFeature(this)),this.registerFeature(new z.InlayHintsFeature(this)),this.registerFeature(new h.DiagnosticFeature(this)),this.registerFeature(new p.NotebookDocumentSyncFeature(this))}registerProposedFeatures(){this.registerFeatures(Q.createAll(this))}fillInitializeParams(e){for(let t of this._features)a.func(t.fillInitializeParams)&&t.fillInitializeParams(e)}computeClientCapabilities(){const e={};(0,d.ensure)(e,"workspace").applyEdit=!0;const t=(0,d.ensure)((0,d.ensure)(e,"workspace"),"workspaceEdit");t.documentChanges=!0,t.resourceOperations=[r.ResourceOperationKind.Create,r.ResourceOperationKind.Rename,r.ResourceOperationKind.Delete],t.failureHandling=r.FailureHandlingKind.TextOnlyTransactional,t.normalizesLineEndings=!0,t.changeAnnotationSupport={groupsOnLabel:!0};const n=(0,d.ensure)((0,d.ensure)(e,"textDocument"),"publishDiagnostics");n.relatedInformation=!0,n.versionSupport=!1,n.tagSupport={valueSet:[r.DiagnosticTag.Unnecessary,r.DiagnosticTag.Deprecated]},n.codeDescriptionSupport=!0,n.dataSupport=!0;const i=(0,d.ensure)(e,"window");(0,d.ensure)(i,"showMessage").messageActionItem={additionalPropertiesSupport:!0},(0,d.ensure)(i,"showDocument").support=!0;const o=(0,d.ensure)(e,"general");o.staleRequestSupport={cancel:!0,retryOnContentModified:Array.from(ee.RequestsToCancelOnContentModified)},o.regularExpressions={engine:"ECMAScript",version:"ES2020"},o.markdown={parser:"marked",version:"1.1.0"},o.positionEncodings=["utf-16"],this._clientOptions.markdown.supportHtml&&(o.markdown.allowedTags=["ul","li","p","code","blockquote","ol","h1","h2","h3","h4","h5","h6","hr","em","pre","table","thead","tbody","tr","th","td","div","del","a","strong","br","img","span"]);for(let t of this._features)t.fillClientCapabilities(e);return e}initializeFeatures(e){const t=this._clientOptions.documentSelector;for(const e of this._features)a.func(e.preInitialize)&&e.preInitialize(this._capabilities,t);for(const e of this._features)e.initialize(this._capabilities,t)}async handleRegistrationRequest(e){if(this.isRunning())for(const t of e.registrations){const e=this._dynamicFeatures.get(t.method);if(void 0===e)return Promise.reject(new Error(`No feature implementation for ${t.method} found. Registration failed.`));const n=t.registerOptions??{};n.documentSelector=n.documentSelector??this._clientOptions.documentSelector;const i={id:t.id,registerOptions:n};try{e.register(i)}catch(e){return Promise.reject(e)}}else for(const t of e.registrations)this._ignoredRegistrations.add(t.id)}async handleUnregistrationRequest(e){for(let t of e.unregisterations){if(this._ignoredRegistrations.has(t.id))continue;const e=this._dynamicFeatures.get(t.method);if(!e)return Promise.reject(new Error(`No feature implementation for ${t.method} found. Unregistration failed.`));e.unregister(t.id)}}async handleApplyWorkspaceEdit(e){const t=e.edit,n=await this.workspaceEditLock.lock((()=>this._p2c.asWorkspaceEdit(t))),o=new Map;i.workspace.textDocuments.forEach((e=>o.set(e.uri.toString(),e)));let s=!1;if(t.documentChanges)for(const e of t.documentChanges)if(r.TextDocumentEdit.is(e)&&e.textDocument.version&&e.textDocument.version>=0){const t=this._p2c.asUri(e.textDocument.uri).toString(),n=o.get(t);if(n&&n.version!==e.textDocument.version){s=!0;break}}return s?Promise.resolve({applied:!1}):a.asPromise(i.workspace.applyEdit(n).then((e=>({applied:e}))))}handleFailedRequest(e,t,n,o,s=!0){if(n instanceof r.ResponseError){if(n.code===r.ErrorCodes.PendingResponseRejected||n.code===r.ErrorCodes.ConnectionInactive)return o;if(n.code===r.LSPErrorCodes.RequestCancelled||n.code===r.LSPErrorCodes.ServerCancelled){if(void 0!==t&&t.isCancellationRequested)return o;throw void 0!==n.data?new d.LSPCancellationError(n.data):new i.CancellationError}if(n.code===r.LSPErrorCodes.ContentModified){if(ee.RequestsToCancelOnContentModified.has(e.method)||ee.CancellableResolveCalls.has(e.method))throw new i.CancellationError;return o}}throw this.error(`Request ${e.method} failed.`,n,s),n}}t.BaseLanguageClient=ee,ee.RequestsToCancelOnContentModified=new Set([r.SemanticTokensRequest.method,r.SemanticTokensRangeRequest.method,r.SemanticTokensDeltaRequest.method]),ee.CancellableResolveCalls=new Set([r.CompletionResolveRequest.method,r.CodeLensResolveRequest.method,r.CodeActionResolveRequest.method,r.InlayHintResolveRequest.method,r.DocumentLinkResolveRequest.method,r.WorkspaceSymbolResolveRequest.method]);class te{error(e){(0,r.RAL)().console.error(e)}warn(e){(0,r.RAL)().console.warn(e)}info(e){(0,r.RAL)().console.info(e)}log(e){(0,r.RAL)().console.log(e)}}!function(e){e.createAll=function(e){return[]}}(Q=t.ProposedFeatures||(t.ProposedFeatures={}))},9474:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeActionFeature=void 0;const i=n(9496),r=n(273),o=n(1980),s=n(8909);class a extends s.TextDocumentLanguageFeature{constructor(e){super(e,r.CodeActionRequest.type)}fillClientCapabilities(e){const t=(0,s.ensure)((0,s.ensure)(e,"textDocument"),"codeAction");t.dynamicRegistration=!0,t.isPreferredSupport=!0,t.disabledSupport=!0,t.dataSupport=!0,t.resolveSupport={properties:["edit"]},t.codeActionLiteralSupport={codeActionKind:{valueSet:[r.CodeActionKind.Empty,r.CodeActionKind.QuickFix,r.CodeActionKind.Refactor,r.CodeActionKind.RefactorExtract,r.CodeActionKind.RefactorInline,r.CodeActionKind.RefactorRewrite,r.CodeActionKind.Source,r.CodeActionKind.SourceOrganizeImports]}},t.honorsChangeAnnotations=!1}initialize(e,t){const n=this.getRegistrationOptions(t,e.codeActionProvider);n&&this.register({id:o.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideCodeActions:(e,t,n,i)=>{const o=this._client,s=async(e,t,n,i)=>{const s={textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(e),range:o.code2ProtocolConverter.asRange(t),context:await o.code2ProtocolConverter.asCodeActionContext(n,i)};return o.sendRequest(r.CodeActionRequest.type,s,i).then((e=>i.isCancellationRequested||null==e?null:o.protocol2CodeConverter.asCodeActionResult(e,i)),(e=>o.handleFailedRequest(r.CodeActionRequest.type,i,e,null)))},a=o.middleware;return a.provideCodeActions?a.provideCodeActions(e,t,n,i,s):s(e,t,n,i)},resolveCodeAction:e.resolveProvider?(e,t)=>{const n=this._client,i=this._client.middleware,o=async(e,t)=>n.sendRequest(r.CodeActionResolveRequest.type,await n.code2ProtocolConverter.asCodeAction(e,t),t).then((i=>t.isCancellationRequested?e:n.protocol2CodeConverter.asCodeAction(i,t)),(i=>n.handleFailedRequest(r.CodeActionResolveRequest.type,t,i,e)));return i.resolveCodeAction?i.resolveCodeAction(e,t,o):o(e,t)}:void 0};return[i.languages.registerCodeActionsProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n,e.codeActionKinds?{providedCodeActionKinds:this._client.protocol2CodeConverter.asCodeActionKinds(e.codeActionKinds)}:void 0),n]}}t.CodeActionFeature=a},71:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createConverter=void 0;const i=n(9496),r=n(273),o=n(9763),s=n(4904),a=n(1807),c=n(583),u=n(8705),l=n(6434),d=n(5316),h=n(8714),p=n(1365),g=n(3912),m=n(1065);var f;!function(e){e.is=function(e){const t=e;return t&&!!t.inserting&&!!t.replacing}}(f||(f={})),t.createConverter=function(e){const t=e||(e=>e.toString());function n(e){return t(e)}function v(e){return{uri:t(e.uri)}}function y(e){return{uri:t(e.uri),languageId:e.languageId,version:e.version,text:e.getText()}}function C(e){switch(e){case i.TextDocumentSaveReason.Manual:return r.TextDocumentSaveReason.Manual;case i.TextDocumentSaveReason.AfterDelay:return r.TextDocumentSaveReason.AfterDelay;case i.TextDocumentSaveReason.FocusOut:return r.TextDocumentSaveReason.FocusOut}return r.TextDocumentSaveReason.Manual}function R(e){switch(e){case i.CompletionTriggerKind.TriggerCharacter:return r.CompletionTriggerKind.TriggerCharacter;case i.CompletionTriggerKind.TriggerForIncompleteCompletions:return r.CompletionTriggerKind.TriggerForIncompleteCompletions;default:return r.CompletionTriggerKind.Invoked}}function D(e){switch(e){case i.SignatureHelpTriggerKind.Invoke:return r.SignatureHelpTriggerKind.Invoked;case i.SignatureHelpTriggerKind.TriggerCharacter:return r.SignatureHelpTriggerKind.TriggerCharacter;case i.SignatureHelpTriggerKind.ContentChange:return r.SignatureHelpTriggerKind.ContentChange}}function b(e){return{label:e.label}}function S(e){return{label:e.label,parameters:(t=e.parameters,t.map(b))};var t}function w(e){return{line:e.line,character:e.character}}function T(e){return null==e?e:{line:e.line>r.uinteger.MAX_VALUE?r.uinteger.MAX_VALUE:e.line,character:e.character>r.uinteger.MAX_VALUE?r.uinteger.MAX_VALUE:e.character}}function _(e){return null==e?e:{start:T(e.start),end:T(e.end)}}function k(e){return null==e?e:r.Location.create(n(e.uri),_(e.range))}function P(e){switch(e){case i.DiagnosticSeverity.Error:return r.DiagnosticSeverity.Error;case i.DiagnosticSeverity.Warning:return r.DiagnosticSeverity.Warning;case i.DiagnosticSeverity.Information:return r.DiagnosticSeverity.Information;case i.DiagnosticSeverity.Hint:return r.DiagnosticSeverity.Hint}}function x(e){switch(e){case i.DiagnosticTag.Unnecessary:return r.DiagnosticTag.Unnecessary;case i.DiagnosticTag.Deprecated:return r.DiagnosticTag.Deprecated;default:return}}function E(e){return{message:e.message,location:k(e.location)}}function O(e){const t=r.Diagnostic.create(_(e.range),e.message),i=e instanceof d.ProtocolDiagnostic?e:void 0;void 0!==i&&void 0!==i.data&&(t.data=i.data);const s=function(e){if(null!=e)return o.number(e)||o.string(e)?e:{value:e.value,target:n(e.target)}}(e.code);return d.DiagnosticCode.is(s)?void 0!==i&&i.hasDiagnosticCode?t.code=s:(t.code=s.value,t.codeDescription={href:s.target}):t.code=s,o.number(e.severity)&&(t.severity=P(e.severity)),Array.isArray(e.tags)&&(t.tags=function(e){if(!e)return;let t=[];for(let n of e){let e=x(n);void 0!==e&&t.push(e)}return t.length>0?t:void 0}(e.tags)),e.relatedInformation&&(t.relatedInformation=e.relatedInformation.map(E)),e.source&&(t.source=e.source),t}function q(e,t){return null==e?e:s.map(e,O,t)}function F(e){if(e===i.CompletionItemTag.Deprecated)return r.CompletionItemTag.Deprecated}function N(e){return{range:_(e.range),newText:e.newText}}function I(e){return null==e?e:e.map(N)}function M(e){return e<=i.SymbolKind.TypeParameter?e+1:r.SymbolKind.Property}function L(e){return e}function A(e){return e.map(L)}function j(e){let t=r.Command.create(e.title,e.command);return e.arguments&&(t.arguments=e.arguments),t}function $(e){const t=r.InlayHintLabelPart.create(e.value);return void 0!==e.location&&(t.location=k(e.location)),void 0!==e.command&&(t.command=j(e.command)),void 0!==e.tooltip&&(t.tooltip=H(e.tooltip)),t}function H(e){return"string"==typeof e?e:{kind:r.MarkupKind.Markdown,value:e.value}}return{asUri:n,asTextDocumentIdentifier:v,asTextDocumentItem:y,asVersionedTextDocumentIdentifier:function(e){return{uri:t(e.uri),version:e.version}},asOpenTextDocumentParams:function(e){return{textDocument:y(e)}},asChangeTextDocumentParams:function(e,n,i){if(function(e){const t=e;return!!t.uri&&!!t.version}(e))return{textDocument:{uri:t(e.uri),version:e.version},contentChanges:[{text:e.getText()}]};if(function(e){const t=e;return!!t.document&&!!t.contentChanges}(e)){const r=i;return{textDocument:{uri:t(n),version:r},contentChanges:e.contentChanges.map((e=>{const t=e.range;return{range:{start:{line:t.start.line,character:t.start.character},end:{line:t.end.line,character:t.end.character}},rangeLength:e.rangeLength,text:e.text}}))}}throw Error("Unsupported text document change parameter")},asCloseTextDocumentParams:function(e){return{textDocument:v(e)}},asSaveTextDocumentParams:function(e,t=!1){let n={textDocument:v(e)};return t&&(n.text=e.getText()),n},asWillSaveTextDocumentParams:function(e){return{textDocument:v(e.document),reason:C(e.reason)}},asDidCreateFilesParams:function(e){return{files:e.files.map((e=>({uri:t(e)})))}},asDidRenameFilesParams:function(e){return{files:e.files.map((e=>({oldUri:t(e.oldUri),newUri:t(e.newUri)})))}},asDidDeleteFilesParams:function(e){return{files:e.files.map((e=>({uri:t(e)})))}},asWillCreateFilesParams:function(e){return{files:e.files.map((e=>({uri:t(e)})))}},asWillRenameFilesParams:function(e){return{files:e.files.map((e=>({oldUri:t(e.oldUri),newUri:t(e.newUri)})))}},asWillDeleteFilesParams:function(e){return{files:e.files.map((e=>({uri:t(e)})))}},asTextDocumentPositionParams:function(e,t){return{textDocument:v(e),position:w(t)}},asCompletionParams:function(e,t,n){return{textDocument:v(e),position:w(t),context:{triggerKind:R(n.triggerKind),triggerCharacter:n.triggerCharacter}}},asSignatureHelpParams:function(e,t,n){return{textDocument:v(e),position:w(t),context:{isRetrigger:n.isRetrigger,triggerCharacter:n.triggerCharacter,triggerKind:D(n.triggerKind),activeSignatureHelp:(i=n.activeSignatureHelp,void 0===i?i:{signatures:(r=i.signatures,r.map(S)),activeSignature:i.activeSignature,activeParameter:i.activeParameter})}};var i,r},asWorkerPosition:w,asRange:_,asPosition:T,asPositions:function(e,t){return s.map(e,T,t)},asLocation:k,asDiagnosticSeverity:P,asDiagnosticTag:x,asDiagnostic:O,asDiagnostics:q,asCompletionItem:function(e,t=!1){let n,s;o.string(e.label)?n=e.label:(n=e.label.label,!t||void 0===e.label.detail&&void 0===e.label.description||(s={detail:e.label.detail,description:e.label.description}));let c={label:n};void 0!==s&&(c.labelDetails=s);let u=e instanceof a.default?e:void 0;var l,d;e.detail&&(c.detail=e.detail),e.documentation&&(u&&"$string"!==u.documentationFormat?c.documentation=function(e,t){switch(e){case"$string":return t;case r.MarkupKind.PlainText:return{kind:e,value:t};case r.MarkupKind.Markdown:return{kind:e,value:t.value};default:return`Unsupported Markup content received. Kind is: ${e}`}}(u.documentationFormat,e.documentation):c.documentation=e.documentation),e.filterText&&(c.filterText=e.filterText),function(e,t){let n,o,s=r.InsertTextFormat.PlainText;t.textEdit?(n=t.textEdit.newText,o=t.textEdit.range):t.insertText instanceof i.SnippetString?(s=r.InsertTextFormat.Snippet,n=t.insertText.value):n=t.insertText,t.range&&(o=t.range),e.insertTextFormat=s,t.fromEdit&&void 0!==n&&void 0!==o?e.textEdit=function(e,t){return f.is(t)?r.InsertReplaceEdit.create(e,_(t.inserting),_(t.replacing)):{newText:e,range:_(t)}}(n,o):e.insertText=n}(c,e),o.number(e.kind)&&(c.kind=(l=e.kind,void 0!==(d=u&&u.originalItemKind)?d:l+1)),e.sortText&&(c.sortText=e.sortText),e.additionalTextEdits&&(c.additionalTextEdits=I(e.additionalTextEdits)),e.commitCharacters&&(c.commitCharacters=e.commitCharacters.slice()),e.command&&(c.command=j(e.command)),!0!==e.preselect&&!1!==e.preselect||(c.preselect=e.preselect);const h=function(e){if(void 0===e)return e;const t=[];for(let n of e){const e=F(n);void 0!==e&&t.push(e)}return t}(e.tags);if(u){if(void 0!==u.data&&(c.data=u.data),!0===u.deprecated||!1===u.deprecated){if(!0===u.deprecated&&void 0!==h&&h.length>0){const e=h.indexOf(i.CompletionItemTag.Deprecated);-1!==e&&h.splice(e,1)}c.deprecated=u.deprecated}void 0!==u.insertTextMode&&(c.insertTextMode=u.insertTextMode)}return void 0!==h&&h.length>0&&(c.tags=h),void 0===c.insertTextMode&&!0===e.keepWhitespace&&(c.insertTextMode=r.InsertTextMode.adjustIndentation),c},asTextEdit:N,asSymbolKind:M,asSymbolTag:L,asSymbolTags:A,asReferenceParams:function(e,t,n){return{textDocument:v(e),position:w(t),context:{includeDeclaration:n.includeDeclaration}}},asCodeAction:async function(e,t){let n=r.CodeAction.create(e.title);if(e instanceof l.default&&void 0!==e.data&&(n.data=e.data),void 0!==e.kind&&(n.kind=function(e){if(null!=e)return e.value}(e.kind)),void 0!==e.diagnostics&&(n.diagnostics=await q(e.diagnostics,t)),void 0!==e.edit)throw new Error("VS Code code actions can only be converted to a protocol code action without an edit.");return void 0!==e.command&&(n.command=j(e.command)),void 0!==e.isPreferred&&(n.isPreferred=e.isPreferred),void 0!==e.disabled&&(n.disabled={reason:e.disabled.reason}),n},asCodeActionContext:async function(e,t){if(null==e)return e;let n;return e.only&&o.string(e.only.value)&&(n=[e.only.value]),r.CodeActionContext.create(await q(e.diagnostics,t),n,function(e){switch(e){case i.CodeActionTriggerKind.Invoke:return r.CodeActionTriggerKind.Invoked;case i.CodeActionTriggerKind.Automatic:return r.CodeActionTriggerKind.Automatic;default:return}}(e.triggerKind))},asInlineValueContext:function(e){return null==e?e:r.InlineValueContext.create(e.frameId,_(e.stoppedLocation))},asCommand:j,asCodeLens:function(e){let t=r.CodeLens.create(_(e.range));return e.command&&(t.command=j(e.command)),e instanceof c.default&&e.data&&(t.data=e.data),t},asFormattingOptions:function(e,t){const n={tabSize:e.tabSize,insertSpaces:e.insertSpaces};return t.trimTrailingWhitespace&&(n.trimTrailingWhitespace=!0),t.trimFinalNewlines&&(n.trimFinalNewlines=!0),t.insertFinalNewline&&(n.insertFinalNewline=!0),n},asDocumentSymbolParams:function(e){return{textDocument:v(e)}},asCodeLensParams:function(e){return{textDocument:v(e)}},asDocumentLink:function(e){let t=r.DocumentLink.create(_(e.range));e.target&&(t.target=n(e.target)),void 0!==e.tooltip&&(t.tooltip=e.tooltip);let i=e instanceof u.default?e:void 0;return i&&i.data&&(t.data=i.data),t},asDocumentLinkParams:function(e){return{textDocument:v(e)}},asCallHierarchyItem:function(e){const t={name:e.name,kind:M(e.kind),uri:n(e.uri),range:_(e.range),selectionRange:_(e.selectionRange)};return void 0!==e.detail&&e.detail.length>0&&(t.detail=e.detail),void 0!==e.tags&&(t.tags=A(e.tags)),e instanceof h.default&&void 0!==e.data&&(t.data=e.data),t},asTypeHierarchyItem:function(e){const t={name:e.name,kind:M(e.kind),uri:n(e.uri),range:_(e.range),selectionRange:_(e.selectionRange)};return void 0!==e.detail&&e.detail.length>0&&(t.detail=e.detail),void 0!==e.tags&&(t.tags=A(e.tags)),e instanceof p.default&&void 0!==e.data&&(t.data=e.data),t},asInlayHint:function(e){const t="string"==typeof e.label?e.label:e.label.map($),n=r.InlayHint.create(T(e.position),t);return void 0!==e.kind&&(n.kind=e.kind),void 0!==e.textEdits&&(n.textEdits=I(e.textEdits)),void 0!==e.tooltip&&(n.tooltip=H(e.tooltip)),void 0!==e.paddingLeft&&(n.paddingLeft=e.paddingLeft),void 0!==e.paddingRight&&(n.paddingRight=e.paddingRight),e instanceof m.default&&void 0!==e.data&&(n.data=e.data),n},asWorkspaceSymbol:function(e){const n=e instanceof g.default?{name:e.name,kind:M(e.kind),location:e.hasRange?k(e.location):{uri:t(e.location.uri)},data:e.data}:{name:e.name,kind:M(e.kind),location:k(e.location)};return void 0!==e.tags&&(n.tags=A(e.tags)),""!==e.containerName&&(n.containerName=e.containerName),n}}}},7711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeLensFeature=void 0;const i=n(9496),r=n(273),o=n(1980),s=n(8909);class a extends s.TextDocumentLanguageFeature{constructor(e){super(e,r.CodeLensRequest.type)}fillClientCapabilities(e){(0,s.ensure)((0,s.ensure)(e,"textDocument"),"codeLens").dynamicRegistration=!0,(0,s.ensure)((0,s.ensure)(e,"workspace"),"codeLens").refreshSupport=!0}initialize(e,t){this._client.onRequest(r.CodeLensRefreshRequest.type,(async()=>{for(const e of this.getAllProviders())e.onDidChangeCodeLensEmitter.fire()}));const n=this.getRegistrationOptions(t,e.codeLensProvider);n&&this.register({id:o.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n=new i.EventEmitter,o={onDidChangeCodeLenses:n.event,provideCodeLenses:(e,t)=>{const n=this._client,i=(e,t)=>n.sendRequest(r.CodeLensRequest.type,n.code2ProtocolConverter.asCodeLensParams(e),t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asCodeLenses(e,t)),(e=>n.handleFailedRequest(r.CodeLensRequest.type,t,e,null))),o=n.middleware;return o.provideCodeLenses?o.provideCodeLenses(e,t,i):i(e,t)},resolveCodeLens:e.resolveProvider?(e,t)=>{const n=this._client,i=(e,t)=>n.sendRequest(r.CodeLensResolveRequest.type,n.code2ProtocolConverter.asCodeLens(e),t).then((i=>t.isCancellationRequested?e:n.protocol2CodeConverter.asCodeLens(i)),(i=>n.handleFailedRequest(r.CodeLensResolveRequest.type,t,i,e))),o=n.middleware;return o.resolveCodeLens?o.resolveCodeLens(e,t,i):i(e,t)}:void 0};return[i.languages.registerCodeLensProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),o),{provider:o,onDidChangeCodeLensEmitter:n}]}}t.CodeLensFeature=a},8880:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ColorProviderFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentColorRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"colorProvider").dynamicRegistration=!0}initialize(e,t){let[n,i]=this.getRegistration(t,e.colorProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideColorPresentations:(e,t,n)=>{const i=this._client,o=(e,t,n)=>{const o={color:e,textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(t.document),range:i.code2ProtocolConverter.asRange(t.range)};return i.sendRequest(r.ColorPresentationRequest.type,o,n).then((e=>n.isCancellationRequested?null:this._client.protocol2CodeConverter.asColorPresentations(e,n)),(e=>i.handleFailedRequest(r.ColorPresentationRequest.type,n,e,null)))},s=i.middleware;return s.provideColorPresentations?s.provideColorPresentations(e,t,n,o):o(e,t,n)},provideDocumentColors:(e,t)=>{const n=this._client,i=(e,t)=>{const i={textDocument:n.code2ProtocolConverter.asTextDocumentIdentifier(e)};return n.sendRequest(r.DocumentColorRequest.type,i,t).then((e=>t.isCancellationRequested?null:this._client.protocol2CodeConverter.asColorInformations(e,t)),(e=>n.handleFailedRequest(r.DocumentColorRequest.type,t,e,null)))},o=n.middleware;return o.provideDocumentColors?o.provideDocumentColors(e,t,i):i(e,t)}};return[i.languages.registerColorProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n),n]}}t.ColorProviderFeature=s},1435:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CompletionItemFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980),a=[r.CompletionItemKind.Text,r.CompletionItemKind.Method,r.CompletionItemKind.Function,r.CompletionItemKind.Constructor,r.CompletionItemKind.Field,r.CompletionItemKind.Variable,r.CompletionItemKind.Class,r.CompletionItemKind.Interface,r.CompletionItemKind.Module,r.CompletionItemKind.Property,r.CompletionItemKind.Unit,r.CompletionItemKind.Value,r.CompletionItemKind.Enum,r.CompletionItemKind.Keyword,r.CompletionItemKind.Snippet,r.CompletionItemKind.Color,r.CompletionItemKind.File,r.CompletionItemKind.Reference,r.CompletionItemKind.Folder,r.CompletionItemKind.EnumMember,r.CompletionItemKind.Constant,r.CompletionItemKind.Struct,r.CompletionItemKind.Event,r.CompletionItemKind.Operator,r.CompletionItemKind.TypeParameter];class c extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.CompletionRequest.type),this.labelDetailsSupport=new Map}fillClientCapabilities(e){let t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"completion");t.dynamicRegistration=!0,t.contextSupport=!0,t.completionItem={snippetSupport:!0,commitCharactersSupport:!0,documentationFormat:[r.MarkupKind.Markdown,r.MarkupKind.PlainText],deprecatedSupport:!0,preselectSupport:!0,tagSupport:{valueSet:[r.CompletionItemTag.Deprecated]},insertReplaceSupport:!0,resolveSupport:{properties:["documentation","detail","additionalTextEdits"]},insertTextModeSupport:{valueSet:[r.InsertTextMode.asIs,r.InsertTextMode.adjustIndentation]},labelDetailsSupport:!0},t.insertTextMode=r.InsertTextMode.adjustIndentation,t.completionItemKind={valueSet:a},t.completionList={itemDefaults:["commitCharacters","editRange","insertTextFormat","insertTextMode"]}}initialize(e,t){const n=this.getRegistrationOptions(t,e.completionProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e,t){this.labelDetailsSupport.set(t,!!e.completionItem?.labelDetailsSupport);const n=e.triggerCharacters??[],o=e.allCommitCharacters,s=e.documentSelector,a={provideCompletionItems:(e,t,n,i)=>{const s=this._client,a=this._client.middleware,c=(e,t,n,i)=>s.sendRequest(r.CompletionRequest.type,s.code2ProtocolConverter.asCompletionParams(e,t,n),i).then((e=>i.isCancellationRequested?null:s.protocol2CodeConverter.asCompletionResult(e,o,i)),(e=>s.handleFailedRequest(r.CompletionRequest.type,i,e,null)));return a.provideCompletionItem?a.provideCompletionItem(e,t,i,n,c):c(e,t,i,n)},resolveCompletionItem:e.resolveProvider?(e,n)=>{const i=this._client,o=this._client.middleware,s=(e,n)=>i.sendRequest(r.CompletionResolveRequest.type,i.code2ProtocolConverter.asCompletionItem(e,!!this.labelDetailsSupport.get(t)),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asCompletionItem(e)),(t=>i.handleFailedRequest(r.CompletionResolveRequest.type,n,t,e)));return o.resolveCompletionItem?o.resolveCompletionItem(e,n,s):s(e,n)}:void 0};return[i.languages.registerCompletionItemProvider(this._client.protocol2CodeConverter.asDocumentSelector(s),a,...n),a]}}t.CompletionItemFeature=c},6495:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncConfigurationFeature=t.toJSONObject=t.ConfigurationFeature=void 0;const i=n(9496),r=n(273),o=n(9763),s=n(1980),a=n(8909);function c(e){if(e){if(Array.isArray(e))return e.map(c);if("object"==typeof e){const t=Object.create(null);for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=c(e[n]));return t}}return e}t.ConfigurationFeature=class{constructor(e){this._client=e}getState(){return{kind:"static"}}fillClientCapabilities(e){e.workspace=e.workspace||{},e.workspace.configuration=!0}initialize(){let e=this._client;e.onRequest(r.ConfigurationRequest.type,((t,n)=>{let i=e=>{let t=[];for(let n of e.items){let e=void 0!==n.scopeUri&&null!==n.scopeUri?this._client.protocol2CodeConverter.asUri(n.scopeUri):void 0;t.push(this.getConfiguration(e,null!==n.section?n.section:void 0))}return t},r=e.middleware.workspace;return r&&r.configuration?r.configuration(t,n,i):i(t)}))}getConfiguration(e,t){let n=null;if(t){let r=t.lastIndexOf(".");if(-1===r)n=c(i.workspace.getConfiguration(void 0,e).get(t));else{let o=i.workspace.getConfiguration(t.substr(0,r),e);o&&(n=c(o.get(t.substr(r+1))))}}else{let t=i.workspace.getConfiguration(void 0,e);n={};for(let e of Object.keys(t))t.has(e)&&(n[e]=c(t.get(e)))}return void 0===n&&(n=null),n}dispose(){}},t.toJSONObject=c,t.SyncConfigurationFeature=class{constructor(e){this._client=e,this.isDisposed=!1,this._listeners=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._listeners.size>0}}get registrationType(){return r.DidChangeConfigurationNotification.type}fillClientCapabilities(e){(0,a.ensure)((0,a.ensure)(e,"workspace"),"didChangeConfiguration").dynamicRegistration=!0}initialize(){let e=this._client.clientOptions.synchronize?.configurationSection;void 0!==e&&this.register({id:s.generateUuid(),registerOptions:{section:e}})}register(e){let t=i.workspace.onDidChangeConfiguration((t=>{this.onDidChangeConfiguration(e.registerOptions.section,t)}));this._listeners.set(e.id,t),void 0!==e.registerOptions.section&&this.onDidChangeConfiguration(e.registerOptions.section,void 0)}unregister(e){let t=this._listeners.get(e);t&&(this._listeners.delete(e),t.dispose())}dispose(){for(const e of this._listeners.values())e.dispose();this._listeners.clear(),this.isDisposed=!0}onDidChangeConfiguration(e,t){if(this.isDisposed)return;let n;if(n=o.string(e)?[e]:e,void 0!==n&&void 0!==t&&!n.some((e=>t.affectsConfiguration(e))))return;const i=async e=>void 0===e?this._client.sendNotification(r.DidChangeConfigurationNotification.type,{settings:null}):this._client.sendNotification(r.DidChangeConfigurationNotification.type,{settings:this.extractSettingsInformation(e)});let s=this._client.middleware.workspace?.didChangeConfiguration;(s?s(n,i):i(n)).catch((e=>{this._client.error(`Sending notification ${r.DidChangeConfigurationNotification.type.method} failed`,e)}))}extractSettingsInformation(e){function t(e,t){let n=e;for(let e=0;e=0?i.workspace.getConfiguration(s.substr(0,a),n).get(s.substr(a+1)):i.workspace.getConfiguration(void 0,n).get(s),u){let n=e[o].split(".");t(r,n)[n[n.length-1]]=c(u)}}return r}}},707:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeclarationFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.DeclarationRequest.type)}fillClientCapabilities(e){const t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"declaration");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){const[n,i]=this.getRegistration(t,e.declarationProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDeclaration:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.DeclarationRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asDeclarationResult(e,n)),(e=>i.handleFailedRequest(r.DeclarationRequest.type,n,e,null))),s=i.middleware;return s.provideDeclaration?s.provideDeclaration(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerDeclarationProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.DeclarationFeature=s},122:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefinitionFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.DefinitionRequest.type)}fillClientCapabilities(e){let t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"definition");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.definitionProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDefinition:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.DefinitionRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asDefinitionResult(e,n)),(e=>i.handleFailedRequest(r.DefinitionRequest.type,n,e,null))),s=i.middleware;return s.provideDefinition?s.provideDefinition(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.DefinitionFeature=a},2570:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiagnosticFeature=t.DiagnosticPullMode=t.vsdiag=void 0;const i=n(1171),r=n(9496),o=n(273),s=n(1980),a=n(8909);function c(e,t){return void 0===e[t]&&(e[t]={}),e[t]}var u,l,d,h,p;!function(e){let t;!function(e){e.full="full",e.unChanged="unChanged"}(t=e.DocumentDiagnosticReportKind||(e.DocumentDiagnosticReportKind={}))}(u=t.vsdiag||(t.vsdiag={})),function(e){e.onType="onType",e.onSave="onSave"}(l=t.DiagnosticPullMode||(t.DiagnosticPullMode={})),function(e){e.active="open",e.reschedule="reschedule",e.outDated="drop"}(d||(d={}));class g{constructor(){this.open=new Set,this._onOpen=new r.EventEmitter,this._onClose=new r.EventEmitter,g.fillTabResources(this.open);void 0!==r.window.tabGroups.onDidChangeTabs?this.disposable=r.window.tabGroups.onDidChangeTabs((e=>{if(0===e.closed.length&&0===e.opened.length)return;const t=this.open,n=new Set;g.fillTabResources(n);const i=new Set,o=new Set(n);for(const e of t.values())n.has(e)?o.delete(e):i.add(e);if(this.open=n,i.size>0){const e=new Set;for(const t of i)e.add(r.Uri.parse(t));this._onClose.fire(e)}if(o.size>0){const e=new Set;for(const t of o)e.add(r.Uri.parse(t));this._onOpen.fire(e)}})):this.disposable={dispose:()=>{}}}get onClose(){return this._onClose.event}get onOpen(){return this._onOpen.event}dispose(){this.disposable.dispose()}isActive(e){return e instanceof r.Uri?r.window.activeTextEditor?.document.uri===e:r.window.activeTextEditor?.document===e}isVisible(e){const t=e instanceof r.Uri?e:e.uri;return this.open.has(t.toString())}getTabResources(){const e=new Set;return g.fillTabResources(new Set,e),e}static fillTabResources(e,t){const n=e??new Set;for(const e of r.window.tabGroups.all)for(const i of e.tabs){const e=i.input;let o;e instanceof r.TabInputText?o=e.uri:e instanceof r.TabInputTextDiff&&(o=e.modified),void 0===o||n.has(o.toString())||(n.add(o.toString()),void 0!==t&&t.add(o))}}}!function(e){e[e.document=1]="document",e[e.workspace=2]="workspace"}(h||(h={})),function(e){e.asKey=function(e){return e instanceof r.Uri?e.toString():e.uri.toString()}}(p||(p={}));class m{constructor(){this.documentPullStates=new Map,this.workspacePullStates=new Map}track(e,t,n){const i=e===h.document?this.documentPullStates:this.workspacePullStates,[o,s,a]=t instanceof r.Uri?[t.toString(),t,n]:[t.uri.toString(),t.uri,t.version];let c=i.get(o);return void 0===c&&(c={document:s,pulledVersion:a,resultId:void 0},i.set(o,c)),c}update(e,t,n,i){const o=e===h.document?this.documentPullStates:this.workspacePullStates,[s,a,c,u]=t instanceof r.Uri?[t.toString(),t,n,i]:[t.uri.toString(),t.uri,t.version,n];let l=o.get(s);void 0===l?(l={document:a,pulledVersion:c,resultId:u},o.set(s,l)):(l.pulledVersion=c,l.resultId=u)}unTrack(e,t){const n=p.asKey(t);(e===h.document?this.documentPullStates:this.workspacePullStates).delete(n)}tracks(e,t){const n=p.asKey(t);return(e===h.document?this.documentPullStates:this.workspacePullStates).has(n)}getResultId(e,t){const n=p.asKey(t),i=e===h.document?this.documentPullStates:this.workspacePullStates;return i.get(n)?.resultId}getAllResultIds(){const e=[];for(let[t,n]of this.workspacePullStates)this.documentPullStates.has(t)&&(n=this.documentPullStates.get(t)),void 0!==n.resultId&&e.push({uri:t,value:n.resultId});return e}}class f{constructor(e,t,n){this.client=e,this.tabs=t,this.options=n,this.isDisposed=!1,this.onDidChangeDiagnosticsEmitter=new r.EventEmitter,this.provider=this.createProvider(),this.diagnostics=r.languages.createDiagnosticCollection(n.identifier),this.openRequests=new Map,this.documentStates=new m,this.workspaceErrorCounter=0}knows(e,t){const n=t instanceof r.Uri?t:t.uri;return this.documentStates.tracks(e,t)||this.openRequests.has(n.toString())}forget(e,t){this.documentStates.unTrack(e,t)}pull(e,t){if(this.isDisposed)return;const n=e instanceof r.Uri?e:e.uri;this.pullAsync(e).then((()=>{t&&t()}),(e=>{this.client.error(`Document pull failed for text document ${n.toString()}`,e,!1)}))}async pullAsync(e,t){if(this.isDisposed)return;const n=e instanceof r.Uri,i=n?e:e.uri,s=i.toString();t=n?t:e.version;const c=this.openRequests.get(s),l=n?this.documentStates.track(h.document,e,t):this.documentStates.track(h.document,e);if(void 0===c){const n=new r.CancellationTokenSource;let c,p;this.openRequests.set(s,{state:d.active,document:e,version:t,tokenSource:n});try{c=await this.provider.provideDiagnostics(e,l.resultId,n.token)??{kind:u.DocumentDiagnosticReportKind.full,items:[]}}catch(t){if(t instanceof a.LSPCancellationError&&o.DiagnosticServerCancellationData.is(t.data)&&!1===t.data.retriggerRequest&&(p={state:d.outDated,document:e}),!(void 0===p&&t instanceof r.CancellationError))throw t;p={state:d.reschedule,document:e}}if(p=p??this.openRequests.get(s),void 0===p)return this.client.error(`Lost request state in diagnostic pull model. Clearing diagnostics for ${s}`),void this.diagnostics.delete(i);if(this.openRequests.delete(s),!this.tabs.isVisible(e))return void this.documentStates.unTrack(h.document,e);if(p.state===d.outDated)return;void 0!==c&&(c.kind===u.DocumentDiagnosticReportKind.full&&this.diagnostics.set(i,c.items),l.pulledVersion=t,l.resultId=c.resultId),p.state===d.reschedule&&this.pull(e)}else c.state===d.active?(c.tokenSource.cancel(),this.openRequests.set(s,{state:d.reschedule,document:c.document})):c.state===d.outDated&&this.openRequests.set(s,{state:d.reschedule,document:c.document})}forgetDocument(e){const t=e instanceof r.Uri?e:e.uri,n=t.toString(),i=this.openRequests.get(n);this.options.workspaceDiagnostics?void 0!==i?this.openRequests.set(n,{state:d.reschedule,document:e}):this.pull(e,(()=>{this.forget(h.document,e)})):(void 0!==i&&(i.state===d.active&&i.tokenSource.cancel(),this.openRequests.set(n,{state:d.outDated,document:e})),this.diagnostics.delete(t),this.forget(h.document,e))}pullWorkspace(){this.isDisposed||this.pullWorkspaceAsync().then((()=>{this.workspaceTimeout=(0,o.RAL)().timer.setTimeout((()=>{this.pullWorkspace()}),2e3)}),(e=>{e instanceof a.LSPCancellationError||o.DiagnosticServerCancellationData.is(e.data)||(this.client.error("Workspace diagnostic pull failed.",e,!1),this.workspaceErrorCounter++),this.workspaceErrorCounter<=5&&(this.workspaceTimeout=(0,o.RAL)().timer.setTimeout((()=>{this.pullWorkspace()}),2e3))}))}async pullWorkspaceAsync(){if(!this.provider.provideWorkspaceDiagnostics||this.isDisposed)return;void 0!==this.workspaceCancellation&&(this.workspaceCancellation.cancel(),this.workspaceCancellation=void 0),this.workspaceCancellation=new r.CancellationTokenSource;const e=this.documentStates.getAllResultIds().map((e=>({uri:this.client.protocol2CodeConverter.asUri(e.uri),value:e.value})));await this.provider.provideWorkspaceDiagnostics(e,this.workspaceCancellation.token,(e=>{if(e&&!this.isDisposed)for(const t of e.items)t.kind===u.DocumentDiagnosticReportKind.full&&(this.documentStates.tracks(h.document,t.uri)||this.diagnostics.set(t.uri,t.items)),this.documentStates.update(h.workspace,t.uri,t.version??void 0,t.resultId)}))}createProvider(){const e={onDidChangeDiagnostics:this.onDidChangeDiagnosticsEmitter.event,provideDiagnostics:(e,t,n)=>{const i=(e,t,n)=>{const i={identifier:this.options.identifier,textDocument:{uri:this.client.code2ProtocolConverter.asUri(e instanceof r.Uri?e:e.uri)},previousResultId:t};return!0!==this.isDisposed&&this.client.isRunning()?this.client.sendRequest(o.DocumentDiagnosticRequest.type,i,n).then((async e=>null==e||this.isDisposed||n.isCancellationRequested?{kind:u.DocumentDiagnosticReportKind.full,items:[]}:e.kind===o.DocumentDiagnosticReportKind.Full?{kind:u.DocumentDiagnosticReportKind.full,resultId:e.resultId,items:await this.client.protocol2CodeConverter.asDiagnostics(e.items,n)}:{kind:u.DocumentDiagnosticReportKind.unChanged,resultId:e.resultId}),(e=>this.client.handleFailedRequest(o.DocumentDiagnosticRequest.type,n,e,{kind:u.DocumentDiagnosticReportKind.full,items:[]}))):{kind:u.DocumentDiagnosticReportKind.full,items:[]}},s=this.client.middleware;return s.provideDiagnostics?s.provideDiagnostics(e,t,n,i):i(e,t,n)}};return this.options.workspaceDiagnostics&&(e.provideWorkspaceDiagnostics=(e,t,n)=>{const i=async e=>e.kind===o.DocumentDiagnosticReportKind.Full?{kind:u.DocumentDiagnosticReportKind.full,uri:this.client.protocol2CodeConverter.asUri(e.uri),resultId:e.resultId,version:e.version,items:await this.client.protocol2CodeConverter.asDiagnostics(e.items,t)}:{kind:u.DocumentDiagnosticReportKind.unChanged,uri:this.client.protocol2CodeConverter.asUri(e.uri),resultId:e.resultId,version:e.version},r=e=>{const t=[];for(const n of e)t.push({uri:this.client.code2ProtocolConverter.asUri(n.uri),value:n.value});return t},a=(e,t)=>{const a=(0,s.generateUuid)(),c=this.client.onProgress(o.WorkspaceDiagnosticRequest.partialResult,a,(async e=>{if(null==e)return void n(null);const t={items:[]};for(const n of e.items)try{t.items.push(await i(n))}catch(e){this.client.error("Converting workspace diagnostics failed.",e)}n(t)})),u={identifier:this.options.identifier,previousResultIds:r(e),partialResultToken:a};return!0!==this.isDisposed&&this.client.isRunning()?this.client.sendRequest(o.WorkspaceDiagnosticRequest.type,u,t).then((async e=>{if(t.isCancellationRequested)return{items:[]};const r={items:[]};for(const t of e.items)r.items.push(await i(t));return c.dispose(),n(r),{items:[]}}),(e=>(c.dispose(),this.client.handleFailedRequest(o.DocumentDiagnosticRequest.type,t,e,{items:[]})))):{items:[]}},c=this.client.middleware;return c.provideWorkspaceDiagnostics?c.provideWorkspaceDiagnostics(e,t,n,a):a(e,t)}),e}dispose(){this.isDisposed=!0,this.workspaceCancellation?.cancel(),this.workspaceTimeout?.dispose();for(const[e,t]of this.openRequests)t.state===d.active&&t.tokenSource.cancel(),this.openRequests.set(e,{state:d.outDated,document:t.document});this.diagnostics.dispose()}}class v{constructor(e){this.diagnosticRequestor=e,this.documents=new o.LinkedMap,this.isDisposed=!1}add(e){if(!0===this.isDisposed)return;const t=p.asKey(e);this.documents.has(t)||(this.documents.set(t,e,o.Touch.Last),this.trigger())}remove(e){const t=p.asKey(e);this.documents.delete(t),0===this.documents.size?this.stop():t===this.endDocumentKey()&&(this.endDocument=this.documents.last)}trigger(){!0!==this.isDisposed&&(void 0===this.intervalHandle?(this.endDocument=this.documents.last,this.intervalHandle=(0,o.RAL)().timer.setInterval((()=>{const e=this.documents.first;if(void 0!==e){const t=p.asKey(e);this.diagnosticRequestor.pull(e),this.documents.set(t,e,o.Touch.Last),t===this.endDocumentKey()&&this.stop()}}),200)):this.endDocument=this.documents.last)}dispose(){this.isDisposed=!0,this.stop(),this.documents.clear()}stop(){this.intervalHandle?.dispose(),this.intervalHandle=void 0,this.endDocument=void 0}endDocumentKey(){return void 0!==this.endDocument?p.asKey(this.endDocument):void 0}}class y{constructor(e,t,n){const s=e.clientOptions.diagnosticPullOptions??{onChange:!0,onSave:!1},a=e.protocol2CodeConverter.asDocumentSelector(n.documentSelector),c=[],u=e=>e instanceof r.Uri?(e=>{const t=n.documentSelector;if(void 0!==s.match)return s.match(t,e);for(const n of t)if(o.TextDocumentFilter.is(n)){if("string"==typeof n)return!1;if(void 0!==n.language&&"*"!==n.language)return!1;if(void 0!==n.scheme&&"*"!==n.scheme&&n.scheme!==e.scheme)return!1;if(void 0!==n.pattern){const t=new i.Minimatch(n.pattern,{noext:!0});if(!t.makeRe())return!1;if(!t.match(e.fsPath))return!1}}return!0})(e):r.languages.match(a,e)>0&&t.isVisible(e),d=e=>e instanceof r.Uri?this.activeTextDocument?.uri.toString()===e.toString():this.activeTextDocument===e;this.diagnosticRequestor=new f(e,t,n),this.backgroundScheduler=new v(this.diagnosticRequestor);const p=e=>{u(e)&&n.interFileDependencies&&!d(e)&&this.backgroundScheduler.add(e)};this.activeTextDocument=r.window.activeTextEditor?.document,r.window.onDidChangeActiveTextEditor((e=>{const t=this.activeTextDocument;this.activeTextDocument=e?.document,void 0!==t&&p(t),void 0!==this.activeTextDocument&&this.backgroundScheduler.remove(this.activeTextDocument)}));const g=e.getFeature(o.DidOpenTextDocumentNotification.method);c.push(g.onNotificationSent((e=>{const t=e.textDocument;this.diagnosticRequestor.knows(h.document,t)||u(t)&&this.diagnosticRequestor.pull(t,(()=>{p(t)}))}))),t.onOpen((e=>{for(const t of e){if(this.diagnosticRequestor.knows(h.document,t))continue;const e=t.toString();let n;for(const t of r.workspace.textDocuments)if(e===t.uri.toString()){n=t;break}void 0!==n&&u(n)?this.diagnosticRequestor.pull(n,(()=>{p(n)})):u(t)&&this.diagnosticRequestor.pull(t,(()=>{p(t)}))}}));const m=new Set;for(const e of r.workspace.textDocuments)u(e)&&(this.diagnosticRequestor.pull(e,(()=>{p(e)})),m.add(e.uri.toString()));if(!0===s.onTabs)for(const e of t.getTabResources())!m.has(e.toString())&&u(e)&&this.diagnosticRequestor.pull(e,(()=>{p(e)}));if(!0===s.onChange){const t=e.getFeature(o.DidChangeTextDocumentNotification.method);c.push(t.onNotificationSent((async e=>{const t=e.textDocument;void 0!==s.filter&&s.filter(t,l.onType)||!this.diagnosticRequestor.knows(h.document,t)||this.diagnosticRequestor.pull(t,(()=>{this.backgroundScheduler.trigger()}))})))}if(!0===s.onSave){const t=e.getFeature(o.DidSaveTextDocumentNotification.method);c.push(t.onNotificationSent((e=>{const t=e.textDocument;void 0!==s.filter&&s.filter(t,l.onSave)||!this.diagnosticRequestor.knows(h.document,t)||this.diagnosticRequestor.pull(e.textDocument,(()=>{this.backgroundScheduler.trigger()}))})))}const y=e.getFeature(o.DidCloseTextDocumentNotification.method);c.push(y.onNotificationSent((e=>{this.cleanUpDocument(e.textDocument)}))),t.onClose((e=>{for(const t of e)this.cleanUpDocument(t)})),this.diagnosticRequestor.onDidChangeDiagnosticsEmitter.event((()=>{for(const e of r.workspace.textDocuments)u(e)&&this.diagnosticRequestor.pull(e)})),!0===n.workspaceDiagnostics&&"da348dc5-c30a-4515-9d98-31ff3be38d14"!==n.identifier&&this.diagnosticRequestor.pullWorkspace(),this.disposable=r.Disposable.from(...c,this.backgroundScheduler,this.diagnosticRequestor)}get onDidChangeDiagnosticsEmitter(){return this.diagnosticRequestor.onDidChangeDiagnosticsEmitter}get diagnostics(){return this.diagnosticRequestor.provider}cleanUpDocument(e){this.diagnosticRequestor.knows(h.document,e)&&(this.diagnosticRequestor.forgetDocument(e),this.backgroundScheduler.remove(e))}}class C extends a.TextDocumentLanguageFeature{constructor(e){super(e,o.DocumentDiagnosticRequest.type)}fillClientCapabilities(e){let t=c(c(e,"textDocument"),"diagnostic");t.dynamicRegistration=!0,t.relatedDocumentSupport=!1,c(c(e,"workspace"),"diagnostics").refreshSupport=!0}initialize(e,t){this._client.onRequest(o.DiagnosticRefreshRequest.type,(async()=>{for(const e of this.getAllProviders())e.onDidChangeDiagnosticsEmitter.fire()}));let[n,i]=this.getRegistration(t,e.diagnosticProvider);n&&i&&this.register({id:n,registerOptions:i})}dispose(){void 0!==this.tabs&&(this.tabs.dispose(),this.tabs=void 0),super.dispose()}registerLanguageProvider(e){void 0===this.tabs&&(this.tabs=new g);const t=new y(this._client,this.tabs,e);return[t.disposable,t]}}t.DiagnosticFeature=C},9959:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentHighlightFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentHighlightRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"documentHighlight").dynamicRegistration=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.documentHighlightProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDocumentHighlights:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.DocumentHighlightRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asDocumentHighlights(e,n)),(e=>i.handleFailedRequest(r.DocumentHighlightRequest.type,n,e,null))),s=i.middleware;return s.provideDocumentHighlights?s.provideDocumentHighlights(e,t,n,o):o(e,t,n)}};return[i.languages.registerDocumentHighlightProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n),n]}}t.DocumentHighlightFeature=a},3471:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentLinkFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentLinkRequest.type)}fillClientCapabilities(e){const t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"documentLink");t.dynamicRegistration=!0,t.tooltipSupport=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.documentLinkProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDocumentLinks:(e,t)=>{const n=this._client,i=(e,t)=>n.sendRequest(r.DocumentLinkRequest.type,n.code2ProtocolConverter.asDocumentLinkParams(e),t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asDocumentLinks(e,t)),(e=>n.handleFailedRequest(r.DocumentLinkRequest.type,t,e,null))),o=n.middleware;return o.provideDocumentLinks?o.provideDocumentLinks(e,t,i):i(e,t)},resolveDocumentLink:e.resolveProvider?(e,t)=>{const n=this._client;let i=(e,t)=>n.sendRequest(r.DocumentLinkResolveRequest.type,n.code2ProtocolConverter.asDocumentLink(e),t).then((i=>t.isCancellationRequested?e:n.protocol2CodeConverter.asDocumentLink(i)),(i=>n.handleFailedRequest(r.DocumentLinkResolveRequest.type,t,i,e)));const o=n.middleware;return o.resolveDocumentLink?o.resolveDocumentLink(e,t,i):i(e,t)}:void 0};return[i.languages.registerDocumentLinkProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n),n]}}t.DocumentLinkFeature=a},2483:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentSymbolFeature=t.SupportedSymbolTags=t.SupportedSymbolKinds=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);t.SupportedSymbolKinds=[r.SymbolKind.File,r.SymbolKind.Module,r.SymbolKind.Namespace,r.SymbolKind.Package,r.SymbolKind.Class,r.SymbolKind.Method,r.SymbolKind.Property,r.SymbolKind.Field,r.SymbolKind.Constructor,r.SymbolKind.Enum,r.SymbolKind.Interface,r.SymbolKind.Function,r.SymbolKind.Variable,r.SymbolKind.Constant,r.SymbolKind.String,r.SymbolKind.Number,r.SymbolKind.Boolean,r.SymbolKind.Array,r.SymbolKind.Object,r.SymbolKind.Key,r.SymbolKind.Null,r.SymbolKind.EnumMember,r.SymbolKind.Struct,r.SymbolKind.Event,r.SymbolKind.Operator,r.SymbolKind.TypeParameter],t.SupportedSymbolTags=[r.SymbolTag.Deprecated];class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentSymbolRequest.type)}fillClientCapabilities(e){let n=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"documentSymbol");n.dynamicRegistration=!0,n.symbolKind={valueSet:t.SupportedSymbolKinds},n.hierarchicalDocumentSymbolSupport=!0,n.tagSupport={valueSet:t.SupportedSymbolTags},n.labelSupport=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.documentSymbolProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDocumentSymbols:(e,t)=>{const n=this._client,i=async(e,t)=>{try{const i=await n.sendRequest(r.DocumentSymbolRequest.type,n.code2ProtocolConverter.asDocumentSymbolParams(e),t);if(t.isCancellationRequested||null==i)return null;if(0===i.length)return[];{const e=i[0];return r.DocumentSymbol.is(e)?await n.protocol2CodeConverter.asDocumentSymbols(i,t):await n.protocol2CodeConverter.asSymbolInformations(i,t)}}catch(e){return n.handleFailedRequest(r.DocumentSymbolRequest.type,t,e,null)}},o=n.middleware;return o.provideDocumentSymbols?o.provideDocumentSymbols(e,t,i):i(e,t)}},o=void 0!==e.label?{label:e.label}:void 0;return[i.languages.registerDocumentSymbolProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n,o),n]}}t.DocumentSymbolFeature=a},4849:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExecuteCommandFeature=void 0;const i=n(9496),r=n(273),o=n(1980),s=n(8909);t.ExecuteCommandFeature=class{constructor(e){this._client=e,this._commands=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._commands.size>0}}get registrationType(){return r.ExecuteCommandRequest.type}fillClientCapabilities(e){(0,s.ensure)((0,s.ensure)(e,"workspace"),"executeCommand").dynamicRegistration=!0}initialize(e){e.executeCommandProvider&&this.register({id:o.generateUuid(),registerOptions:Object.assign({},e.executeCommandProvider)})}register(e){const t=this._client,n=t.middleware,o=(e,n)=>{let i={command:e,arguments:n};return t.sendRequest(r.ExecuteCommandRequest.type,i).then(void 0,(e=>t.handleFailedRequest(r.ExecuteCommandRequest.type,void 0,e,void 0)))};if(e.registerOptions.commands){const t=[];for(const r of e.registerOptions.commands)t.push(i.commands.registerCommand(r,((...e)=>n.executeCommand?n.executeCommand(r,e,o):o(r,e))));this._commands.set(e.id,t)}}unregister(e){let t=this._commands.get(e);t&&t.forEach((e=>e.dispose()))}dispose(){this._commands.forEach((e=>{e.forEach((e=>e.dispose()))})),this._commands.clear()}}},8909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkspaceFeature=t.TextDocumentLanguageFeature=t.TextDocumentEventFeature=t.DynamicDocumentFeature=t.DynamicFeature=t.StaticFeature=t.ensure=t.LSPCancellationError=void 0;const i=n(9496),r=n(273),o=n(9763),s=n(1980);class a extends i.CancellationError{constructor(e){super(),this.data=e}}t.LSPCancellationError=a,t.ensure=function(e,t){return void 0===e[t]&&(e[t]={}),e[t]},(t.StaticFeature||(t.StaticFeature={})).is=function(e){const t=e;return null!=t&&o.func(t.fillClientCapabilities)&&o.func(t.initialize)&&o.func(t.getState)&&o.func(t.dispose)&&(void 0===t.fillInitializeParams||o.func(t.fillInitializeParams))},(t.DynamicFeature||(t.DynamicFeature={})).is=function(e){const t=e;return null!=t&&o.func(t.fillClientCapabilities)&&o.func(t.initialize)&&o.func(t.getState)&&o.func(t.dispose)&&(void 0===t.fillInitializeParams||o.func(t.fillInitializeParams))&&o.func(t.register)&&o.func(t.unregister)&&void 0!==t.registrationType};class c{constructor(e){this._client=e}getState(){const e=this.getDocumentSelectors();let t=0;for(const n of e){t++;for(const e of i.workspace.textDocuments)if(i.languages.match(n,e)>0)return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!0}}const n=t>0;return{kind:"document",id:this.registrationType.method,registrations:n,matches:!1}}}t.DynamicDocumentFeature=c,t.TextDocumentEventFeature=class extends c{constructor(e,t,n,r,o,s,a){super(e),this._event=t,this._type=n,this._middleware=r,this._createParams=o,this._textDocument=s,this._selectorFilter=a,this._selectors=new Map,this._onNotificationSent=new i.EventEmitter}static textDocumentFilter(e,t){for(const n of e)if(i.languages.match(n,t)>0)return!0;return!1}getStateInfo(){return[this._selectors.values(),!1]}getDocumentSelectors(){return this._selectors.values()}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=this._event((e=>{this.callback(e).catch((e=>{this._client.error(`Sending document notification ${this._type.method} failed.`,e)}))}))),this._selectors.set(e.id,this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)))}async callback(e){const t=async e=>{const t=this._createParams(e);await this._client.sendNotification(this._type,t),this.notificationSent(this.getTextDocument(e),this._type,t)};if(this.matches(e)){const n=this._middleware();return n?n(e,(e=>t(e))):t(e)}}matches(e){return!this._client.hasDedicatedTextSynchronizationFeature(this._textDocument(e))&&(!this._selectorFilter||this._selectorFilter(this._selectors.values(),e))}get onNotificationSent(){return this._onNotificationSent.event}notificationSent(e,t,n){this._onNotificationSent.fire({textDocument:e,type:t,params:n})}unregister(e){this._selectors.delete(e),0===this._selectors.size&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._selectors.clear(),this._onNotificationSent.dispose(),this._listener&&(this._listener.dispose(),this._listener=void 0)}getProvider(e){for(const t of this._selectors.values())if(i.languages.match(t,e)>0)return{send:e=>this.callback(e)}}},t.TextDocumentLanguageFeature=class extends c{constructor(e,t){super(e),this._registrationType=t,this._registrations=new Map}*getDocumentSelectors(){for(const e of this._registrations.values()){const t=e.data.registerOptions.documentSelector;null!==t&&(yield this._client.protocol2CodeConverter.asDocumentSelector(t))}}get registrationType(){return this._registrationType}register(e){if(!e.registerOptions.documentSelector)return;let t=this.registerLanguageProvider(e.registerOptions,e.id);this._registrations.set(e.id,{disposable:t[0],data:e,provider:t[1]})}unregister(e){let t=this._registrations.get(e);void 0!==t&&t.disposable.dispose()}dispose(){this._registrations.forEach((e=>{e.disposable.dispose()})),this._registrations.clear()}getRegistration(e,t){if(!t)return[void 0,void 0];if(r.TextDocumentRegistrationOptions.is(t)){const n=r.StaticRegistrationOptions.hasId(t)?t.id:s.generateUuid(),i=t.documentSelector??e;if(i)return[n,Object.assign({},t,{documentSelector:i})]}else if(o.boolean(t)&&!0===t||r.WorkDoneProgressOptions.is(t)){if(!e)return[void 0,void 0];const n=o.boolean(t)&&!0===t?{documentSelector:e}:Object.assign({},t,{documentSelector:e});return[s.generateUuid(),n]}return[void 0,void 0]}getRegistrationOptions(e,t){if(e&&t)return o.boolean(t)&&!0===t?{documentSelector:e}:Object.assign({},t,{documentSelector:e})}getProvider(e){for(const t of this._registrations.values()){let n=t.data.registerOptions.documentSelector;if(null!==n&&i.languages.match(this._client.protocol2CodeConverter.asDocumentSelector(n),e)>0)return t.provider}}getAllProviders(){const e=[];for(const t of this._registrations.values())e.push(t.provider);return e}},t.WorkspaceFeature=class{constructor(e,t){this._client=e,this._registrationType=t,this._registrations=new Map}getState(){const e=this._registrations.size>0;return{kind:"workspace",id:this._registrationType.method,registrations:e}}get registrationType(){return this._registrationType}register(e){const t=this.registerLanguageProvider(e.registerOptions);this._registrations.set(e.id,{disposable:t[0],provider:t[1]})}unregister(e){let t=this._registrations.get(e);void 0!==t&&t.disposable.dispose()}dispose(){this._registrations.forEach((e=>{e.disposable.dispose()})),this._registrations.clear()}getProviders(){const e=[];for(const t of this._registrations.values())e.push(t.provider);return e}}},7606:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WillDeleteFilesFeature=t.WillRenameFilesFeature=t.WillCreateFilesFeature=t.DidDeleteFilesFeature=t.DidRenameFilesFeature=t.DidCreateFilesFeature=void 0;const i=n(9496),r=n(1171),o=n(273),s=n(1980);function a(e,t){return void 0===e[t]&&(e[t]={}),e[t]}function c(e,t,n){e[t]=n}class u{constructor(e,t,n,i,r){this._client=e,this._event=t,this._registrationType=n,this._clientCapability=i,this._serverCapability=r,this._filters=new Map}getState(){return{kind:"workspace",id:this._registrationType.method,registrations:this._filters.size>0}}filterSize(){return this._filters.size}get registrationType(){return this._registrationType}fillClientCapabilities(e){const t=a(a(e,"workspace"),"fileOperations");c(t,"dynamicRegistration",!0),c(t,this._clientCapability,!0)}initialize(e){const t=e.workspace?.fileOperations,n=void 0!==t?t[this._serverCapability]:void 0;if(void 0!==n?.filters)try{this.register({id:s.generateUuid(),registerOptions:{filters:n.filters}})}catch(e){this._client.warn(`Ignoring invalid glob pattern for ${this._serverCapability} registration: ${e}`)}}register(e){this._listener||(this._listener=this._event(this.send,this));const t=e.registerOptions.filters.map((e=>{const t=new r.Minimatch(e.pattern.glob,u.asMinimatchOptions(e.pattern.options));if(!t.makeRe())throw new Error(`Invalid pattern ${e.pattern.glob}!`);return{scheme:e.scheme,matcher:t,kind:e.pattern.matches}}));this._filters.set(e.id,t)}unregister(e){this._filters.delete(e),0===this._filters.size&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._filters.clear(),this._listener&&(this._listener.dispose(),this._listener=void 0)}getFileType(e){return u.getFileType(e)}async filter(e,t){const n=await Promise.all(e.files.map((async e=>{const n=t(e),r=n.fsPath.replace(/\\/g,"/");for(const e of this._filters.values())for(const t of e)if(void 0===t.scheme||t.scheme===n.scheme)if(t.matcher.match(r)){if(void 0===t.kind)return!0;const e=await this.getFileType(n);if(void 0===e)return this._client.error(`Failed to determine file type for ${n.toString()}.`),!0;if(e===i.FileType.File&&t.kind===o.FileOperationPatternKind.file||e===i.FileType.Directory&&t.kind===o.FileOperationPatternKind.folder)return!0}else if(t.kind===o.FileOperationPatternKind.folder&&await u.getFileType(n)===i.FileType.Directory&&t.matcher.match(`${r}/`))return!0;return!1}))),r=e.files.filter(((e,t)=>n[t]));return{...e,files:r}}static async getFileType(e){try{return(await i.workspace.fs.stat(e)).type}catch(e){return}}static asMinimatchOptions(e){if(void 0!==e)return!0===e.ignoreCase?{nocase:!0}:void 0}}class l extends u{constructor(e,t,n,i,r,o,s){super(e,t,n,i,r),this._notificationType=n,this._accessUri=o,this._createParams=s}async send(e){const t=await this.filter(e,this._accessUri);if(t.files.length){const e=async e=>this._client.sendNotification(this._notificationType,this._createParams(e));return this.doSend(t,e)}}}class d extends l{constructor(){super(...arguments),this._fsPathFileTypes=new Map}async getFileType(e){const t=e.fsPath;if(this._fsPathFileTypes.has(t))return this._fsPathFileTypes.get(t);const n=await u.getFileType(e);return n&&this._fsPathFileTypes.set(t,n),n}async cacheFileTypes(e,t){await this.filter(e,t)}clearFileTypeCache(){this._fsPathFileTypes.clear()}unregister(e){super.unregister(e),0===this.filterSize()&&this._willListener&&(this._willListener.dispose(),this._willListener=void 0)}dispose(){super.dispose(),this._willListener&&(this._willListener.dispose(),this._willListener=void 0)}}t.DidCreateFilesFeature=class extends l{constructor(e){super(e,i.workspace.onDidCreateFiles,o.DidCreateFilesNotification.type,"didCreate","didCreate",(e=>e),e.code2ProtocolConverter.asDidCreateFilesParams)}doSend(e,t){const n=this._client.middleware.workspace;return n?.didCreateFiles?n.didCreateFiles(e,t):t(e)}},t.DidRenameFilesFeature=class extends d{constructor(e){super(e,i.workspace.onDidRenameFiles,o.DidRenameFilesNotification.type,"didRename","didRename",(e=>e.oldUri),e.code2ProtocolConverter.asDidRenameFilesParams)}register(e){this._willListener||(this._willListener=i.workspace.onWillRenameFiles(this.willRename,this)),super.register(e)}willRename(e){e.waitUntil(this.cacheFileTypes(e,(e=>e.oldUri)))}doSend(e,t){this.clearFileTypeCache();const n=this._client.middleware.workspace;return n?.didRenameFiles?n.didRenameFiles(e,t):t(e)}},t.DidDeleteFilesFeature=class extends d{constructor(e){super(e,i.workspace.onDidDeleteFiles,o.DidDeleteFilesNotification.type,"didDelete","didDelete",(e=>e),e.code2ProtocolConverter.asDidDeleteFilesParams)}register(e){this._willListener||(this._willListener=i.workspace.onWillDeleteFiles(this.willDelete,this)),super.register(e)}willDelete(e){e.waitUntil(this.cacheFileTypes(e,(e=>e)))}doSend(e,t){this.clearFileTypeCache();const n=this._client.middleware.workspace;return n?.didDeleteFiles?n.didDeleteFiles(e,t):t(e)}};class h extends u{constructor(e,t,n,i,r,o,s){super(e,t,n,i,r),this._requestType=n,this._accessUri=o,this._createParams=s}async send(e){const t=this.waitUntil(e);e.waitUntil(t)}async waitUntil(e){const t=await this.filter(e,this._accessUri);if(t.files.length){const e=e=>this._client.sendRequest(this._requestType,this._createParams(e),e.token).then(this._client.protocol2CodeConverter.asWorkspaceEdit);return this.doSend(t,e)}}}t.WillCreateFilesFeature=class extends h{constructor(e){super(e,i.workspace.onWillCreateFiles,o.WillCreateFilesRequest.type,"willCreate","willCreate",(e=>e),e.code2ProtocolConverter.asWillCreateFilesParams)}doSend(e,t){const n=this._client.middleware.workspace;return n?.willCreateFiles?n.willCreateFiles(e,t):t(e)}},t.WillRenameFilesFeature=class extends h{constructor(e){super(e,i.workspace.onWillRenameFiles,o.WillRenameFilesRequest.type,"willRename","willRename",(e=>e.oldUri),e.code2ProtocolConverter.asWillRenameFilesParams)}doSend(e,t){const n=this._client.middleware.workspace;return n?.willRenameFiles?n.willRenameFiles(e,t):t(e)}},t.WillDeleteFilesFeature=class extends h{constructor(e){super(e,i.workspace.onWillDeleteFiles,o.WillDeleteFilesRequest.type,"willDelete","willDelete",(e=>e),e.code2ProtocolConverter.asWillDeleteFilesParams)}doSend(e,t){const n=this._client.middleware.workspace;return n?.willDeleteFiles?n.willDeleteFiles(e,t):t(e)}}},5338:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileSystemWatcherFeature=void 0;const i=n(9496),r=n(273),o=n(8909);t.FileSystemWatcherFeature=class{constructor(e,t){this._client=e,this._notifyFileEvent=t,this._watchers=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._watchers.size>0}}get registrationType(){return r.DidChangeWatchedFilesNotification.type}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"workspace"),"didChangeWatchedFiles").dynamicRegistration=!0,(0,o.ensure)((0,o.ensure)(e,"workspace"),"didChangeWatchedFiles").relativePatternSupport=!0}initialize(e,t){}register(e){if(!Array.isArray(e.registerOptions.watchers))return;const t=[];for(const n of e.registerOptions.watchers){const e=this._client.protocol2CodeConverter.asGlobPattern(n.globPattern);if(void 0===e)continue;let o=!0,s=!0,a=!0;void 0!==n.kind&&null!==n.kind&&(o=0!=(n.kind&r.WatchKind.Create),s=0!=(n.kind&r.WatchKind.Change),a=0!=(n.kind&r.WatchKind.Delete));const c=i.workspace.createFileSystemWatcher(e,!o,!s,!a);this.hookListeners(c,o,s,a,t),t.push(c)}this._watchers.set(e.id,t)}registerRaw(e,t){let n=[];for(let e of t)this.hookListeners(e,!0,!0,!0,n);this._watchers.set(e,n)}hookListeners(e,t,n,i,o){t&&e.onDidCreate((e=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(e),type:r.FileChangeType.Created})),null,o),n&&e.onDidChange((e=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(e),type:r.FileChangeType.Changed})),null,o),i&&e.onDidDelete((e=>this._notifyFileEvent({uri:this._client.code2ProtocolConverter.asUri(e),type:r.FileChangeType.Deleted})),null,o)}unregister(e){let t=this._watchers.get(e);if(t)for(let e of t)e.dispose()}dispose(){this._watchers.forEach((e=>{for(let t of e)t.dispose()})),this._watchers.clear()}}},6454:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FoldingRangeFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.FoldingRangeRequest.type)}fillClientCapabilities(e){let t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"foldingRange");t.dynamicRegistration=!0,t.rangeLimit=5e3,t.lineFoldingOnly=!0,t.foldingRangeKind={valueSet:[r.FoldingRangeKind.Comment,r.FoldingRangeKind.Imports,r.FoldingRangeKind.Region]},t.foldingRange={collapsedText:!1}}initialize(e,t){let[n,i]=this.getRegistration(t,e.foldingRangeProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideFoldingRanges:(e,t,n)=>{const i=this._client,o=(e,t,n)=>{const o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e)};return i.sendRequest(r.FoldingRangeRequest.type,o,n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asFoldingRanges(e,n)),(e=>i.handleFailedRequest(r.FoldingRangeRequest.type,n,e,null)))},s=i.middleware;return s.provideFoldingRanges?s.provideFoldingRanges(e,t,n,o):o(e,0,n)}};return[i.languages.registerFoldingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n),n]}}t.FoldingRangeFeature=s},6426:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentOnTypeFormattingFeature=t.DocumentRangeFormattingFeature=t.DocumentFormattingFeature=void 0;const i=n(9496),r=n(273),o=n(1980),s=n(8909);var a;!function(e){e.fromConfiguration=function(e){const t=i.workspace.getConfiguration("files",e);return{trimTrailingWhitespace:t.get("trimTrailingWhitespace"),trimFinalNewlines:t.get("trimFinalNewlines"),insertFinalNewline:t.get("insertFinalNewline")}}}(a||(a={}));class c extends s.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentFormattingRequest.type)}fillClientCapabilities(e){(0,s.ensure)((0,s.ensure)(e,"textDocument"),"formatting").dynamicRegistration=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.documentFormattingProvider);n&&this.register({id:o.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDocumentFormattingEdits:(e,t,n)=>{const i=this._client,o=(e,t,n)=>{const o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e),options:i.code2ProtocolConverter.asFormattingOptions(t,a.fromConfiguration(e))};return i.sendRequest(r.DocumentFormattingRequest.type,o,n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asTextEdits(e,n)),(e=>i.handleFailedRequest(r.DocumentFormattingRequest.type,n,e,null)))},s=i.middleware;return s.provideDocumentFormattingEdits?s.provideDocumentFormattingEdits(e,t,n,o):o(e,t,n)}};return[i.languages.registerDocumentFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n),n]}}t.DocumentFormattingFeature=c;class u extends s.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentRangeFormattingRequest.type)}fillClientCapabilities(e){(0,s.ensure)((0,s.ensure)(e,"textDocument"),"rangeFormatting").dynamicRegistration=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.documentRangeFormattingProvider);n&&this.register({id:o.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideDocumentRangeFormattingEdits:(e,t,n,i)=>{const o=this._client,s=(e,t,n,i)=>{const s={textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(e),range:o.code2ProtocolConverter.asRange(t),options:o.code2ProtocolConverter.asFormattingOptions(n,a.fromConfiguration(e))};return o.sendRequest(r.DocumentRangeFormattingRequest.type,s,i).then((e=>i.isCancellationRequested?null:o.protocol2CodeConverter.asTextEdits(e,i)),(e=>o.handleFailedRequest(r.DocumentRangeFormattingRequest.type,i,e,null)))},c=o.middleware;return c.provideDocumentRangeFormattingEdits?c.provideDocumentRangeFormattingEdits(e,t,n,i,s):s(e,t,n,i)}};return[i.languages.registerDocumentRangeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n),n]}}t.DocumentRangeFormattingFeature=u;class l extends s.TextDocumentLanguageFeature{constructor(e){super(e,r.DocumentOnTypeFormattingRequest.type)}fillClientCapabilities(e){(0,s.ensure)((0,s.ensure)(e,"textDocument"),"onTypeFormatting").dynamicRegistration=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.documentOnTypeFormattingProvider);n&&this.register({id:o.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideOnTypeFormattingEdits:(e,t,n,i,o)=>{const s=this._client,c=(e,t,n,i,o)=>{let c={textDocument:s.code2ProtocolConverter.asTextDocumentIdentifier(e),position:s.code2ProtocolConverter.asPosition(t),ch:n,options:s.code2ProtocolConverter.asFormattingOptions(i,a.fromConfiguration(e))};return s.sendRequest(r.DocumentOnTypeFormattingRequest.type,c,o).then((e=>o.isCancellationRequested?null:s.protocol2CodeConverter.asTextEdits(e,o)),(e=>s.handleFailedRequest(r.DocumentOnTypeFormattingRequest.type,o,e,null)))},u=s.middleware;return u.provideOnTypeFormattingEdits?u.provideOnTypeFormattingEdits(e,t,n,i,o,c):c(e,t,n,i,o)}},o=e.moreTriggerCharacter||[];return[i.languages.registerOnTypeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(t),n,e.firstTriggerCharacter,...o),n]}}t.DocumentOnTypeFormattingFeature=l},6782:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HoverFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.HoverRequest.type)}fillClientCapabilities(e){const t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"hover");t.dynamicRegistration=!0,t.contentFormat=[r.MarkupKind.Markdown,r.MarkupKind.PlainText]}initialize(e,t){const n=this.getRegistrationOptions(t,e.hoverProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideHover:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.HoverRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asHover(e)),(e=>i.handleFailedRequest(r.HoverRequest.type,n,e,null))),s=i.middleware;return s.provideHover?s.provideHover(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerHoverProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.HoverFeature=a},9889:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImplementationFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.ImplementationRequest.type)}fillClientCapabilities(e){let t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"implementation");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[n,i]=this.getRegistration(t,e.implementationProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideImplementation:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.ImplementationRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asDefinitionResult(e,n)),(e=>i.handleFailedRequest(r.ImplementationRequest.type,n,e,null))),s=i.middleware;return s.provideImplementation?s.provideImplementation(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerImplementationProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.ImplementationFeature=s},6190:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InlayHintsFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.InlayHintRequest.type)}fillClientCapabilities(e){const t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"inlayHint");t.dynamicRegistration=!0,t.resolveSupport={properties:["tooltip","textEdits","label.tooltip","label.location","label.command"]},(0,o.ensure)((0,o.ensure)(e,"workspace"),"inlayHint").refreshSupport=!0}initialize(e,t){this._client.onRequest(r.InlayHintRefreshRequest.type,(async()=>{for(const e of this.getAllProviders())e.onDidChangeInlayHints.fire()}));const[n,i]=this.getRegistration(t,e.inlayHintProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n=new i.EventEmitter,o={onDidChangeInlayHints:n.event,provideInlayHints:(e,t,n)=>{const i=this._client,o=async(e,t,n)=>{const o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e),range:i.code2ProtocolConverter.asRange(t)};try{const e=await i.sendRequest(r.InlayHintRequest.type,o,n);return n.isCancellationRequested?null:i.protocol2CodeConverter.asInlayHints(e,n)}catch(e){return i.handleFailedRequest(r.InlayHintRequest.type,n,e,null)}},s=i.middleware;return s.provideInlayHints?s.provideInlayHints(e,t,n,o):o(e,t,n)}};return o.resolveInlayHint=!0===e.resolveProvider?(e,t)=>{const n=this._client,i=async(e,t)=>{try{const i=await n.sendRequest(r.InlayHintResolveRequest.type,n.code2ProtocolConverter.asInlayHint(e),t);if(t.isCancellationRequested)return null;const o=n.protocol2CodeConverter.asInlayHint(i,t);return t.isCancellationRequested?null:o}catch(e){return n.handleFailedRequest(r.InlayHintResolveRequest.type,t,e,null)}},o=n.middleware;return o.resolveInlayHint?o.resolveInlayHint(e,t,i):i(e,t)}:void 0,[this.registerProvider(t,o),{provider:o,onDidChangeInlayHints:n}]}registerProvider(e,t){return i.languages.registerInlayHintsProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.InlayHintsFeature=s},5098:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InlineValueFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.InlineValueRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"inlineValue").dynamicRegistration=!0,(0,o.ensure)((0,o.ensure)(e,"workspace"),"inlineValue").refreshSupport=!0}initialize(e,t){this._client.onRequest(r.InlineValueRefreshRequest.type,(async()=>{for(const e of this.getAllProviders())e.onDidChangeInlineValues.fire()}));const[n,i]=this.getRegistration(t,e.inlineValueProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n=new i.EventEmitter,o={onDidChangeInlineValues:n.event,provideInlineValues:(e,t,n,i)=>{const o=this._client,s=(e,t,n,i)=>{const s={textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(e),range:o.code2ProtocolConverter.asRange(t),context:o.code2ProtocolConverter.asInlineValueContext(n)};return o.sendRequest(r.InlineValueRequest.type,s,i).then((e=>i.isCancellationRequested?null:o.protocol2CodeConverter.asInlineValues(e,i)),(e=>o.handleFailedRequest(r.InlineValueRequest.type,i,e,null)))},a=o.middleware;return a.provideInlineValues?a.provideInlineValues(e,t,n,i,s):s(e,t,n,i)}};return[this.registerProvider(t,o),{provider:o,onDidChangeInlineValues:n}]}registerProvider(e,t){return i.languages.registerInlineValuesProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.InlineValueFeature=s},3483:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedEditingFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.LinkedEditingRangeRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"linkedEditingRange").dynamicRegistration=!0}initialize(e,t){let[n,i]=this.getRegistration(t,e.linkedEditingRangeProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideLinkedEditingRanges:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.LinkedEditingRangeRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asLinkedEditingRanges(e,n)),(e=>i.handleFailedRequest(r.LinkedEditingRangeRequest.type,n,e,null))),s=i.middleware;return s.provideLinkedEditingRange?s.provideLinkedEditingRange(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerLinkedEditingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.LinkedEditingFeature=s},203:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotebookDocumentSyncFeature=void 0;const i=n(9496),r=n(1171),o=n(273),s=n(1980),a=n(9763);function c(e,t){return void 0===e[t]&&(e[t]={}),e[t]}var u,l,d,h,p;!function(e){let t;!function(t){function n(e,t){return e.map((e=>s(e,t)))}function r(e){return c(new Set,e)}function s(e,t){const n=o.NotebookCell.create(function(e){switch(e){case i.NotebookCellKind.Markup:return o.NotebookCellKind.Markup;case i.NotebookCellKind.Code:return o.NotebookCellKind.Code}}(e.kind),t.asUri(e.document.uri));return Object.keys(e.metadata).length>0&&(n.metadata=r(e.metadata)),void 0!==e.executionSummary&&a.number(e.executionSummary.executionOrder)&&a.boolean(e.executionSummary.success)&&(n.executionSummary={executionOrder:e.executionSummary.executionOrder,success:e.executionSummary.success}),n}function c(e,t){if(e.has(t))throw new Error("Can't deep copy cyclic structures.");if(Array.isArray(t)){const n=[];for(const i of t)if(null!==i&&"object"==typeof i||Array.isArray(i))n.push(c(e,i));else{if(i instanceof RegExp)throw new Error("Can't transfer regular expressions to the server");n.push(i)}return n}{const n=Object.keys(t),i=Object.create(null);for(const r of n){const n=t[r];if(null!==n&&"object"==typeof n||Array.isArray(n))i[r]=c(e,n);else{if(n instanceof RegExp)throw new Error("Can't transfer regular expressions to the server");i[r]=n}}return i}}t.asVersionedNotebookDocumentIdentifier=function(e,t){return{version:e.version,uri:t.asUri(e.uri)}},t.asNotebookDocument=function(e,t,i){const s=o.NotebookDocument.create(i.asUri(e.uri),e.notebookType,e.version,n(t,i));return Object.keys(e.metadata).length>0&&(s.metadata=r(e.metadata)),s},t.asNotebookCells=n,t.asMetadata=r,t.asNotebookCell=s,t.asTextContentChange=function(e,t){const n=t.asChangeTextDocumentParams(e,e.document.uri,e.document.version);return{document:n.textDocument,changes:n.contentChanges}},t.asNotebookDocumentChangeEvent=function(t,n){const i=Object.create(null);if(t.metadata&&(i.metadata=e.c2p.asMetadata(t.metadata)),void 0!==t.cells){const r=Object.create(null),o=t.cells;o.structure&&(r.structure={array:{start:o.structure.array.start,deleteCount:o.structure.array.deleteCount,cells:void 0!==o.structure.array.cells?o.structure.array.cells.map((t=>e.c2p.asNotebookCell(t,n))):void 0},didOpen:void 0!==o.structure.didOpen?o.structure.didOpen.map((e=>n.asOpenTextDocumentParams(e.document).textDocument)):void 0,didClose:void 0!==o.structure.didClose?o.structure.didClose.map((e=>n.asCloseTextDocumentParams(e.document).textDocument)):void 0}),void 0!==o.data&&(r.data=o.data.map((t=>e.c2p.asNotebookCell(t,n)))),void 0!==o.textContent&&(r.textContent=o.textContent.map((t=>e.c2p.asTextContentChange(t,n)))),Object.keys(r).length>0&&(i.cells=r)}return i}}(t=e.c2p||(e.c2p={}))}(u||(u={})),function(e){function t(e,t,i=!0){return!(e.kind!==t.kind||e.document.uri.toString()!==t.document.uri.toString()||e.document.languageId!==t.document.languageId||!function(e,t){return e===t||void 0!==e&&void 0!==t&&(e.executionOrder===t.executionOrder&&e.success===t.success&&function(e,t){return e===t||void 0!==e&&void 0!==t&&(e.startTime===t.startTime&&e.endTime===t.endTime)}(e.timing,t.timing))}(e.executionSummary,t.executionSummary))&&(!i||i&&n(e.metadata,t.metadata))}function n(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;const r=Array.isArray(e),o=Array.isArray(t);if(r!==o)return!1;if(r&&o){if(e.length!==t.length)return!1;for(let i=0;i=0&&c>=0&&t(e[a],n[c],i);)a--,c--;const u=a+1-s,l=s===c+1?void 0:n.slice(s,c+1);return void 0!==l?{start:s,deleteCount:u,cells:l}:{start:s,deleteCount:u}}return se.document.uri.toString())))}}}(p||(p={}));class g{constructor(e,t){this.client=e,this.options=t,this.notebookSyncInfo=new Map,this.notebookDidOpen=new Set,this.disposables=[],this.selector=e.protocol2CodeConverter.asDocumentSelector(h.asDocumentSelector(t)),i.workspace.onDidOpenNotebookDocument((e=>{this.notebookDidOpen.add(e.uri.toString()),this.didOpen(e)}),void 0,this.disposables);for(const e of i.workspace.notebookDocuments)this.notebookDidOpen.add(e.uri.toString()),this.didOpen(e);i.workspace.onDidChangeNotebookDocument((e=>this.didChangeNotebookDocument(e)),void 0,this.disposables),!0===this.options.save&&i.workspace.onDidSaveNotebookDocument((e=>this.didSave(e)),void 0,this.disposables),i.workspace.onDidCloseNotebookDocument((e=>{this.didClose(e),this.notebookDidOpen.delete(e.uri.toString())}),void 0,this.disposables)}getState(){for(const e of i.workspace.notebookDocuments)if(void 0!==this.getMatchingCells(e))return{kind:"document",id:"$internal",registrations:!0,matches:!0};return{kind:"document",id:"$internal",registrations:!0,matches:!1}}get mode(){return"notebook"}handles(e){return i.languages.match(this.selector,e)>0}didOpenNotebookCellTextDocument(e,t){if(0===i.languages.match(this.selector,t.document))return;if(!this.notebookDidOpen.has(e.uri.toString()))return;const n=this.notebookSyncInfo.get(e.uri.toString()),r=this.cellMatches(e,t);if(void 0!==n){const i=n.uris.has(t.document.uri.toString());if(r&&i||!r&&!i)return;if(r){const t=this.getMatchingCells(e);if(void 0!==t){const i=this.asNotebookDocumentChangeEvent(e,void 0,n,t);void 0!==i&&this.doSendChange(i,t).catch((()=>{}))}}}else r&&this.doSendOpen(e,[t]).catch((()=>{}))}didChangeNotebookCellTextDocument(e,t){0!==i.languages.match(this.selector,t.document)&&this.doSendChange({notebook:e,cells:{textContent:[t]}},void 0).catch((()=>{}))}didCloseNotebookCellTextDocument(e,t){const n=this.notebookSyncInfo.get(e.uri.toString());if(void 0===n)return;const i=t.document.uri,r=n.cells.findIndex((e=>e.document.uri.toString()===i.toString()));if(-1!==r)if(0===r&&1===n.cells.length)this.doSendClose(e,n.cells).catch((()=>{}));else{const t=n.cells.slice(),i=t.splice(r,1);this.doSendChange({notebook:e,cells:{structure:{array:{start:r,deleteCount:1},didClose:i}}},t).catch((()=>{}))}}dispose(){for(const e of this.disposables)e.dispose()}didOpen(e,t=this.getMatchingCells(e),n=this.notebookSyncInfo.get(e.uri.toString())){if(void 0!==n)if(void 0!==t){const i=this.asNotebookDocumentChangeEvent(e,void 0,n,t);void 0!==i&&this.doSendChange(i,t).catch((()=>{}))}else this.doSendClose(e,[]).catch((()=>{}));else{if(void 0===t)return;this.doSendOpen(e,t).catch((()=>{}))}}didChangeNotebookDocument(e){const t=e.notebook,n=this.notebookSyncInfo.get(t.uri.toString());if(void 0===n){if(0===e.contentChanges.length)return;const i=this.getMatchingCells(t);if(void 0===i)return;this.didOpen(t,i,n)}else{const i=this.getMatchingCells(t);if(void 0===i)return void this.didClose(t,n);const r=this.asNotebookDocumentChangeEvent(e.notebook,e,n,i);void 0!==r&&this.doSendChange(r,i).catch((()=>{}))}}didSave(e){void 0!==this.notebookSyncInfo.get(e.uri.toString())&&this.doSendSave(e).catch((()=>{}))}didClose(e,t=this.notebookSyncInfo.get(e.uri.toString())){if(void 0===t)return;const n=e.getCells().filter((e=>t.uris.has(e.document.uri.toString())));this.doSendClose(e,n).catch((()=>{}))}async sendDidOpenNotebookDocument(e){const t=this.getMatchingCells(e);if(void 0!==t)return this.doSendOpen(e,t)}async doSendOpen(e,t){const n=async(e,t)=>{const n=u.c2p.asNotebookDocument(e,t,this.client.code2ProtocolConverter),i=t.map((e=>this.client.code2ProtocolConverter.asTextDocumentItem(e.document)));try{await this.client.sendNotification(o.DidOpenNotebookDocumentNotification.type,{notebookDocument:n,cellTextDocuments:i})}catch(e){throw this.client.error("Sending DidOpenNotebookDocumentNotification failed",e),e}},i=this.client.middleware?.notebooks;return this.notebookSyncInfo.set(e.uri.toString(),p.create(t)),void 0!==i?.didOpen?i.didOpen(e,t,n):n(e,t)}async sendDidChangeNotebookDocument(e){return this.doSendChange(e,void 0)}async doSendChange(e,t=this.getMatchingCells(e.notebook)){const n=async e=>{try{await this.client.sendNotification(o.DidChangeNotebookDocumentNotification.type,{notebookDocument:u.c2p.asVersionedNotebookDocumentIdentifier(e.notebook,this.client.code2ProtocolConverter),change:u.c2p.asNotebookDocumentChangeEvent(e,this.client.code2ProtocolConverter)})}catch(e){throw this.client.error("Sending DidChangeNotebookDocumentNotification failed",e),e}},i=this.client.middleware?.notebooks;return void 0!==e.cells?.structure&&this.notebookSyncInfo.set(e.notebook.uri.toString(),p.create(t??[])),void 0!==i?.didChange?i?.didChange(e,n):n(e)}async sendDidSaveNotebookDocument(e){return this.doSendSave(e)}async doSendSave(e){const t=async e=>{try{await this.client.sendNotification(o.DidSaveNotebookDocumentNotification.type,{notebookDocument:{uri:this.client.code2ProtocolConverter.asUri(e.uri)}})}catch(e){throw this.client.error("Sending DidSaveNotebookDocumentNotification failed",e),e}},n=this.client.middleware?.notebooks;return void 0!==n?.didSave?n.didSave(e,t):t(e)}async sendDidCloseNotebookDocument(e){return this.doSendClose(e,this.getMatchingCells(e)??[])}async doSendClose(e,t){const n=async(e,t)=>{try{await this.client.sendNotification(o.DidCloseNotebookDocumentNotification.type,{notebookDocument:{uri:this.client.code2ProtocolConverter.asUri(e.uri)},cellTextDocuments:t.map((e=>this.client.code2ProtocolConverter.asTextDocumentIdentifier(e.document)))})}catch(e){throw this.client.error("Sending DidCloseNotebookDocumentNotification failed",e),e}},i=this.client.middleware?.notebooks;return this.notebookSyncInfo.delete(e.uri.toString()),void 0!==i?.didClose?i.didClose(e,t,n):n(e,t)}asNotebookDocumentChangeEvent(e,t,n,i){if(void 0!==t&&t.notebook!==e)throw new Error("Notebook must be identical");const r={notebook:e};let o;if(void 0!==t?.metadata&&(r.metadata=u.c2p.asMetadata(t.metadata)),void 0!==t?.cellChanges&&t.cellChanges.length>0){const e=[];o=new Set(i.map((e=>e.document.uri.toString())));for(const n of t.cellChanges)!o.has(n.cell.document.uri.toString())||void 0===n.executionSummary&&void 0===n.metadata||e.push(n.cell);e.length>0&&(r.cells=r.cells??{},r.cells.data=e)}if((void 0!==t?.contentChanges&&t.contentChanges.length>0||void 0===t)&&void 0!==n&&void 0!==i){const e=n.cells,t=i,o=l.computeDiff(e,t,!1);let s,a;if(void 0!==o){s=void 0===o.cells?new Map:new Map(o.cells.map((e=>[e.document.uri.toString(),e]))),a=0===o.deleteCount?new Map:new Map(e.slice(o.start,o.start+o.deleteCount).map((e=>[e.document.uri.toString(),e])));for(const e of Array.from(a.keys()))s.has(e)&&(a.delete(e),s.delete(e));r.cells=r.cells??{};const t=[],n=[];if(s.size>0||a.size>0){for(const e of s.values())t.push(e);for(const e of a.values())n.push(e)}r.cells.structure={array:o,didOpen:t,didClose:n}}}return Object.keys(r).length>1?r:void 0}getMatchingCells(e,t=e.getCells()){if(void 0!==this.options.notebookSelector)for(const n of this.options.notebookSelector)if(void 0===n.notebook||d.matchNotebook(n.notebook,e)){const i=this.filterCells(e,t,n.cells);return 0===i.length?void 0:i}}cellMatches(e,t){const n=this.getMatchingCells(e,[t]);return void 0!==n&&n[0]===t}filterCells(e,t,n){const i=void 0!==n?t.filter((e=>{const t=e.document.languageId;return n.some((e=>"*"===e.language||t===e.language))})):t;return"function"==typeof this.client.clientOptions.notebookDocumentOptions?.filterCells?this.client.clientOptions.notebookDocumentOptions.filterCells(e,i):i}}class m{constructor(e){this.client=e,this.registrations=new Map,this.registrationType=o.NotebookDocumentSyncRegistrationType.type,i.workspace.onDidOpenTextDocument((e=>{if(e.uri.scheme!==m.CellScheme)return;const[t,n]=this.findNotebookDocumentAndCell(e);if(void 0!==t&&void 0!==n)for(const e of this.registrations.values())e instanceof g&&e.didOpenNotebookCellTextDocument(t,n)})),i.workspace.onDidChangeTextDocument((e=>{if(0===e.contentChanges.length)return;const t=e.document;if(t.uri.scheme!==m.CellScheme)return;const[n]=this.findNotebookDocumentAndCell(t);if(void 0!==n)for(const t of this.registrations.values())t instanceof g&&t.didChangeNotebookCellTextDocument(n,e)})),i.workspace.onDidCloseTextDocument((e=>{if(e.uri.scheme!==m.CellScheme)return;const[t,n]=this.findNotebookDocumentAndCell(e);if(void 0!==t&&void 0!==n)for(const e of this.registrations.values())e instanceof g&&e.didCloseNotebookCellTextDocument(t,n)}))}getState(){if(0===this.registrations.size)return{kind:"document",id:this.registrationType.method,registrations:!1,matches:!1};for(const e of this.registrations.values()){const t=e.getState();if("document"===t.kind&&!0===t.registrations&&!0===t.matches)return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!0}}return{kind:"document",id:this.registrationType.method,registrations:!0,matches:!1}}fillClientCapabilities(e){const t=c(c(e,"notebookDocument"),"synchronization");t.dynamicRegistration=!0,t.executionSummarySupport=!0}preInitialize(e){const t=e.notebookDocumentSync;void 0!==t&&(this.dedicatedChannel=this.client.protocol2CodeConverter.asDocumentSelector(h.asDocumentSelector(t)))}initialize(e){const t=e.notebookDocumentSync;if(void 0===t)return;const n=t.id??s.generateUuid();this.register({id:n,registerOptions:t})}register(e){const t=new g(this.client,e.registerOptions);this.registrations.set(e.id,t)}unregister(e){const t=this.registrations.get(e);t&&t.dispose()}dispose(){for(const e of this.registrations.values())e.dispose();this.registrations.clear()}handles(e){if(e.uri.scheme!==m.CellScheme)return!1;if(void 0!==this.dedicatedChannel&&i.languages.match(this.dedicatedChannel,e)>0)return!0;for(const t of this.registrations.values())if(t.handles(e))return!0;return!1}getProvider(e){for(const t of this.registrations.values())if(t.handles(e.document))return t}findNotebookDocumentAndCell(e){const t=e.uri.toString();for(const e of i.workspace.notebookDocuments)for(const n of e.getCells())if(n.document.uri.toString()===t)return[e,n];return[void 0,void 0]}}t.NotebookDocumentSyncFeature=m,m.CellScheme="vscode-notebook-cell"},3603:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressFeature=void 0;const i=n(273),r=n(8071);t.ProgressFeature=class{constructor(e){this._client=e,this.activeParts=new Set}getState(){return{kind:"window",id:i.WorkDoneProgressCreateRequest.method,registrations:this.activeParts.size>0}}fillClientCapabilities(e){var t,n;(t=e,n="window",void 0===t[n]&&(t[n]=Object.create(null)),t[n]).workDoneProgress=!0}initialize(){const e=this._client,t=e=>{this.activeParts.delete(e)};e.onRequest(i.WorkDoneProgressCreateRequest.type,(e=>{this.activeParts.add(new r.ProgressPart(this._client,e.token,t))}))}dispose(){for(const e of this.activeParts)e.done();this.activeParts.clear()}}},8071:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProgressPart=void 0;const i=n(9496),r=n(273),o=n(9763);t.ProgressPart=class{constructor(e,t,n){this._client=e,this._token=t,this._reported=0,this._infinite=!1,this._lspProgressDisposable=this._client.onProgress(r.WorkDoneProgress.type,this._token,(e=>{switch(e.kind){case"begin":this.begin(e);break;case"report":this.report(e);break;case"end":this.done(),n&&n(this)}}))}begin(e){this._infinite=void 0===e.percentage,void 0!==this._lspProgressDisposable&&i.window.withProgress({location:i.ProgressLocation.Window,cancellable:e.cancellable,title:e.title},(async(t,n)=>{if(void 0!==this._lspProgressDisposable)return this._progress=t,this._cancellationToken=n,this._tokenDisposable=this._cancellationToken.onCancellationRequested((()=>{this._client.sendNotification(r.WorkDoneProgressCancelNotification.type,{token:this._token})})),this.report(e),new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}))}report(e){if(this._infinite&&o.string(e.message))void 0!==this._progress&&this._progress.report({message:e.message});else if(o.number(e.percentage)){const t=Math.max(0,Math.min(e.percentage,100)),n=Math.max(0,t-this._reported);this._reported+=n,void 0!==this._progress&&this._progress.report({message:e.message,increment:n})}}cancel(){this.cleanup(),void 0!==this._reject&&(this._reject(),this._resolve=void 0,this._reject=void 0)}done(){this.cleanup(),void 0!==this._resolve&&(this._resolve(),this._resolve=void 0,this._reject=void 0)}cleanup(){void 0!==this._lspProgressDisposable&&(this._lspProgressDisposable.dispose(),this._lspProgressDisposable=void 0),void 0!==this._tokenDisposable&&(this._tokenDisposable.dispose(),this._tokenDisposable=void 0),this._progress=void 0,this._cancellationToken=void 0}}},8714:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.CallHierarchyItem{constructor(e,t,n,i,r,o,s){super(e,t,n,i,r,o),void 0!==s&&(this.data=s)}}t.default=r},6434:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.CodeAction{constructor(e,t){super(e),this.data=t}}t.default=r},583:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.CodeLens{constructor(e){super(e)}}t.default=r},1807:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.CompletionItem{constructor(e){super(e)}}t.default=r},8785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createConverter=void 0;const i=n(9496),r=n(273),o=n(9763),s=n(4904),a=n(1807),c=n(583),u=n(8705),l=n(6434),d=n(5316),h=n(8714),p=n(1365),g=n(3912),m=n(1065),f=n(273);var v;!function(e){e.is=function(e){let t=e;return t&&o.string(t.language)&&o.string(t.value)}}(v||(v={})),t.createConverter=function(e,t,n){const y=e||(e=>i.Uri.parse(e));function C(e){return y(e)}function R(e){let t=new d.ProtocolDiagnostic(S(e.range),e.message,T(e.severity),e.data);if(void 0!==e.code)if("string"==typeof e.code||"number"==typeof e.code)r.CodeDescription.is(e.codeDescription)?t.code={value:e.code,target:C(e.codeDescription.href)}:t.code=e.code;else if(d.DiagnosticCode.is(e.code)){t.hasDiagnosticCode=!0;const n=e.code;t.code={value:n.value,target:C(n.target)}}return e.source&&(t.source=e.source),e.relatedInformation&&(t.relatedInformation=function(e){const t=new Array(e.length);for(let n=0;n0?t:void 0}(e.tags)),t}function D(e){switch(e){case r.DiagnosticTag.Unnecessary:return i.DiagnosticTag.Unnecessary;case r.DiagnosticTag.Deprecated:return i.DiagnosticTag.Deprecated;default:return}}function b(e){return e?new i.Position(e.line,e.character):void 0}function S(e){return e?new i.Range(e.start.line,e.start.character,e.end.line,e.end.character):void 0}async function w(e,t){return s.map(e,(e=>new i.Range(e.start.line,e.start.character,e.end.line,e.end.character)),t)}function T(e){if(null==e)return i.DiagnosticSeverity.Error;switch(e){case r.DiagnosticSeverity.Error:return i.DiagnosticSeverity.Error;case r.DiagnosticSeverity.Warning:return i.DiagnosticSeverity.Warning;case r.DiagnosticSeverity.Information:return i.DiagnosticSeverity.Information;case r.DiagnosticSeverity.Hint:return i.DiagnosticSeverity.Hint}return i.DiagnosticSeverity.Error}function _(e){if(o.string(e))return e;switch(e.kind){case r.MarkupKind.Markdown:return k(e.value);case r.MarkupKind.PlainText:return e.value;default:return`Unsupported Markup content received. Kind is: ${e.kind}`}}function k(e){let o;if(void 0===e||"string"==typeof e)o=new i.MarkdownString(e);else switch(e.kind){case r.MarkupKind.Markdown:o=new i.MarkdownString(e.value);break;case r.MarkupKind.PlainText:o=new i.MarkdownString,o.appendText(e.value);break;default:o=new i.MarkdownString,o.appendText(`Unsupported Markup content received. Kind is: ${e.kind}`)}return o.isTrusted=t,o.supportHtml=n,o}function P(e){if(e===r.CompletionItemTag.Deprecated)return i.CompletionItemTag.Deprecated}function x(e,t,n,s,c,u){const l=function(e){if(null==e)return[];const t=[];for(const n of e){const e=P(n);void 0!==e&&t.push(e)}return t}(e.tags),d=function(e){return r.CompletionItemLabelDetails.is(e.labelDetails)?{label:e.label,detail:e.labelDetails.detail,description:e.labelDetails.description}:e.label}(e),h=new a.default(d);e.detail&&(h.detail=e.detail),e.documentation&&(h.documentation=_(e.documentation),h.documentationFormat=o.string(e.documentation)?"$string":e.documentation.kind),e.filterText&&(h.filterText=e.filterText);const p=function(e,t,n){const o=e.insertTextFormat??n;if(void 0!==e.textEdit||void 0!==t){const[n,a]=void 0!==e.textEdit?(s=e.textEdit,r.InsertReplaceEdit.is(s)?[{inserting:S(s.insert),replacing:S(s.replace)},s.newText]:[S(s.range),s.newText]):[t,e.textEditText??e.label];return o===r.InsertTextFormat.Snippet?{text:new i.SnippetString(a),range:n,fromEdit:!0}:{text:a,range:n,fromEdit:!0}}return e.insertText?o===r.InsertTextFormat.Snippet?{text:new i.SnippetString(e.insertText),fromEdit:!1}:{text:e.insertText,fromEdit:!1}:void 0;var s}(e,n,c);if(p&&(h.insertText=p.text,h.range=p.range,h.fromEdit=p.fromEdit),o.number(e.kind)){let[t,n]=(g=e.kind,r.CompletionItemKind.Text<=g&&g<=r.CompletionItemKind.TypeParameter?[g-1,void 0]:[i.CompletionItemKind.Text,g]);h.kind=t,n&&(h.originalItemKind=n)}var g;e.sortText&&(h.sortText=e.sortText),e.additionalTextEdits&&(h.additionalTextEdits=q(e.additionalTextEdits));const m=void 0!==e.commitCharacters?o.stringArray(e.commitCharacters)?e.commitCharacters:void 0:t;m&&(h.commitCharacters=m.slice()),e.command&&(h.command=B(e.command)),!0!==e.deprecated&&!1!==e.deprecated||(h.deprecated=e.deprecated,!0===e.deprecated&&l.push(i.CompletionItemTag.Deprecated)),!0!==e.preselect&&!1!==e.preselect||(h.preselect=e.preselect);const f=e.data??u;void 0!==f&&(h.data=f),l.length>0&&(h.tags=l);const v=e.insertTextMode??s;return void 0!==v&&(h.insertTextMode=v,v===r.InsertTextMode.asIs&&(h.keepWhitespace=!0)),h}function E(e){if(e)return new i.TextEdit(S(e.range),e.newText)}async function O(e,t){if(e)return s.map(e,E,t)}function q(e){if(!e)return;const t=new Array(e.length);for(let n=0;n0){let n=[];for(let t of e.children)n.push(V(t));t.children=n}return t}function G(e,t){e.tags=U(t.tags),t.deprecated&&(e.tags?e.tags.includes(i.SymbolTag.Deprecated)||(e.tags=e.tags.concat(i.SymbolTag.Deprecated)):e.tags=[i.SymbolTag.Deprecated])}function B(e){let t={title:e.title,command:e.command};return e.arguments&&(t.arguments=e.arguments),t}const X=new Map;function J(e){if(null==e)return;let t=X.get(e);if(t)return t;let n=e.split(".");t=i.CodeActionKind.Empty;for(let e of n)t=t.append(e);return t}async function Q(e,t){if(null==e)return;let n=new l.default(e.title,e.data);return void 0!==e.kind&&(n.kind=J(e.kind)),void 0!==e.diagnostics&&(n.diagnostics=function(e){const t=new Array(e.length);for(let n=0;n{const t=function(e){if(void 0!==e)return{label:e.label,needsConfirmation:!!e.needsConfirmation,description:e.description}}(i[e]);n.set(e,t)}),t)}const o=e=>void 0===e?void 0:n.get(e),a=new i.WorkspaceEdit;if(e.documentChanges){const n=e.documentChanges;await s.forEach(n,(e=>{if(r.CreateFile.is(e))a.createFile(y(e.uri),e.options,o(e.annotationId));else if(r.RenameFile.is(e))a.renameFile(y(e.oldUri),y(e.newUri),e.options,o(e.annotationId));else if(r.DeleteFile.is(e))a.deleteFile(y(e.uri),e.options,o(e.annotationId));else{if(!r.TextDocumentEdit.is(e))throw new Error(`Unknown workspace edit change received:\n${JSON.stringify(e,void 0,4)}`);{const t=y(e.textDocument.uri);for(const n of e.edits)r.AnnotatedTextEdit.is(n)?a.replace(t,S(n.range),n.newText,o(n.annotationId)):a.replace(t,S(n.range),n.newText)}}}),t)}else if(e.changes){const n=e.changes;await s.forEach(Object.keys(n),(e=>{a.set(y(e),q(n[e]))}),t)}return a}function ee(e){let t=S(e.range),n=e.target?C(e.target):void 0,i=new u.default(t,n);return void 0!==e.tooltip&&(i.tooltip=e.tooltip),void 0!==e.data&&null!==e.data&&(i.data=e.data),i}function te(e){return new i.Color(e.red,e.green,e.blue,e.alpha)}function ne(e){return new i.ColorInformation(S(e.range),te(e.color))}function ie(e){let t=new i.ColorPresentation(e.label);return t.additionalTextEdits=q(e.additionalTextEdits),e.textEdit&&(t.textEdit=E(e.textEdit)),t}function re(e){if(e)switch(e){case r.FoldingRangeKind.Comment:return i.FoldingRangeKind.Comment;case r.FoldingRangeKind.Imports:return i.FoldingRangeKind.Imports;case r.FoldingRangeKind.Region:return i.FoldingRangeKind.Region}}function oe(e){return new i.FoldingRange(e.startLine,e.endLine,re(e.kind))}function se(e){return new i.SelectionRange(S(e.range),e.parent?se(e.parent):void 0)}function ae(e){return r.InlineValueText.is(e)?new i.InlineValueText(S(e.range),e.text):r.InlineValueVariableLookup.is(e)?new i.InlineValueVariableLookup(S(e.range),e.variableName,e.caseSensitiveLookup):new i.InlineValueEvaluatableExpression(S(e.range),e.expression)}async function ce(e,t){const n="string"==typeof e.label?e.label:await s.map(e.label,ue,t),i=new m.default(b(e.position),n);return void 0!==e.kind&&(i.kind=e.kind),void 0!==e.textEdits&&(i.textEdits=await O(e.textEdits,t)),void 0!==e.tooltip&&(i.tooltip=le(e.tooltip)),void 0!==e.paddingLeft&&(i.paddingLeft=e.paddingLeft),void 0!==e.paddingRight&&(i.paddingRight=e.paddingRight),void 0!==e.data&&(i.data=e.data),i}function ue(e){const t=new i.InlayHintLabelPart(e.value);return void 0!==e.location&&(t.location=L(e.location)),void 0!==e.tooltip&&(t.tooltip=le(e.tooltip)),void 0!==e.command&&(t.command=B(e.command)),t}function le(e){return"string"==typeof e?e:k(e)}function de(e){if(null===e)return;const t=new h.default(W(e.kind),e.name,e.detail||"",C(e.uri),S(e.range),S(e.selectionRange),e.data);return void 0!==e.tags&&(t.tags=U(e.tags)),t}async function he(e,t){return new i.CallHierarchyIncomingCall(de(e.from),await w(e.fromRanges,t))}async function pe(e,t){return new i.CallHierarchyOutgoingCall(de(e.to),await w(e.fromRanges,t))}function ge(e){return new i.SemanticTokensEdit(e.start,e.deleteCount,void 0!==e.data?new Uint32Array(e.data):void 0)}function me(e){if(null===e)return;let t=new p.default(W(e.kind),e.name,e.detail||"",C(e.uri),S(e.range),S(e.selectionRange),e.data);return void 0!==e.tags&&(t.tags=U(e.tags)),t}return X.set(r.CodeActionKind.Empty,i.CodeActionKind.Empty),X.set(r.CodeActionKind.QuickFix,i.CodeActionKind.QuickFix),X.set(r.CodeActionKind.Refactor,i.CodeActionKind.Refactor),X.set(r.CodeActionKind.RefactorExtract,i.CodeActionKind.RefactorExtract),X.set(r.CodeActionKind.RefactorInline,i.CodeActionKind.RefactorInline),X.set(r.CodeActionKind.RefactorRewrite,i.CodeActionKind.RefactorRewrite),X.set(r.CodeActionKind.Source,i.CodeActionKind.Source),X.set(r.CodeActionKind.SourceOrganizeImports,i.CodeActionKind.SourceOrganizeImports),{asUri:C,asDocumentSelector:function(e){const t=[];for(const n of e)if("string"==typeof n)t.push(n);else if(f.NotebookCellTextDocumentFilter.is(n))if("string"==typeof n.notebook)t.push({notebookType:n.notebook,language:n.language});else{const e=n.notebook.notebookType??"*";t.push({notebookType:e,scheme:n.notebook.scheme,pattern:n.notebook.pattern,language:n.language})}else f.TextDocumentFilter.is(n)&&t.push({language:n.language,scheme:n.scheme,pattern:n.pattern});return t},asDiagnostics:async function(e,t){return s.map(e,R,t)},asDiagnostic:R,asRange:S,asRanges:w,asPosition:b,asDiagnosticSeverity:T,asDiagnosticTag:D,asHover:function(e){if(e)return new i.Hover(function(e){if(o.string(e))return k(e);if(v.is(e))return k().appendCodeblock(e.value,e.language);if(Array.isArray(e)){let t=[];for(let n of e){let e=k();v.is(n)?e.appendCodeblock(n.value,n.language):e.appendMarkdown(n),t.push(e)}return t}return k(e)}(e.contents),S(e.range))},asCompletionResult:async function(e,t,n){if(!e)return;if(Array.isArray(e))return s.map(e,(e=>x(e,t)),n);const o=e,{defaultRange:a,commitCharacters:c}=function(e,t){const n=e.itemDefaults?.editRange,i=e.itemDefaults?.commitCharacters??t;return r.Range.is(n)?{defaultRange:S(n),commitCharacters:i}:void 0!==n?{defaultRange:{inserting:S(n.insert),replacing:S(n.replace)},commitCharacters:i}:{defaultRange:void 0,commitCharacters:i}}(o,t),u=await s.map(o.items,(e=>x(e,c,a,o.itemDefaults?.insertTextMode,o.itemDefaults?.insertTextFormat,o.itemDefaults?.data)),n);return new i.CompletionList(u,o.isIncomplete)},asCompletionItem:x,asTextEdit:E,asTextEdits:O,asSignatureHelp:async function(e,t){if(!e)return;let n=new i.SignatureHelp;return o.number(e.activeSignature)?n.activeSignature=e.activeSignature:n.activeSignature=0,o.number(e.activeParameter)?n.activeParameter=e.activeParameter:n.activeParameter=0,e.signatures&&(n.signatures=await F(e.signatures,t)),n},asSignatureInformations:F,asSignatureInformation:N,asParameterInformations:I,asParameterInformation:M,asDeclarationResult:async function(e,t){if(e)return j(e,t)},asDefinitionResult:async function(e,t){if(e)return j(e,t)},asLocation:L,asReferences:async function(e,t){if(e)return s.map(e,L,t)},asDocumentHighlights:async function(e,t){if(e)return s.map(e,$,t)},asDocumentHighlight:$,asDocumentHighlightKind:H,asSymbolKind:W,asSymbolTag:K,asSymbolTags:U,asSymbolInformations:async function(e,t){if(e)return s.map(e,z,t)},asSymbolInformation:z,asDocumentSymbols:async function(e,t){if(null!=e)return s.map(e,V,t)},asDocumentSymbol:V,asCommand:B,asCommands:async function(e,t){if(e)return s.map(e,B,t)},asCodeAction:Q,asCodeActionKind:J,asCodeActionKinds:function(e){if(null!=e)return e.map((e=>J(e)))},asCodeActionResult:function(e,t){return s.mapAsync(e,(async e=>r.Command.is(e)?B(e):Q(e,t)),t)},asCodeLens:Y,asCodeLenses:async function(e,t){if(e)return s.map(e,Y,t)},asWorkspaceEdit:Z,asDocumentLink:ee,asDocumentLinks:async function(e,t){if(e)return s.map(e,ee,t)},asFoldingRangeKind:re,asFoldingRange:oe,asFoldingRanges:async function(e,t){if(e)return s.map(e,oe,t)},asColor:te,asColorInformation:ne,asColorInformations:async function(e,t){if(e)return s.map(e,ne,t)},asColorPresentation:ie,asColorPresentations:async function(e,t){if(e)return s.map(e,ie,t)},asSelectionRange:se,asSelectionRanges:async function(e,t){return Array.isArray(e)?s.map(e,se,t):[]},asInlineValue:ae,asInlineValues:async function(e,t){return Array.isArray(e)?s.map(e,ae,t):[]},asInlayHint:ce,asInlayHints:async function(e,t){if(Array.isArray(e))return s.mapAsync(e,ce,t)},asSemanticTokensLegend:function(e){return e},asSemanticTokens:async function(e,t){if(null!=e)return new i.SemanticTokens(new Uint32Array(e.data),e.resultId)},asSemanticTokensEdit:ge,asSemanticTokensEdits:async function(e,t){if(null!=e)return new i.SemanticTokensEdits(e.edits.map(ge),e.resultId)},asCallHierarchyItem:de,asCallHierarchyItems:async function(e,t){if(null!==e)return s.map(e,de,t)},asCallHierarchyIncomingCall:he,asCallHierarchyIncomingCalls:async function(e,t){if(null!==e)return s.mapAsync(e,he,t)},asCallHierarchyOutgoingCall:pe,asCallHierarchyOutgoingCalls:async function(e,t){if(null!==e)return s.mapAsync(e,pe,t)},asLinkedEditingRanges:async function(e,t){if(null!=e)return new i.LinkedEditingRanges(await w(e.ranges,t),function(e){if(null!=e)return new RegExp(e)}(e.wordPattern))},asTypeHierarchyItem:me,asTypeHierarchyItems:async function(e,t){if(null!==e)return s.map(e,me,t)},asGlobPattern:function(e){if(o.string(e))return e;if(r.RelativePattern.is(e)){if(r.URI.is(e.baseUri))return new i.RelativePattern(C(e.baseUri),e.pattern);if(r.WorkspaceFolder.is(e.baseUri)){const t=i.workspace.getWorkspaceFolder(C(e.baseUri.uri));return void 0!==t?new i.RelativePattern(t,e.pattern):void 0}}}}}},5316:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProtocolDiagnostic=t.DiagnosticCode=void 0;const i=n(9496),r=n(9763);(t.DiagnosticCode||(t.DiagnosticCode={})).is=function(e){const t=e;return null!=t&&(r.number(t.value)||r.string(t.value))&&r.string(t.target)};class o extends i.Diagnostic{constructor(e,t,n,i){super(e,t,n),this.data=i,this.hasDiagnosticCode=!1}}t.ProtocolDiagnostic=o},8705:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.DocumentLink{constructor(e,t){super(e,t)}}t.default=r},1065:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.InlayHint{constructor(e,t,n){super(e,t,n)}}t.default=r},1365:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.TypeHierarchyItem{constructor(e,t,n,i,r,o,s){super(e,t,n,i,r,o),void 0!==s&&(this.data=s)}}t.default=r},3912:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(9496);class r extends i.SymbolInformation{constructor(e,t,n,r,o){const s=!(r instanceof i.Uri);super(e,t,n,s?r:new i.Location(r,new i.Range(0,0,0,0))),this.hasRange=s,void 0!==o&&(this.data=o)}}t.default=r},8480:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReferencesFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.ReferencesRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"references").dynamicRegistration=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.referencesProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t=e.documentSelector,n={provideReferences:(e,t,n,i)=>{const o=this._client,s=(e,t,n,i)=>o.sendRequest(r.ReferencesRequest.type,o.code2ProtocolConverter.asReferenceParams(e,t,n),i).then((e=>i.isCancellationRequested?null:o.protocol2CodeConverter.asReferences(e,i)),(e=>o.handleFailedRequest(r.ReferencesRequest.type,i,e,null))),a=o.middleware;return a.provideReferences?a.provideReferences(e,t,n,i,s):s(e,t,n,i)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerReferenceProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.ReferencesFeature=a},6458:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RenameFeature=void 0;const i=n(9496),r=n(273),o=n(1980),s=n(9763),a=n(8909);class c extends a.TextDocumentLanguageFeature{constructor(e){super(e,r.RenameRequest.type)}fillClientCapabilities(e){let t=(0,a.ensure)((0,a.ensure)(e,"textDocument"),"rename");t.dynamicRegistration=!0,t.prepareSupport=!0,t.prepareSupportDefaultBehavior=r.PrepareSupportDefaultBehavior.Identifier,t.honorsChangeAnnotations=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.renameProvider);n&&(s.boolean(e.renameProvider)&&(n.prepareProvider=!1),this.register({id:o.generateUuid(),registerOptions:n}))}registerLanguageProvider(e){const t=e.documentSelector,n={provideRenameEdits:(e,t,n,i)=>{const o=this._client,s=(e,t,n,i)=>{let s={textDocument:o.code2ProtocolConverter.asTextDocumentIdentifier(e),position:o.code2ProtocolConverter.asPosition(t),newName:n};return o.sendRequest(r.RenameRequest.type,s,i).then((e=>i.isCancellationRequested?null:o.protocol2CodeConverter.asWorkspaceEdit(e,i)),(e=>o.handleFailedRequest(r.RenameRequest.type,i,e,null,!1)))},a=o.middleware;return a.provideRenameEdits?a.provideRenameEdits(e,t,n,i,s):s(e,t,n,i)},prepareRename:e.prepareProvider?(e,t,n)=>{const i=this._client,o=(e,t,n)=>{let o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e),position:i.code2ProtocolConverter.asPosition(t)};return i.sendRequest(r.PrepareRenameRequest.type,o,n).then((e=>n.isCancellationRequested?null:r.Range.is(e)?i.protocol2CodeConverter.asRange(e):this.isDefaultBehavior(e)?!0===e.defaultBehavior?null:Promise.reject(new Error("The element can't be renamed.")):e&&r.Range.is(e.range)?{range:i.protocol2CodeConverter.asRange(e.range),placeholder:e.placeholder}:Promise.reject(new Error("The element can't be renamed."))),(e=>{throw"string"==typeof e.message?new Error(e.message):new Error("The element can't be renamed.")}))},s=i.middleware;return s.prepareRename?s.prepareRename(e,t,n,o):o(e,t,n)}:void 0};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerRenameProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}isDefaultBehavior(e){const t=e;return t&&s.boolean(t.defaultBehavior)}}t.RenameFeature=c},750:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionRangeFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.SelectionRangeRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"selectionRange").dynamicRegistration=!0}initialize(e,t){const[n,i]=this.getRegistration(t,e.selectionRangeProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideSelectionRanges:(e,t,n)=>{const i=this._client,o=async(e,t,n)=>{const o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e),positions:await i.code2ProtocolConverter.asPositions(t,n)};return i.sendRequest(r.SelectionRangeRequest.type,o,n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asSelectionRanges(e,n)),(e=>i.handleFailedRequest(r.SelectionRangeRequest.type,n,e,null)))},s=i.middleware;return s.provideSelectionRanges?s.provideSelectionRanges(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerSelectionRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.SelectionRangeFeature=s},9957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SemanticTokensFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(9763);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.SemanticTokensRegistrationType.type)}fillClientCapabilities(e){const t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"semanticTokens");t.dynamicRegistration=!0,t.tokenTypes=[r.SemanticTokenTypes.namespace,r.SemanticTokenTypes.type,r.SemanticTokenTypes.class,r.SemanticTokenTypes.enum,r.SemanticTokenTypes.interface,r.SemanticTokenTypes.struct,r.SemanticTokenTypes.typeParameter,r.SemanticTokenTypes.parameter,r.SemanticTokenTypes.variable,r.SemanticTokenTypes.property,r.SemanticTokenTypes.enumMember,r.SemanticTokenTypes.event,r.SemanticTokenTypes.function,r.SemanticTokenTypes.method,r.SemanticTokenTypes.macro,r.SemanticTokenTypes.keyword,r.SemanticTokenTypes.modifier,r.SemanticTokenTypes.comment,r.SemanticTokenTypes.string,r.SemanticTokenTypes.number,r.SemanticTokenTypes.regexp,r.SemanticTokenTypes.operator,r.SemanticTokenTypes.decorator],t.tokenModifiers=[r.SemanticTokenModifiers.declaration,r.SemanticTokenModifiers.definition,r.SemanticTokenModifiers.readonly,r.SemanticTokenModifiers.static,r.SemanticTokenModifiers.deprecated,r.SemanticTokenModifiers.abstract,r.SemanticTokenModifiers.async,r.SemanticTokenModifiers.modification,r.SemanticTokenModifiers.documentation,r.SemanticTokenModifiers.defaultLibrary],t.formats=[r.TokenFormat.Relative],t.requests={range:!0,full:{delta:!0}},t.multilineTokenSupport=!1,t.overlappingTokenSupport=!1,t.serverCancelSupport=!0,t.augmentsSyntaxTokens=!0,(0,o.ensure)((0,o.ensure)(e,"workspace"),"semanticTokens").refreshSupport=!0}initialize(e,t){this._client.onRequest(r.SemanticTokensRefreshRequest.type,(async()=>{for(const e of this.getAllProviders())e.onDidChangeSemanticTokensEmitter.fire()}));const[n,i]=this.getRegistration(t,e.semanticTokensProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n=s.boolean(e.full)?e.full:void 0!==e.full,o=void 0!==e.full&&"boolean"!=typeof e.full&&!0===e.full.delta,a=new i.EventEmitter,c=n?{onDidChangeSemanticTokens:a.event,provideDocumentSemanticTokens:(e,t)=>{const n=this._client,i=n.middleware,o=(e,t)=>{const i={textDocument:n.code2ProtocolConverter.asTextDocumentIdentifier(e)};return n.sendRequest(r.SemanticTokensRequest.type,i,t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asSemanticTokens(e,t)),(e=>n.handleFailedRequest(r.SemanticTokensRequest.type,t,e,null)))};return i.provideDocumentSemanticTokens?i.provideDocumentSemanticTokens(e,t,o):o(e,t)},provideDocumentSemanticTokensEdits:o?(e,t,n)=>{const i=this._client,o=i.middleware,s=(e,t,n)=>{const o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e),previousResultId:t};return i.sendRequest(r.SemanticTokensDeltaRequest.type,o,n).then((async e=>n.isCancellationRequested?null:r.SemanticTokens.is(e)?await i.protocol2CodeConverter.asSemanticTokens(e,n):await i.protocol2CodeConverter.asSemanticTokensEdits(e,n)),(e=>i.handleFailedRequest(r.SemanticTokensDeltaRequest.type,n,e,null)))};return o.provideDocumentSemanticTokensEdits?o.provideDocumentSemanticTokensEdits(e,t,n,s):s(e,t,n)}:void 0}:void 0,u=!0===e.range?{provideDocumentRangeSemanticTokens:(e,t,n)=>{const i=this._client,o=i.middleware,s=(e,t,n)=>{const o={textDocument:i.code2ProtocolConverter.asTextDocumentIdentifier(e),range:i.code2ProtocolConverter.asRange(t)};return i.sendRequest(r.SemanticTokensRangeRequest.type,o,n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asSemanticTokens(e,n)),(e=>i.handleFailedRequest(r.SemanticTokensRangeRequest.type,n,e,null)))};return o.provideDocumentRangeSemanticTokens?o.provideDocumentRangeSemanticTokens(e,t,n,s):s(e,t,n)}}:void 0,l=[],d=this._client,h=d.protocol2CodeConverter.asSemanticTokensLegend(e.legend),p=d.protocol2CodeConverter.asDocumentSelector(t);return void 0!==c&&l.push(i.languages.registerDocumentSemanticTokensProvider(p,c,h)),void 0!==u&&l.push(i.languages.registerDocumentRangeSemanticTokensProvider(p,u,h)),[new i.Disposable((()=>l.forEach((e=>e.dispose())))),{range:u,full:c,onDidChangeSemanticTokensEmitter:a}]}}t.SemanticTokensFeature=a},2908:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignatureHelpFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.SignatureHelpRequest.type)}fillClientCapabilities(e){let t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"signatureHelp");t.dynamicRegistration=!0,t.signatureInformation={documentationFormat:[r.MarkupKind.Markdown,r.MarkupKind.PlainText]},t.signatureInformation.parameterInformation={labelOffsetSupport:!0},t.signatureInformation.activeParameterSupport=!0,t.contextSupport=!0}initialize(e,t){const n=this.getRegistrationOptions(t,e.signatureHelpProvider);n&&this.register({id:s.generateUuid(),registerOptions:n})}registerLanguageProvider(e){const t={provideSignatureHelp:(e,t,n,i)=>{const o=this._client,s=(e,t,n,i)=>o.sendRequest(r.SignatureHelpRequest.type,o.code2ProtocolConverter.asSignatureHelpParams(e,t,n),i).then((e=>i.isCancellationRequested?null:o.protocol2CodeConverter.asSignatureHelp(e,i)),(e=>o.handleFailedRequest(r.SignatureHelpRequest.type,i,e,null))),a=o.middleware;return a.provideSignatureHelp?a.provideSignatureHelp(e,t,i,n,s):s(e,t,i,n)}};return[this.registerProvider(e,t),t]}registerProvider(e,t){const n=this._client.protocol2CodeConverter.asDocumentSelector(e.documentSelector);if(void 0===e.retriggerCharacters){const r=e.triggerCharacters||[];return i.languages.registerSignatureHelpProvider(n,t,...r)}{const r={triggerCharacters:e.triggerCharacters||[],retriggerCharacters:e.retriggerCharacters||[]};return i.languages.registerSignatureHelpProvider(n,t,r)}}}t.SignatureHelpFeature=a},743:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DidSaveTextDocumentFeature=t.WillSaveWaitUntilFeature=t.WillSaveFeature=t.DidChangeTextDocumentFeature=t.DidCloseTextDocumentFeature=t.DidOpenTextDocumentFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(1980);class a extends o.TextDocumentEventFeature{constructor(e,t){super(e,i.workspace.onDidOpenTextDocument,r.DidOpenTextDocumentNotification.type,(()=>e.middleware.didOpen),(t=>e.code2ProtocolConverter.asOpenTextDocumentParams(t)),(e=>e),o.TextDocumentEventFeature.textDocumentFilter),this._syncedDocuments=t}get openDocuments(){return this._syncedDocuments.values()}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){const n=e.resolvedTextDocumentSync;t&&n&&n.openClose&&this.register({id:s.generateUuid(),registerOptions:{documentSelector:t}})}get registrationType(){return r.DidOpenTextDocumentNotification.type}register(e){if(super.register(e),!e.registerOptions.documentSelector)return;const t=this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector);i.workspace.textDocuments.forEach((e=>{const n=e.uri.toString();if(!this._syncedDocuments.has(n)&&i.languages.match(t,e)>0&&!this._client.hasDedicatedTextSynchronizationFeature(e)){const t=this._client.middleware,i=e=>this._client.sendNotification(this._type,this._createParams(e));(t.didOpen?t.didOpen(e,i):i(e)).catch((e=>{this._client.error(`Sending document notification ${this._type.method} failed`,e)})),this._syncedDocuments.set(n,e)}}))}getTextDocument(e){return e}notificationSent(e,t,n){this._syncedDocuments.set(e.uri.toString(),e),super.notificationSent(e,t,n)}}t.DidOpenTextDocumentFeature=a;class c extends o.TextDocumentEventFeature{constructor(e,t,n){super(e,i.workspace.onDidCloseTextDocument,r.DidCloseTextDocumentNotification.type,(()=>e.middleware.didClose),(t=>e.code2ProtocolConverter.asCloseTextDocumentParams(t)),(e=>e),o.TextDocumentEventFeature.textDocumentFilter),this._syncedDocuments=t,this._pendingTextDocumentChanges=n}get registrationType(){return r.DidCloseTextDocumentNotification.type}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let n=e.resolvedTextDocumentSync;t&&n&&n.openClose&&this.register({id:s.generateUuid(),registerOptions:{documentSelector:t}})}async callback(e){await super.callback(e),this._pendingTextDocumentChanges.delete(e.uri.toString())}getTextDocument(e){return e}notificationSent(e,t,n){this._syncedDocuments.delete(e.uri.toString()),super.notificationSent(e,t,n)}unregister(e){const t=this._selectors.get(e);super.unregister(e);const n=this._selectors.values();this._syncedDocuments.forEach((e=>{if(i.languages.match(t,e)>0&&!this._selectorFilter(n,e)&&!this._client.hasDedicatedTextSynchronizationFeature(e)){let t=this._client.middleware,n=e=>this._client.sendNotification(this._type,this._createParams(e));this._syncedDocuments.delete(e.uri.toString()),(t.didClose?t.didClose(e,n):n(e)).catch((e=>{this._client.error(`Sending document notification ${this._type.method} failed`,e)}))}}))}}t.DidCloseTextDocumentFeature=c;class u extends o.DynamicDocumentFeature{constructor(e,t){super(e),this._changeData=new Map,this._onNotificationSent=new i.EventEmitter,this._onPendingChangeAdded=new i.EventEmitter,this._pendingTextDocumentChanges=t,this._syncKind=r.TextDocumentSyncKind.None}get onNotificationSent(){return this._onNotificationSent.event}get onPendingChangeAdded(){return this._onPendingChangeAdded.event}get syncKind(){return this._syncKind}get registrationType(){return r.DidChangeTextDocumentNotification.type}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"synchronization").dynamicRegistration=!0}initialize(e,t){let n=e.resolvedTextDocumentSync;t&&n&&void 0!==n.change&&n.change!==r.TextDocumentSyncKind.None&&this.register({id:s.generateUuid(),registerOptions:Object.assign({},{documentSelector:t},{syncKind:n.change})})}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=i.workspace.onDidChangeTextDocument(this.callback,this)),this._changeData.set(e.id,{syncKind:e.registerOptions.syncKind,documentSelector:this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)}),this.updateSyncKind(e.registerOptions.syncKind))}*getDocumentSelectors(){for(const e of this._changeData.values())yield e.documentSelector}async callback(e){if(0===e.contentChanges.length)return;const t=e.document.uri,n=e.document.version,o=[];for(const s of this._changeData.values())if(i.languages.match(s.documentSelector,e.document)>0&&!this._client.hasDedicatedTextSynchronizationFeature(e.document)){const i=this._client.middleware;if(s.syncKind===r.TextDocumentSyncKind.Incremental){const s=async e=>{const i=this._client.code2ProtocolConverter.asChangeTextDocumentParams(e,t,n);await this._client.sendNotification(r.DidChangeTextDocumentNotification.type,i),this.notificationSent(e.document,r.DidChangeTextDocumentNotification.type,i)};o.push(i.didChange?i.didChange(e,(e=>s(e))):s(e))}else if(s.syncKind===r.TextDocumentSyncKind.Full){const t=async e=>{const t=e.document.uri.toString();this._pendingTextDocumentChanges.set(t,e.document),this._onPendingChangeAdded.fire()};o.push(i.didChange?i.didChange(e,(e=>t(e))):t(e))}}return Promise.all(o).then(void 0,(e=>{throw this._client.error(`Sending document notification ${r.DidChangeTextDocumentNotification.type.method} failed`,e),e}))}notificationSent(e,t,n){this._onNotificationSent.fire({textDocument:e,type:t,params:n})}unregister(e){if(this._changeData.delete(e),0===this._changeData.size)this._listener&&(this._listener.dispose(),this._listener=void 0),this._syncKind=r.TextDocumentSyncKind.None;else{this._syncKind=r.TextDocumentSyncKind.None;for(const e of this._changeData.values())if(this.updateSyncKind(e.syncKind),this._syncKind===r.TextDocumentSyncKind.Full)break}}dispose(){this._pendingTextDocumentChanges.clear(),this._changeData.clear(),this._syncKind=r.TextDocumentSyncKind.None,this._listener&&(this._listener.dispose(),this._listener=void 0)}getPendingDocumentChanges(e){if(0===this._pendingTextDocumentChanges.size)return[];let t;if(0===e.size)t=Array.from(this._pendingTextDocumentChanges.values()),this._pendingTextDocumentChanges.clear();else{t=[];for(const n of this._pendingTextDocumentChanges)e.has(n[0])||(t.push(n[1]),this._pendingTextDocumentChanges.delete(n[0]))}return t}getProvider(e){for(const t of this._changeData.values())if(i.languages.match(t.documentSelector,e)>0)return{send:e=>this.callback(e)}}updateSyncKind(e){if(this._syncKind!==r.TextDocumentSyncKind.Full)switch(e){case r.TextDocumentSyncKind.Full:this._syncKind=e;break;case r.TextDocumentSyncKind.Incremental:this._syncKind===r.TextDocumentSyncKind.None&&(this._syncKind=r.TextDocumentSyncKind.Incremental)}}}t.DidChangeTextDocumentFeature=u;class l extends o.TextDocumentEventFeature{constructor(e){super(e,i.workspace.onWillSaveTextDocument,r.WillSaveTextDocumentNotification.type,(()=>e.middleware.willSave),(t=>e.code2ProtocolConverter.asWillSaveTextDocumentParams(t)),(e=>e.document),((e,t)=>o.TextDocumentEventFeature.textDocumentFilter(e,t.document)))}get registrationType(){return r.WillSaveTextDocumentNotification.type}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"synchronization").willSave=!0}initialize(e,t){let n=e.resolvedTextDocumentSync;t&&n&&n.willSave&&this.register({id:s.generateUuid(),registerOptions:{documentSelector:t}})}getTextDocument(e){return e.document}}t.WillSaveFeature=l;class d extends o.DynamicDocumentFeature{constructor(e){super(e),this._selectors=new Map}getDocumentSelectors(){return this._selectors.values()}get registrationType(){return r.WillSaveTextDocumentWaitUntilRequest.type}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"synchronization").willSaveWaitUntil=!0}initialize(e,t){let n=e.resolvedTextDocumentSync;t&&n&&n.willSaveWaitUntil&&this.register({id:s.generateUuid(),registerOptions:{documentSelector:t}})}register(e){e.registerOptions.documentSelector&&(this._listener||(this._listener=i.workspace.onWillSaveTextDocument(this.callback,this)),this._selectors.set(e.id,this._client.protocol2CodeConverter.asDocumentSelector(e.registerOptions.documentSelector)))}callback(e){if(o.TextDocumentEventFeature.textDocumentFilter(this._selectors.values(),e.document)&&!this._client.hasDedicatedTextSynchronizationFeature(e.document)){let t=this._client.middleware,n=e=>this._client.sendRequest(r.WillSaveTextDocumentWaitUntilRequest.type,this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(e)).then((async e=>{let t=await this._client.protocol2CodeConverter.asTextEdits(e);return void 0===t?[]:t}));e.waitUntil(t.willSaveWaitUntil?t.willSaveWaitUntil(e,n):n(e))}}unregister(e){this._selectors.delete(e),0===this._selectors.size&&this._listener&&(this._listener.dispose(),this._listener=void 0)}dispose(){this._selectors.clear(),this._listener&&(this._listener.dispose(),this._listener=void 0)}}t.WillSaveWaitUntilFeature=d;class h extends o.TextDocumentEventFeature{constructor(e){super(e,i.workspace.onDidSaveTextDocument,r.DidSaveTextDocumentNotification.type,(()=>e.middleware.didSave),(t=>e.code2ProtocolConverter.asSaveTextDocumentParams(t,this._includeText)),(e=>e),o.TextDocumentEventFeature.textDocumentFilter),this._includeText=!1}get registrationType(){return r.DidSaveTextDocumentNotification.type}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"synchronization").didSave=!0}initialize(e,t){const n=e.resolvedTextDocumentSync;if(t&&n&&n.save){const e="boolean"==typeof n.save?{includeText:!1}:{includeText:!!n.save.includeText};this.register({id:s.generateUuid(),registerOptions:Object.assign({},{documentSelector:t},e)})}}register(e){this._includeText=!!e.registerOptions.includeText,super.register(e)}getTextDocument(e){return e}}t.DidSaveTextDocumentFeature=h},328:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeDefinitionFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.TypeDefinitionRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"typeDefinition").dynamicRegistration=!0;let t=(0,o.ensure)((0,o.ensure)(e,"textDocument"),"typeDefinition");t.dynamicRegistration=!0,t.linkSupport=!0}initialize(e,t){let[n,i]=this.getRegistration(t,e.typeDefinitionProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=e.documentSelector,n={provideTypeDefinition:(e,t,n)=>{const i=this._client,o=(e,t,n)=>i.sendRequest(r.TypeDefinitionRequest.type,i.code2ProtocolConverter.asTextDocumentPositionParams(e,t),n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asDefinitionResult(e,n)),(e=>i.handleFailedRequest(r.TypeDefinitionRequest.type,n,e,null))),s=i.middleware;return s.provideTypeDefinition?s.provideTypeDefinition(e,t,n,o):o(e,t,n)}};return[this.registerProvider(t,n),n]}registerProvider(e,t){return i.languages.registerTypeDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(e),t)}}t.TypeDefinitionFeature=s},4175:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHierarchyFeature=void 0;const i=n(9496),r=n(273),o=n(8909);class s{constructor(e){this.client=e,this.middleware=e.middleware}prepareTypeHierarchy(e,t,n){const i=this.client,o=this.middleware,s=(e,t,n)=>{const o=i.code2ProtocolConverter.asTextDocumentPositionParams(e,t);return i.sendRequest(r.TypeHierarchyPrepareRequest.type,o,n).then((e=>n.isCancellationRequested?null:i.protocol2CodeConverter.asTypeHierarchyItems(e,n)),(e=>i.handleFailedRequest(r.TypeHierarchyPrepareRequest.type,n,e,null)))};return o.prepareTypeHierarchy?o.prepareTypeHierarchy(e,t,n,s):s(e,t,n)}provideTypeHierarchySupertypes(e,t){const n=this.client,i=this.middleware,o=(e,t)=>{const i={item:n.code2ProtocolConverter.asTypeHierarchyItem(e)};return n.sendRequest(r.TypeHierarchySupertypesRequest.type,i,t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asTypeHierarchyItems(e,t)),(e=>n.handleFailedRequest(r.TypeHierarchySupertypesRequest.type,t,e,null)))};return i.provideTypeHierarchySupertypes?i.provideTypeHierarchySupertypes(e,t,o):o(e,t)}provideTypeHierarchySubtypes(e,t){const n=this.client,i=this.middleware,o=(e,t)=>{const i={item:n.code2ProtocolConverter.asTypeHierarchyItem(e)};return n.sendRequest(r.TypeHierarchySubtypesRequest.type,i,t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asTypeHierarchyItems(e,t)),(e=>n.handleFailedRequest(r.TypeHierarchySubtypesRequest.type,t,e,null)))};return i.provideTypeHierarchySubtypes?i.provideTypeHierarchySubtypes(e,t,o):o(e,t)}}class a extends o.TextDocumentLanguageFeature{constructor(e){super(e,r.TypeHierarchyPrepareRequest.type)}fillClientCapabilities(e){(0,o.ensure)((0,o.ensure)(e,"textDocument"),"typeHierarchy").dynamicRegistration=!0}initialize(e,t){const[n,i]=this.getRegistration(t,e.typeHierarchyProvider);n&&i&&this.register({id:n,registerOptions:i})}registerLanguageProvider(e){const t=this._client,n=new s(t);return[i.languages.registerTypeHierarchyProvider(t.protocol2CodeConverter.asDocumentSelector(e.documentSelector),n),n]}}t.TypeHierarchyFeature=a},4904:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.forEach=t.mapAsync=t.map=t.clearTestMode=t.setTestMode=t.Semaphore=t.Delayer=void 0;const i=n(273);t.Delayer=class{constructor(e){this.defaultDelay=e,this.timeout=void 0,this.completionPromise=void 0,this.onSuccess=void 0,this.task=void 0}trigger(e,t=this.defaultDelay){return this.task=e,t>=0&&this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((e=>{this.onSuccess=e})).then((()=>{this.completionPromise=void 0,this.onSuccess=void 0;var e=this.task();return this.task=void 0,e}))),(t>=0||void 0===this.timeout)&&(this.timeout=(0,i.RAL)().timer.setTimeout((()=>{this.timeout=void 0,this.onSuccess(void 0)}),t>=0?t:this.defaultDelay)),this.completionPromise}forceDelivery(){if(!this.completionPromise)return;this.cancelTimeout();let e=this.task();return this.completionPromise=void 0,this.onSuccess=void 0,this.task=void 0,e}isTriggered(){return void 0!==this.timeout}cancel(){this.cancelTimeout(),this.completionPromise=void 0}cancelTimeout(){void 0!==this.timeout&&(this.timeout.dispose(),this.timeout=void 0)}},t.Semaphore=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise(((t,n)=>{this._waiting.push({thunk:e,resolve:t,reject:n}),this.runNext()}))}get active(){return this._active}runNext(){0!==this._waiting.length&&this._active!==this._capacity&&(0,i.RAL)().timer.setImmediate((()=>this.doRunNext()))}doRunNext(){if(0===this._waiting.length||this._active===this._capacity)return;const e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{const t=e.thunk();t instanceof Promise?t.then((t=>{this._active--,e.resolve(t),this.runNext()}),(t=>{this._active--,e.reject(t),this.runNext()})):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};let r=!1;t.setTestMode=function(){r=!0},t.clearTestMode=function(){r=!1};class o{constructor(e=15){this.yieldAfter=!0===r?Math.max(e,2):Math.max(e,15),this.startTime=Date.now(),this.counter=0,this.total=0,this.counterInterval=1}start(){this.counter=0,this.total=0,this.counterInterval=1,this.startTime=Date.now()}shouldYield(){if(++this.counter>=this.counterInterval){const e=Date.now()-this.startTime,t=Math.max(0,this.yieldAfter-e);if(this.total+=this.counter,this.counter=0,e>=this.yieldAfter||t<=1)return this.counterInterval=1,this.total=0,!0;switch(e){case 0:case 1:this.counterInterval=2*this.total}}return!1}}t.map=async function(e,t,n,r){if(0===e.length)return[];const s=new Array(e.length),a=new o(r?.yieldAfter);function c(n){a.start();for(let i=n;i{(0,i.RAL)().timer.setImmediate((()=>{e(c(u))}))}));return s},t.mapAsync=async function(e,t,n,r){if(0===e.length)return[];const s=new Array(e.length),a=new o(r?.yieldAfter);async function c(i){a.start();for(let o=i;o{(0,i.RAL)().timer.setImmediate((()=>{e(c(u))}))}));return s},t.forEach=async function(e,t,n,r){if(0===e.length)return;const s=new o(r?.yieldAfter);function a(n){s.start();for(let i=n;i{(0,i.RAL)().timer.setImmediate((()=>{e(a(c))}))}))}},9763:(e,t)=>{"use strict";function n(e){return"string"==typeof e||e instanceof String}function i(e){return"function"==typeof e}function r(e){return Array.isArray(e)}function o(e){return e&&i(e.then)}Object.defineProperty(t,"__esModule",{value:!0}),t.asPromise=t.thenable=t.typedArray=t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=i,t.array=r,t.stringArray=function(e){return r(e)&&e.every((e=>n(e)))},t.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)},t.thenable=o,t.asPromise=function(e){return e instanceof Promise?e:o(e)?new Promise(((t,n)=>{e.then((e=>t(e)),(e=>n(e)))})):Promise.resolve(e)}},1980:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.generateUuid=t.parse=t.isUUID=t.v4=t.empty=void 0;class n{constructor(e){this._value=e}asHex(){return this._value}equals(e){return this.asHex()===e.asHex()}}class i extends n{constructor(){super([i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),"-",i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),"-","4",i._randomHex(),i._randomHex(),i._randomHex(),"-",i._oneOf(i._timeHighBits),i._randomHex(),i._randomHex(),i._randomHex(),"-",i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex(),i._randomHex()].join(""))}static _oneOf(e){return e[Math.floor(e.length*Math.random())]}static _randomHex(){return i._oneOf(i._chars)}}function r(){return new i}i._chars=["0","1","2","3","4","5","6","6","7","8","9","a","b","c","d","e","f"],i._timeHighBits=["8","9","a","b"],t.empty=new n("00000000-0000-0000-0000-000000000000"),t.v4=r;const o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function s(e){return o.test(e)}t.isUUID=s,t.parse=function(e){if(!s(e))throw new Error("invalid uuid");return new n(e)},t.generateUuid=function(){return r().asHex()}},5941:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkspaceFoldersFeature=t.arrayDiff=void 0;const i=n(1980),r=n(9496),o=n(273);function s(e,t){if(null!=e)return e[t]}function a(e,t){return e.filter((e=>t.indexOf(e)<0))}t.arrayDiff=a,t.WorkspaceFoldersFeature=class{constructor(e){this._client=e,this._listeners=new Map}getState(){return{kind:"workspace",id:this.registrationType.method,registrations:this._listeners.size>0}}get registrationType(){return o.DidChangeWorkspaceFoldersNotification.type}fillInitializeParams(e){const t=r.workspace.workspaceFolders;this.initializeWithFolders(t),e.workspaceFolders=void 0===t?null:t.map((e=>this.asProtocol(e)))}initializeWithFolders(e){this._initialFolders=e}fillClientCapabilities(e){e.workspace=e.workspace||{},e.workspace.workspaceFolders=!0}initialize(e){const t=this._client;t.onRequest(o.WorkspaceFoldersRequest.type,(e=>{const n=()=>{const e=r.workspace.workspaceFolders;return void 0===e?null:e.map((e=>this.asProtocol(e)))},i=t.middleware.workspace;return i&&i.workspaceFolders?i.workspaceFolders(e,n):n()}));const n=s(s(s(e,"workspace"),"workspaceFolders"),"changeNotifications");let a;"string"==typeof n?a=n:!0===n&&(a=i.generateUuid()),a&&this.register({id:a,registerOptions:void 0})}sendInitialEvent(e){let t;if(this._initialFolders&&e){const n=a(this._initialFolders,e),i=a(e,this._initialFolders);(i.length>0||n.length>0)&&(t=this.doSendEvent(i,n))}else this._initialFolders?t=this.doSendEvent([],this._initialFolders):e&&(t=this.doSendEvent(e,[]));void 0!==t&&t.catch((e=>{this._client.error(`Sending notification ${o.DidChangeWorkspaceFoldersNotification.type.method} failed`,e)}))}doSendEvent(e,t){let n={event:{added:e.map((e=>this.asProtocol(e))),removed:t.map((e=>this.asProtocol(e)))}};return this._client.sendNotification(o.DidChangeWorkspaceFoldersNotification.type,n)}register(e){let t=e.id,n=this._client,i=r.workspace.onDidChangeWorkspaceFolders((e=>{let t=e=>this.doSendEvent(e.added,e.removed),i=n.middleware.workspace;(i&&i.didChangeWorkspaceFolders?i.didChangeWorkspaceFolders(e,t):t(e)).catch((e=>{this._client.error(`Sending notification ${o.DidChangeWorkspaceFoldersNotification.type.method} failed`,e)}))}));this._listeners.set(t,i),this.sendInitialEvent(r.workspace.workspaceFolders)}unregister(e){let t=this._listeners.get(e);void 0!==t&&(this._listeners.delete(e),t.dispose())}dispose(){for(let e of this._listeners.values())e.dispose();this._listeners.clear()}asProtocol(e){return void 0===e?null:{uri:this._client.code2ProtocolConverter.asUri(e.uri),name:e.name}}}},3051:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkspaceSymbolFeature=void 0;const i=n(9496),r=n(273),o=n(8909),s=n(2483),a=n(1980);class c extends o.WorkspaceFeature{constructor(e){super(e,r.WorkspaceSymbolRequest.type)}fillClientCapabilities(e){let t=(0,o.ensure)((0,o.ensure)(e,"workspace"),"symbol");t.dynamicRegistration=!0,t.symbolKind={valueSet:s.SupportedSymbolKinds},t.tagSupport={valueSet:s.SupportedSymbolTags},t.resolveSupport={properties:["location.range"]}}initialize(e){e.workspaceSymbolProvider&&this.register({id:a.generateUuid(),registerOptions:!0===e.workspaceSymbolProvider?{workDoneProgress:!1}:e.workspaceSymbolProvider})}registerLanguageProvider(e){const t={provideWorkspaceSymbols:(e,t)=>{const n=this._client,i=(e,t)=>n.sendRequest(r.WorkspaceSymbolRequest.type,{query:e},t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asSymbolInformations(e,t)),(e=>n.handleFailedRequest(r.WorkspaceSymbolRequest.type,t,e,null))),o=n.middleware;return o.provideWorkspaceSymbols?o.provideWorkspaceSymbols(e,t,i):i(e,t)},resolveWorkspaceSymbol:!0===e.resolveProvider?(e,t)=>{const n=this._client,i=(e,t)=>n.sendRequest(r.WorkspaceSymbolResolveRequest.type,n.code2ProtocolConverter.asWorkspaceSymbol(e),t).then((e=>t.isCancellationRequested?null:n.protocol2CodeConverter.asSymbolInformation(e)),(e=>n.handleFailedRequest(r.WorkspaceSymbolResolveRequest.type,t,e,null))),o=n.middleware;return o.resolveWorkspaceSymbol?o.resolveWorkspaceSymbol(e,t,i):i(e,t)}:void 0};return[i.languages.registerWorkspaceSymbolProvider(t),t]}}t.WorkspaceSymbolFeature=c},2850:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingMonitor=t.LanguageClient=t.TransportKind=void 0;const o=n(2081),s=n(7147),a=n(1017),c=n(9496),u=n(9763),l=n(4384),d=n(794),h=n(6560),p=n(3959),g=n(5712);r(n(6560),t),r(n(5734),t);const m="^1.67.0";var f,v,y,C,R,D;!function(e){e[e.stdio=0]="stdio",e[e.ipc=1]="ipc",e[e.pipe=2]="pipe",e[e.socket=3]="socket"}(f=t.TransportKind||(t.TransportKind={})),function(e){e.isSocket=function(e){const t=e;return t&&t.kind===f.socket&&u.number(t.port)}}(v||(v={})),function(e){e.is=function(e){return u.string(e.command)}}(y||(y={})),function(e){e.is=function(e){return u.string(e.module)}}(C||(C={})),function(e){e.is=function(e){let t=e;return t&&void 0!==t.writer&&void 0!==t.reader}}(R||(R={})),function(e){e.is=function(e){let t=e;return t&&void 0!==t.process&&"boolean"==typeof t.detached}}(D||(D={}));class b extends l.BaseLanguageClient{constructor(e,t,n,i,r){let o,s,a,c,l;u.string(t)?(o=e,s=t,a=n,c=i,l=!!r):(o=e.toLowerCase(),s=e,a=t,c=n,l=i),void 0===l&&(l=!1),super(o,s,c),this._serverOptions=a,this._forceDebug=l,this._isInDebugMode=l;try{this.checkVersion()}catch(e){throw u.string(e.message)&&this.outputChannel.appendLine(e.message),e}}checkVersion(){const e=p(c.version);if(!e)throw new Error(`No valid VS Code version detected. Version string is: ${c.version}`);if(e.prerelease&&e.prerelease.length>0&&(e.prerelease=[]),!g(e,m))throw new Error(`The language client requires VS Code version ${m} but received version ${c.version}`)}get isInDebugMode(){return this._isInDebugMode}async restart(){await this.stop(),this.isInDebugMode?(await new Promise((e=>setTimeout(e,1e3))),await this.start()):await this.start()}stop(e=2e3){return super.stop(e).finally((()=>{if(this._serverProcess){const e=this._serverProcess;this._serverProcess=void 0,void 0!==this._isDetached&&this._isDetached||this.checkProcessDied(e),this._isDetached=void 0}}))}checkProcessDied(e){e&&void 0!==e.pid&&setTimeout((()=>{try{void 0!==e.pid&&(process.kill(e.pid,0),(0,d.terminate)(e))}catch(e){}}),2e3)}handleConnectionClosed(){return this._serverProcess=void 0,super.handleConnectionClosed()}fillInitializeParams(e){super.fillInitializeParams(e),null===e.processId&&(e.processId=process.pid)}createMessageTransports(e){function t(e,t){if(!e&&!t)return;const n=Object.create(null);return Object.keys(process.env).forEach((e=>n[e]=process.env[e])),t&&(n.ELECTRON_RUN_AS_NODE="1",n.ELECTRON_NO_ASAR="1"),e&&Object.keys(e).forEach((t=>n[t]=e[t])),n}const n=["--debug=","--debug-brk=","--inspect=","--inspect-brk="],i=["--debug","--debug-brk","--inspect","--inspect-brk"];function r(e){if(null===e.stdin||null===e.stdout||null===e.stderr)throw new Error("Process created without stdio streams")}const s=this._serverOptions;if(u.func(s))return s().then((t=>{if(l.MessageTransports.is(t))return this._isDetached=!!t.detached,t;if(R.is(t))return this._isDetached=!!t.detached,{reader:new h.StreamMessageReader(t.reader),writer:new h.StreamMessageWriter(t.writer)};{let n;return D.is(t)?(n=t.process,this._isDetached=t.detached):(n=t,this._isDetached=!1),n.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),{reader:new h.StreamMessageReader(n.stdout),writer:new h.StreamMessageWriter(n.stdin)}}}));let a,c=s;return c.run||c.debug?this._forceDebug||function(){let e=process.execArgv;return!!e&&e.some((e=>n.some((t=>e.startsWith(t)))||i.some((t=>e===t))))}()?(a=c.debug,this._isInDebugMode=!0):(a=c.run,this._isInDebugMode=!1):a=s,this._getServerWorkingDir(a.options).then((n=>{if(C.is(a)&&a.module){let i=a,s=i.transport||f.stdio;if(!i.runtime){let a;return new Promise(((c,l)=>{const d=(i.args&&i.args.slice())??[];s===f.ipc?d.push("--node-ipc"):s===f.stdio?d.push("--stdio"):s===f.pipe?(a=(0,h.generateRandomPipeName)(),d.push(`--pipe=${a}`)):v.isSocket(s)&&d.push(`--socket=${s.port}`),d.push(`--clientProcessId=${process.pid.toString()}`);const p=i.options??Object.create(null);if(p.env=t(p.env,!0),p.execArgv=p.execArgv||[],p.cwd=n,p.silent=!0,s===f.ipc||s===f.stdio){const t=o.fork(i.module,d||[],p);r(t),this._serverProcess=t,t.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),s===f.ipc?(t.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),c({reader:new h.IPCMessageReader(this._serverProcess),writer:new h.IPCMessageWriter(this._serverProcess)})):c({reader:new h.StreamMessageReader(t.stdout),writer:new h.StreamMessageWriter(t.stdin)})}else s===f.pipe?(0,h.createClientPipeTransport)(a).then((t=>{const n=o.fork(i.module,d||[],p);r(n),this._serverProcess=n,n.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),n.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),t.onConnected().then((e=>{c({reader:e[0],writer:e[1]})}),l)}),l):v.isSocket(s)&&(0,h.createClientSocketTransport)(s.port).then((t=>{const n=o.fork(i.module,d||[],p);r(n),this._serverProcess=n,n.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),n.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),t.onConnected().then((e=>{c({reader:e[0],writer:e[1]})}),l)}),l)}))}{const r=[],a=i.options??Object.create(null);a.execArgv&&a.execArgv.forEach((e=>r.push(e))),r.push(i.module),i.args&&i.args.forEach((e=>r.push(e)));const c=Object.create(null);c.cwd=n,c.env=t(a.env,!1);const l=this._getRuntimePath(i.runtime,n);let d;if(s===f.ipc?(c.stdio=[null,null,null,"ipc"],r.push("--node-ipc")):s===f.stdio?r.push("--stdio"):s===f.pipe?(d=(0,h.generateRandomPipeName)(),r.push(`--pipe=${d}`)):v.isSocket(s)&&r.push(`--socket=${s.port}`),r.push(`--clientProcessId=${process.pid.toString()}`),s===f.ipc||s===f.stdio){const t=o.spawn(l,r,c);return t&&t.pid?(this._serverProcess=t,t.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),s===f.ipc?(t.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),Promise.resolve({reader:new h.IPCMessageReader(t),writer:new h.IPCMessageWriter(t)})):Promise.resolve({reader:new h.StreamMessageReader(t.stdout),writer:new h.StreamMessageWriter(t.stdin)})):S(t,`Launching server using runtime ${l} failed.`)}if(s===f.pipe)return(0,h.createClientPipeTransport)(d).then((t=>{const n=o.spawn(l,r,c);return n&&n.pid?(this._serverProcess=n,n.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),n.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),t.onConnected().then((e=>({reader:e[0],writer:e[1]})))):S(n,`Launching server using runtime ${l} failed.`)}));if(v.isSocket(s))return(0,h.createClientSocketTransport)(s.port).then((t=>{const n=o.spawn(l,r,c);return n&&n.pid?(this._serverProcess=n,n.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),n.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),t.onConnected().then((e=>({reader:e[0],writer:e[1]})))):S(n,`Launching server using runtime ${l} failed.`)}))}}else if(y.is(a)&&a.command){const t=a,i=void 0!==a.args?a.args.slice(0):[];let r;const s=a.transport;if(s===f.stdio)i.push("--stdio");else if(s===f.pipe)r=(0,h.generateRandomPipeName)(),i.push(`--pipe=${r}`);else if(v.isSocket(s))i.push(`--socket=${s.port}`);else if(s===f.ipc)throw new Error("Transport kind ipc is not support for command executable");const c=Object.assign({},t.options);if(c.cwd=c.cwd||n,void 0===s||s===f.stdio){const n=o.spawn(t.command,i,c);return n&&n.pid?(n.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),this._serverProcess=n,this._isDetached=!!c.detached,Promise.resolve({reader:new h.StreamMessageReader(n.stdout),writer:new h.StreamMessageWriter(n.stdin)})):S(n,`Launching server using command ${t.command} failed.`)}if(s===f.pipe)return(0,h.createClientPipeTransport)(r).then((n=>{const r=o.spawn(t.command,i,c);return r&&r.pid?(this._serverProcess=r,this._isDetached=!!c.detached,r.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),r.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),n.onConnected().then((e=>({reader:e[0],writer:e[1]})))):S(r,`Launching server using command ${t.command} failed.`)}));if(v.isSocket(s))return(0,h.createClientSocketTransport)(s.port).then((n=>{const r=o.spawn(t.command,i,c);return r&&r.pid?(this._serverProcess=r,this._isDetached=!!c.detached,r.stderr.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),r.stdout.on("data",(t=>this.outputChannel.append(u.string(t)?t:t.toString(e)))),n.onConnected().then((e=>({reader:e[0],writer:e[1]})))):S(r,`Launching server using command ${t.command} failed.`)}))}return Promise.reject(new Error("Unsupported server configuration "+JSON.stringify(s,null,4)))}))}_getRuntimePath(e,t){if(a.isAbsolute(e))return e;const n=this._mainGetRootPath();if(void 0!==n){const t=a.join(n,e);if(s.existsSync(t))return t}if(void 0!==t){const n=a.join(t,e);if(s.existsSync(n))return n}return e}_mainGetRootPath(){let e=c.workspace.workspaceFolders;if(!e||0===e.length)return;let t=e[0];return"file"===t.uri.scheme?t.uri.fsPath:void 0}_getServerWorkingDir(e){let t=e&&e.cwd;return t||(t=this.clientOptions.workspaceFolder?this.clientOptions.workspaceFolder.uri.fsPath:this._mainGetRootPath()),t?new Promise((e=>{s.lstat(t,((n,i)=>{e(!n&&i.isDirectory()?t:void 0)}))})):Promise.resolve(void 0)}}function S(e,t){return null===e?Promise.reject(t):new Promise(((n,i)=>{e.on("error",(e=>{i(`${t} ${e}`)})),setImmediate((()=>i(t)))}))}t.LanguageClient=b,t.SettingMonitor=class{constructor(e,t){this._client=e,this._setting=t,this._listeners=[]}start(){return c.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration,this,this._listeners),this.onDidChangeConfiguration(),new c.Disposable((()=>{this._client.needsStop()&&this._client.stop()}))}onDidChangeConfiguration(){let e=this._setting.indexOf("."),t=e>=0?this._setting.substr(0,e):this._setting,n=e>=0?this._setting.substr(e+1):void 0,i=n?c.workspace.getConfiguration(t).get(n,!1):c.workspace.getConfiguration(t);i&&this._client.needsStart()?this._client.start().catch((e=>this._client.error("Start failed after configuration change",e,"force"))):!i&&this._client.needsStop()&&this._client.stop().catch((e=>this._client.error("Stop failed after configuration change",e,"force")))}}},794:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.terminate=void 0;const i=n(2081),r=n(1017),o="win32"===process.platform,s="darwin"===process.platform,a="linux"===process.platform;t.terminate=function(e,t){if(o)try{let n={stdio:["pipe","pipe","ignore"]};return t&&(n.cwd=t),i.execFileSync("taskkill",["/T","/F","/PID",e.pid.toString()],n),!0}catch(e){return!1}else{if(!a&&!s)return e.kill("SIGKILL"),!0;try{var n=(0,r.join)(__dirname,"terminateProcess.sh");return!i.spawnSync(n,[e.pid.toString()]).error}catch(e){return!1}}}},2847:(e,t,n)=>{"use strict";e.exports=n(2850)},1661:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.LSPErrorCodes=t.createProtocolConnection=void 0,r(n(4389),t),r(n(1674),t),r(n(6140),t),r(n(542),t);var o,s=n(3767);Object.defineProperty(t,"createProtocolConnection",{enumerable:!0,get:function(){return s.createProtocolConnection}}),(o=t.LSPErrorCodes||(t.LSPErrorCodes={})).lspReservedErrorRangeStart=-32899,o.RequestFailed=-32803,o.ServerCancelled=-32802,o.ContentModified=-32801,o.RequestCancelled=-32800,o.lspReservedErrorRangeEnd=-32800},3767:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createProtocolConnection=void 0;const i=n(4389);t.createProtocolConnection=function(e,t,n,r){return i.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,i.createMessageConnection)(e,t,n,r)}},6140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProtocolNotificationType=t.ProtocolNotificationType0=t.ProtocolRequestType=t.ProtocolRequestType0=t.RegistrationType=t.MessageDirection=void 0;const i=n(4389);var r;(r=t.MessageDirection||(t.MessageDirection={})).clientToServer="clientToServer",r.serverToClient="serverToClient",r.both="both",t.RegistrationType=class{constructor(e){this.method=e}};class o extends i.RequestType0{constructor(e){super(e)}}t.ProtocolRequestType0=o;class s extends i.RequestType{constructor(e){super(e,i.ParameterStructures.byName)}}t.ProtocolRequestType=s;class a extends i.NotificationType0{constructor(e){super(e)}}t.ProtocolNotificationType0=a;class c extends i.NotificationType{constructor(e){super(e,i.ParameterStructures.byName)}}t.ProtocolNotificationType=c},2918:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallHierarchyOutgoingCallsRequest=t.CallHierarchyIncomingCallsRequest=t.CallHierarchyPrepareRequest=void 0;const i=n(6140);var r,o,s;(s=t.CallHierarchyPrepareRequest||(t.CallHierarchyPrepareRequest={})).method="textDocument/prepareCallHierarchy",s.messageDirection=i.MessageDirection.clientToServer,s.type=new i.ProtocolRequestType(s.method),(o=t.CallHierarchyIncomingCallsRequest||(t.CallHierarchyIncomingCallsRequest={})).method="callHierarchy/incomingCalls",o.messageDirection=i.MessageDirection.clientToServer,o.type=new i.ProtocolRequestType(o.method),(r=t.CallHierarchyOutgoingCallsRequest||(t.CallHierarchyOutgoingCallsRequest={})).method="callHierarchy/outgoingCalls",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},9891:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ColorPresentationRequest=t.DocumentColorRequest=void 0;const i=n(6140);var r,o;(o=t.DocumentColorRequest||(t.DocumentColorRequest={})).method="textDocument/documentColor",o.messageDirection=i.MessageDirection.clientToServer,o.type=new i.ProtocolRequestType(o.method),(r=t.ColorPresentationRequest||(t.ColorPresentationRequest={})).method="textDocument/colorPresentation",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},5934:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConfigurationRequest=void 0;const i=n(6140);var r;(r=t.ConfigurationRequest||(t.ConfigurationRequest={})).method="workspace/configuration",r.messageDirection=i.MessageDirection.serverToClient,r.type=new i.ProtocolRequestType(r.method)},764:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeclarationRequest=void 0;const i=n(6140);var r;(r=t.DeclarationRequest||(t.DeclarationRequest={})).method="textDocument/declaration",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},9824:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiagnosticRefreshRequest=t.WorkspaceDiagnosticRequest=t.DocumentDiagnosticRequest=t.DocumentDiagnosticReportKind=t.DiagnosticServerCancellationData=void 0;const i=n(4389),r=n(9533),o=n(6140);var s,a,c,u;(t.DiagnosticServerCancellationData||(t.DiagnosticServerCancellationData={})).is=function(e){const t=e;return t&&r.boolean(t.retriggerRequest)},(u=t.DocumentDiagnosticReportKind||(t.DocumentDiagnosticReportKind={})).Full="full",u.Unchanged="unchanged",(c=t.DocumentDiagnosticRequest||(t.DocumentDiagnosticRequest={})).method="textDocument/diagnostic",c.messageDirection=o.MessageDirection.clientToServer,c.type=new o.ProtocolRequestType(c.method),c.partialResult=new i.ProgressType,(a=t.WorkspaceDiagnosticRequest||(t.WorkspaceDiagnosticRequest={})).method="workspace/diagnostic",a.messageDirection=o.MessageDirection.clientToServer,a.type=new o.ProtocolRequestType(a.method),a.partialResult=new i.ProgressType,(s=t.DiagnosticRefreshRequest||(t.DiagnosticRefreshRequest={})).method="workspace/diagnostic/refresh",s.messageDirection=o.MessageDirection.serverToClient,s.type=new o.ProtocolRequestType0(s.method)},7846:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WillDeleteFilesRequest=t.DidDeleteFilesNotification=t.DidRenameFilesNotification=t.WillRenameFilesRequest=t.DidCreateFilesNotification=t.WillCreateFilesRequest=t.FileOperationPatternKind=void 0;const i=n(6140);var r,o,s,a,c,u,l;(l=t.FileOperationPatternKind||(t.FileOperationPatternKind={})).file="file",l.folder="folder",(u=t.WillCreateFilesRequest||(t.WillCreateFilesRequest={})).method="workspace/willCreateFiles",u.messageDirection=i.MessageDirection.clientToServer,u.type=new i.ProtocolRequestType(u.method),(c=t.DidCreateFilesNotification||(t.DidCreateFilesNotification={})).method="workspace/didCreateFiles",c.messageDirection=i.MessageDirection.clientToServer,c.type=new i.ProtocolNotificationType(c.method),(a=t.WillRenameFilesRequest||(t.WillRenameFilesRequest={})).method="workspace/willRenameFiles",a.messageDirection=i.MessageDirection.clientToServer,a.type=new i.ProtocolRequestType(a.method),(s=t.DidRenameFilesNotification||(t.DidRenameFilesNotification={})).method="workspace/didRenameFiles",s.messageDirection=i.MessageDirection.clientToServer,s.type=new i.ProtocolNotificationType(s.method),(o=t.DidDeleteFilesNotification||(t.DidDeleteFilesNotification={})).method="workspace/didDeleteFiles",o.messageDirection=i.MessageDirection.clientToServer,o.type=new i.ProtocolNotificationType(o.method),(r=t.WillDeleteFilesRequest||(t.WillDeleteFilesRequest={})).method="workspace/willDeleteFiles",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},3394:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FoldingRangeRequest=void 0;const i=n(6140);var r;(r=t.FoldingRangeRequest||(t.FoldingRangeRequest={})).method="textDocument/foldingRange",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},2122:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImplementationRequest=void 0;const i=n(6140);var r;(r=t.ImplementationRequest||(t.ImplementationRequest={})).method="textDocument/implementation",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},9999:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InlayHintRefreshRequest=t.InlayHintResolveRequest=t.InlayHintRequest=void 0;const i=n(6140);var r,o,s;(s=t.InlayHintRequest||(t.InlayHintRequest={})).method="textDocument/inlayHint",s.messageDirection=i.MessageDirection.clientToServer,s.type=new i.ProtocolRequestType(s.method),(o=t.InlayHintResolveRequest||(t.InlayHintResolveRequest={})).method="inlayHint/resolve",o.messageDirection=i.MessageDirection.clientToServer,o.type=new i.ProtocolRequestType(o.method),(r=t.InlayHintRefreshRequest||(t.InlayHintRefreshRequest={})).method="workspace/inlayHint/refresh",r.messageDirection=i.MessageDirection.serverToClient,r.type=new i.ProtocolRequestType0(r.method)},5246:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InlineValueRefreshRequest=t.InlineValueRequest=void 0;const i=n(6140);var r,o;(o=t.InlineValueRequest||(t.InlineValueRequest={})).method="textDocument/inlineValue",o.messageDirection=i.MessageDirection.clientToServer,o.type=new i.ProtocolRequestType(o.method),(r=t.InlineValueRefreshRequest||(t.InlineValueRefreshRequest={})).method="workspace/inlineValue/refresh",r.messageDirection=i.MessageDirection.serverToClient,r.type=new i.ProtocolRequestType0(r.method)},542:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkspaceSymbolRequest=t.CodeActionResolveRequest=t.CodeActionRequest=t.DocumentSymbolRequest=t.DocumentHighlightRequest=t.ReferencesRequest=t.DefinitionRequest=t.SignatureHelpRequest=t.SignatureHelpTriggerKind=t.HoverRequest=t.CompletionResolveRequest=t.CompletionRequest=t.CompletionTriggerKind=t.PublishDiagnosticsNotification=t.WatchKind=t.RelativePattern=t.FileChangeType=t.DidChangeWatchedFilesNotification=t.WillSaveTextDocumentWaitUntilRequest=t.WillSaveTextDocumentNotification=t.TextDocumentSaveReason=t.DidSaveTextDocumentNotification=t.DidCloseTextDocumentNotification=t.DidChangeTextDocumentNotification=t.TextDocumentContentChangeEvent=t.DidOpenTextDocumentNotification=t.TextDocumentSyncKind=t.TelemetryEventNotification=t.LogMessageNotification=t.ShowMessageRequest=t.ShowMessageNotification=t.MessageType=t.DidChangeConfigurationNotification=t.ExitNotification=t.ShutdownRequest=t.InitializedNotification=t.InitializeErrorCodes=t.InitializeRequest=t.WorkDoneProgressOptions=t.TextDocumentRegistrationOptions=t.StaticRegistrationOptions=t.PositionEncodingKind=t.FailureHandlingKind=t.ResourceOperationKind=t.UnregistrationRequest=t.RegistrationRequest=t.DocumentSelector=t.NotebookCellTextDocumentFilter=t.NotebookDocumentFilter=t.TextDocumentFilter=void 0,t.TypeHierarchySubtypesRequest=t.TypeHierarchyPrepareRequest=t.MonikerRequest=t.MonikerKind=t.UniquenessLevel=t.WillDeleteFilesRequest=t.DidDeleteFilesNotification=t.WillRenameFilesRequest=t.DidRenameFilesNotification=t.WillCreateFilesRequest=t.DidCreateFilesNotification=t.FileOperationPatternKind=t.LinkedEditingRangeRequest=t.ShowDocumentRequest=t.SemanticTokensRegistrationType=t.SemanticTokensRefreshRequest=t.SemanticTokensRangeRequest=t.SemanticTokensDeltaRequest=t.SemanticTokensRequest=t.TokenFormat=t.CallHierarchyPrepareRequest=t.CallHierarchyOutgoingCallsRequest=t.CallHierarchyIncomingCallsRequest=t.WorkDoneProgressCancelNotification=t.WorkDoneProgressCreateRequest=t.WorkDoneProgress=t.SelectionRangeRequest=t.DeclarationRequest=t.FoldingRangeRequest=t.ColorPresentationRequest=t.DocumentColorRequest=t.ConfigurationRequest=t.DidChangeWorkspaceFoldersNotification=t.WorkspaceFoldersRequest=t.TypeDefinitionRequest=t.ImplementationRequest=t.ApplyWorkspaceEditRequest=t.ExecuteCommandRequest=t.PrepareRenameRequest=t.RenameRequest=t.PrepareSupportDefaultBehavior=t.DocumentOnTypeFormattingRequest=t.DocumentRangeFormattingRequest=t.DocumentFormattingRequest=t.DocumentLinkResolveRequest=t.DocumentLinkRequest=t.CodeLensRefreshRequest=t.CodeLensResolveRequest=t.CodeLensRequest=t.WorkspaceSymbolResolveRequest=void 0,t.DidCloseNotebookDocumentNotification=t.DidSaveNotebookDocumentNotification=t.DidChangeNotebookDocumentNotification=t.NotebookCellArrayChange=t.DidOpenNotebookDocumentNotification=t.NotebookDocumentSyncRegistrationType=t.NotebookDocument=t.NotebookCell=t.ExecutionSummary=t.NotebookCellKind=t.DiagnosticRefreshRequest=t.WorkspaceDiagnosticRequest=t.DocumentDiagnosticRequest=t.DocumentDiagnosticReportKind=t.DiagnosticServerCancellationData=t.InlayHintRefreshRequest=t.InlayHintResolveRequest=t.InlayHintRequest=t.InlineValueRefreshRequest=t.InlineValueRequest=t.TypeHierarchySupertypesRequest=void 0;const i=n(6140),r=n(1674),o=n(9533),s=n(2122);Object.defineProperty(t,"ImplementationRequest",{enumerable:!0,get:function(){return s.ImplementationRequest}});const a=n(1589);Object.defineProperty(t,"TypeDefinitionRequest",{enumerable:!0,get:function(){return a.TypeDefinitionRequest}});const c=n(8744);Object.defineProperty(t,"WorkspaceFoldersRequest",{enumerable:!0,get:function(){return c.WorkspaceFoldersRequest}}),Object.defineProperty(t,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:function(){return c.DidChangeWorkspaceFoldersNotification}});const u=n(5934);Object.defineProperty(t,"ConfigurationRequest",{enumerable:!0,get:function(){return u.ConfigurationRequest}});const l=n(9891);Object.defineProperty(t,"DocumentColorRequest",{enumerable:!0,get:function(){return l.DocumentColorRequest}}),Object.defineProperty(t,"ColorPresentationRequest",{enumerable:!0,get:function(){return l.ColorPresentationRequest}});const d=n(3394);Object.defineProperty(t,"FoldingRangeRequest",{enumerable:!0,get:function(){return d.FoldingRangeRequest}});const h=n(764);Object.defineProperty(t,"DeclarationRequest",{enumerable:!0,get:function(){return h.DeclarationRequest}});const p=n(5206);Object.defineProperty(t,"SelectionRangeRequest",{enumerable:!0,get:function(){return p.SelectionRangeRequest}});const g=n(1862);Object.defineProperty(t,"WorkDoneProgress",{enumerable:!0,get:function(){return g.WorkDoneProgress}}),Object.defineProperty(t,"WorkDoneProgressCreateRequest",{enumerable:!0,get:function(){return g.WorkDoneProgressCreateRequest}}),Object.defineProperty(t,"WorkDoneProgressCancelNotification",{enumerable:!0,get:function(){return g.WorkDoneProgressCancelNotification}});const m=n(2918);Object.defineProperty(t,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:function(){return m.CallHierarchyIncomingCallsRequest}}),Object.defineProperty(t,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:function(){return m.CallHierarchyOutgoingCallsRequest}}),Object.defineProperty(t,"CallHierarchyPrepareRequest",{enumerable:!0,get:function(){return m.CallHierarchyPrepareRequest}});const f=n(9434);Object.defineProperty(t,"TokenFormat",{enumerable:!0,get:function(){return f.TokenFormat}}),Object.defineProperty(t,"SemanticTokensRequest",{enumerable:!0,get:function(){return f.SemanticTokensRequest}}),Object.defineProperty(t,"SemanticTokensDeltaRequest",{enumerable:!0,get:function(){return f.SemanticTokensDeltaRequest}}),Object.defineProperty(t,"SemanticTokensRangeRequest",{enumerable:!0,get:function(){return f.SemanticTokensRangeRequest}}),Object.defineProperty(t,"SemanticTokensRefreshRequest",{enumerable:!0,get:function(){return f.SemanticTokensRefreshRequest}}),Object.defineProperty(t,"SemanticTokensRegistrationType",{enumerable:!0,get:function(){return f.SemanticTokensRegistrationType}});const v=n(5726);Object.defineProperty(t,"ShowDocumentRequest",{enumerable:!0,get:function(){return v.ShowDocumentRequest}});const y=n(6305);Object.defineProperty(t,"LinkedEditingRangeRequest",{enumerable:!0,get:function(){return y.LinkedEditingRangeRequest}});const C=n(7846);Object.defineProperty(t,"FileOperationPatternKind",{enumerable:!0,get:function(){return C.FileOperationPatternKind}}),Object.defineProperty(t,"DidCreateFilesNotification",{enumerable:!0,get:function(){return C.DidCreateFilesNotification}}),Object.defineProperty(t,"WillCreateFilesRequest",{enumerable:!0,get:function(){return C.WillCreateFilesRequest}}),Object.defineProperty(t,"DidRenameFilesNotification",{enumerable:!0,get:function(){return C.DidRenameFilesNotification}}),Object.defineProperty(t,"WillRenameFilesRequest",{enumerable:!0,get:function(){return C.WillRenameFilesRequest}}),Object.defineProperty(t,"DidDeleteFilesNotification",{enumerable:!0,get:function(){return C.DidDeleteFilesNotification}}),Object.defineProperty(t,"WillDeleteFilesRequest",{enumerable:!0,get:function(){return C.WillDeleteFilesRequest}});const R=n(3443);Object.defineProperty(t,"UniquenessLevel",{enumerable:!0,get:function(){return R.UniquenessLevel}}),Object.defineProperty(t,"MonikerKind",{enumerable:!0,get:function(){return R.MonikerKind}}),Object.defineProperty(t,"MonikerRequest",{enumerable:!0,get:function(){return R.MonikerRequest}});const D=n(3693);Object.defineProperty(t,"TypeHierarchyPrepareRequest",{enumerable:!0,get:function(){return D.TypeHierarchyPrepareRequest}}),Object.defineProperty(t,"TypeHierarchySubtypesRequest",{enumerable:!0,get:function(){return D.TypeHierarchySubtypesRequest}}),Object.defineProperty(t,"TypeHierarchySupertypesRequest",{enumerable:!0,get:function(){return D.TypeHierarchySupertypesRequest}});const b=n(5246);Object.defineProperty(t,"InlineValueRequest",{enumerable:!0,get:function(){return b.InlineValueRequest}}),Object.defineProperty(t,"InlineValueRefreshRequest",{enumerable:!0,get:function(){return b.InlineValueRefreshRequest}});const S=n(9999);Object.defineProperty(t,"InlayHintRequest",{enumerable:!0,get:function(){return S.InlayHintRequest}}),Object.defineProperty(t,"InlayHintResolveRequest",{enumerable:!0,get:function(){return S.InlayHintResolveRequest}}),Object.defineProperty(t,"InlayHintRefreshRequest",{enumerable:!0,get:function(){return S.InlayHintRefreshRequest}});const w=n(9824);Object.defineProperty(t,"DiagnosticServerCancellationData",{enumerable:!0,get:function(){return w.DiagnosticServerCancellationData}}),Object.defineProperty(t,"DocumentDiagnosticReportKind",{enumerable:!0,get:function(){return w.DocumentDiagnosticReportKind}}),Object.defineProperty(t,"DocumentDiagnosticRequest",{enumerable:!0,get:function(){return w.DocumentDiagnosticRequest}}),Object.defineProperty(t,"WorkspaceDiagnosticRequest",{enumerable:!0,get:function(){return w.WorkspaceDiagnosticRequest}}),Object.defineProperty(t,"DiagnosticRefreshRequest",{enumerable:!0,get:function(){return w.DiagnosticRefreshRequest}});const T=n(7169);var _,k,P,x,E,O,q,F,N,I,M,L,A,j,$,H,W,K,U,z,V,G,B,X,J,Q,Y,Z,ee,te,ne,ie,re,oe,se,ae,ce,ue,le,de,he,pe,ge,me,fe,ve,ye,Ce,Re,De,be,Se,we,Te,_e,ke,Pe,xe,Ee;Object.defineProperty(t,"NotebookCellKind",{enumerable:!0,get:function(){return T.NotebookCellKind}}),Object.defineProperty(t,"ExecutionSummary",{enumerable:!0,get:function(){return T.ExecutionSummary}}),Object.defineProperty(t,"NotebookCell",{enumerable:!0,get:function(){return T.NotebookCell}}),Object.defineProperty(t,"NotebookDocument",{enumerable:!0,get:function(){return T.NotebookDocument}}),Object.defineProperty(t,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:function(){return T.NotebookDocumentSyncRegistrationType}}),Object.defineProperty(t,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:function(){return T.DidOpenNotebookDocumentNotification}}),Object.defineProperty(t,"NotebookCellArrayChange",{enumerable:!0,get:function(){return T.NotebookCellArrayChange}}),Object.defineProperty(t,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:function(){return T.DidChangeNotebookDocumentNotification}}),Object.defineProperty(t,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:function(){return T.DidSaveNotebookDocumentNotification}}),Object.defineProperty(t,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:function(){return T.DidCloseNotebookDocumentNotification}}),function(e){e.is=function(e){const t=e;return o.string(t.language)||o.string(t.scheme)||o.string(t.pattern)}}(_=t.TextDocumentFilter||(t.TextDocumentFilter={})),function(e){e.is=function(e){const t=e;return o.objectLiteral(t)&&(o.string(t.notebookType)||o.string(t.scheme)||o.string(t.pattern))}}(k=t.NotebookDocumentFilter||(t.NotebookDocumentFilter={})),function(e){e.is=function(e){const t=e;return o.objectLiteral(t)&&(o.string(t.notebook)||k.is(t.notebook))&&(void 0===t.language||o.string(t.language))}}(P=t.NotebookCellTextDocumentFilter||(t.NotebookCellTextDocumentFilter={})),function(e){e.is=function(e){if(!Array.isArray(e))return!1;for(let t of e)if(!o.string(t)&&!_.is(t)&&!P.is(t))return!1;return!0}}(x=t.DocumentSelector||(t.DocumentSelector={})),(Ee=t.RegistrationRequest||(t.RegistrationRequest={})).method="client/registerCapability",Ee.messageDirection=i.MessageDirection.serverToClient,Ee.type=new i.ProtocolRequestType(Ee.method),(xe=t.UnregistrationRequest||(t.UnregistrationRequest={})).method="client/unregisterCapability",xe.messageDirection=i.MessageDirection.serverToClient,xe.type=new i.ProtocolRequestType(xe.method),(Pe=t.ResourceOperationKind||(t.ResourceOperationKind={})).Create="create",Pe.Rename="rename",Pe.Delete="delete",(ke=t.FailureHandlingKind||(t.FailureHandlingKind={})).Abort="abort",ke.Transactional="transactional",ke.TextOnlyTransactional="textOnlyTransactional",ke.Undo="undo",(_e=t.PositionEncodingKind||(t.PositionEncodingKind={})).UTF8="utf-8",_e.UTF16="utf-16",_e.UTF32="utf-32",(t.StaticRegistrationOptions||(t.StaticRegistrationOptions={})).hasId=function(e){const t=e;return t&&o.string(t.id)&&t.id.length>0},(t.TextDocumentRegistrationOptions||(t.TextDocumentRegistrationOptions={})).is=function(e){const t=e;return t&&(null===t.documentSelector||x.is(t.documentSelector))},(Te=t.WorkDoneProgressOptions||(t.WorkDoneProgressOptions={})).is=function(e){const t=e;return o.objectLiteral(t)&&(void 0===t.workDoneProgress||o.boolean(t.workDoneProgress))},Te.hasWorkDoneProgress=function(e){const t=e;return t&&o.boolean(t.workDoneProgress)},(we=t.InitializeRequest||(t.InitializeRequest={})).method="initialize",we.messageDirection=i.MessageDirection.clientToServer,we.type=new i.ProtocolRequestType(we.method),(t.InitializeErrorCodes||(t.InitializeErrorCodes={})).unknownProtocolVersion=1,(Se=t.InitializedNotification||(t.InitializedNotification={})).method="initialized",Se.messageDirection=i.MessageDirection.clientToServer,Se.type=new i.ProtocolNotificationType(Se.method),(be=t.ShutdownRequest||(t.ShutdownRequest={})).method="shutdown",be.messageDirection=i.MessageDirection.clientToServer,be.type=new i.ProtocolRequestType0(be.method),(De=t.ExitNotification||(t.ExitNotification={})).method="exit",De.messageDirection=i.MessageDirection.clientToServer,De.type=new i.ProtocolNotificationType0(De.method),(Re=t.DidChangeConfigurationNotification||(t.DidChangeConfigurationNotification={})).method="workspace/didChangeConfiguration",Re.messageDirection=i.MessageDirection.clientToServer,Re.type=new i.ProtocolNotificationType(Re.method),(Ce=t.MessageType||(t.MessageType={})).Error=1,Ce.Warning=2,Ce.Info=3,Ce.Log=4,(ye=t.ShowMessageNotification||(t.ShowMessageNotification={})).method="window/showMessage",ye.messageDirection=i.MessageDirection.serverToClient,ye.type=new i.ProtocolNotificationType(ye.method),(ve=t.ShowMessageRequest||(t.ShowMessageRequest={})).method="window/showMessageRequest",ve.messageDirection=i.MessageDirection.serverToClient,ve.type=new i.ProtocolRequestType(ve.method),(fe=t.LogMessageNotification||(t.LogMessageNotification={})).method="window/logMessage",fe.messageDirection=i.MessageDirection.serverToClient,fe.type=new i.ProtocolNotificationType(fe.method),(me=t.TelemetryEventNotification||(t.TelemetryEventNotification={})).method="telemetry/event",me.messageDirection=i.MessageDirection.serverToClient,me.type=new i.ProtocolNotificationType(me.method),(ge=t.TextDocumentSyncKind||(t.TextDocumentSyncKind={})).None=0,ge.Full=1,ge.Incremental=2,(pe=t.DidOpenTextDocumentNotification||(t.DidOpenTextDocumentNotification={})).method="textDocument/didOpen",pe.messageDirection=i.MessageDirection.clientToServer,pe.type=new i.ProtocolNotificationType(pe.method),(he=t.TextDocumentContentChangeEvent||(t.TextDocumentContentChangeEvent={})).isIncremental=function(e){let t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)},he.isFull=function(e){let t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength},(de=t.DidChangeTextDocumentNotification||(t.DidChangeTextDocumentNotification={})).method="textDocument/didChange",de.messageDirection=i.MessageDirection.clientToServer,de.type=new i.ProtocolNotificationType(de.method),(le=t.DidCloseTextDocumentNotification||(t.DidCloseTextDocumentNotification={})).method="textDocument/didClose",le.messageDirection=i.MessageDirection.clientToServer,le.type=new i.ProtocolNotificationType(le.method),(ue=t.DidSaveTextDocumentNotification||(t.DidSaveTextDocumentNotification={})).method="textDocument/didSave",ue.messageDirection=i.MessageDirection.clientToServer,ue.type=new i.ProtocolNotificationType(ue.method),(ce=t.TextDocumentSaveReason||(t.TextDocumentSaveReason={})).Manual=1,ce.AfterDelay=2,ce.FocusOut=3,(ae=t.WillSaveTextDocumentNotification||(t.WillSaveTextDocumentNotification={})).method="textDocument/willSave",ae.messageDirection=i.MessageDirection.clientToServer,ae.type=new i.ProtocolNotificationType(ae.method),(se=t.WillSaveTextDocumentWaitUntilRequest||(t.WillSaveTextDocumentWaitUntilRequest={})).method="textDocument/willSaveWaitUntil",se.messageDirection=i.MessageDirection.clientToServer,se.type=new i.ProtocolRequestType(se.method),(oe=t.DidChangeWatchedFilesNotification||(t.DidChangeWatchedFilesNotification={})).method="workspace/didChangeWatchedFiles",oe.messageDirection=i.MessageDirection.clientToServer,oe.type=new i.ProtocolNotificationType(oe.method),(re=t.FileChangeType||(t.FileChangeType={})).Created=1,re.Changed=2,re.Deleted=3,(t.RelativePattern||(t.RelativePattern={})).is=function(e){const t=e;return o.objectLiteral(t)&&(r.URI.is(t.baseUri)||r.WorkspaceFolder.is(t.baseUri))&&o.string(t.pattern)},(ie=t.WatchKind||(t.WatchKind={})).Create=1,ie.Change=2,ie.Delete=4,(ne=t.PublishDiagnosticsNotification||(t.PublishDiagnosticsNotification={})).method="textDocument/publishDiagnostics",ne.messageDirection=i.MessageDirection.serverToClient,ne.type=new i.ProtocolNotificationType(ne.method),(te=t.CompletionTriggerKind||(t.CompletionTriggerKind={})).Invoked=1,te.TriggerCharacter=2,te.TriggerForIncompleteCompletions=3,(ee=t.CompletionRequest||(t.CompletionRequest={})).method="textDocument/completion",ee.messageDirection=i.MessageDirection.clientToServer,ee.type=new i.ProtocolRequestType(ee.method),(Z=t.CompletionResolveRequest||(t.CompletionResolveRequest={})).method="completionItem/resolve",Z.messageDirection=i.MessageDirection.clientToServer,Z.type=new i.ProtocolRequestType(Z.method),(Y=t.HoverRequest||(t.HoverRequest={})).method="textDocument/hover",Y.messageDirection=i.MessageDirection.clientToServer,Y.type=new i.ProtocolRequestType(Y.method),(Q=t.SignatureHelpTriggerKind||(t.SignatureHelpTriggerKind={})).Invoked=1,Q.TriggerCharacter=2,Q.ContentChange=3,(J=t.SignatureHelpRequest||(t.SignatureHelpRequest={})).method="textDocument/signatureHelp",J.messageDirection=i.MessageDirection.clientToServer,J.type=new i.ProtocolRequestType(J.method),(X=t.DefinitionRequest||(t.DefinitionRequest={})).method="textDocument/definition",X.messageDirection=i.MessageDirection.clientToServer,X.type=new i.ProtocolRequestType(X.method),(B=t.ReferencesRequest||(t.ReferencesRequest={})).method="textDocument/references",B.messageDirection=i.MessageDirection.clientToServer,B.type=new i.ProtocolRequestType(B.method),(G=t.DocumentHighlightRequest||(t.DocumentHighlightRequest={})).method="textDocument/documentHighlight",G.messageDirection=i.MessageDirection.clientToServer,G.type=new i.ProtocolRequestType(G.method),(V=t.DocumentSymbolRequest||(t.DocumentSymbolRequest={})).method="textDocument/documentSymbol",V.messageDirection=i.MessageDirection.clientToServer,V.type=new i.ProtocolRequestType(V.method),(z=t.CodeActionRequest||(t.CodeActionRequest={})).method="textDocument/codeAction",z.messageDirection=i.MessageDirection.clientToServer,z.type=new i.ProtocolRequestType(z.method),(U=t.CodeActionResolveRequest||(t.CodeActionResolveRequest={})).method="codeAction/resolve",U.messageDirection=i.MessageDirection.clientToServer,U.type=new i.ProtocolRequestType(U.method),(K=t.WorkspaceSymbolRequest||(t.WorkspaceSymbolRequest={})).method="workspace/symbol",K.messageDirection=i.MessageDirection.clientToServer,K.type=new i.ProtocolRequestType(K.method),(W=t.WorkspaceSymbolResolveRequest||(t.WorkspaceSymbolResolveRequest={})).method="workspaceSymbol/resolve",W.messageDirection=i.MessageDirection.clientToServer,W.type=new i.ProtocolRequestType(W.method),(H=t.CodeLensRequest||(t.CodeLensRequest={})).method="textDocument/codeLens",H.messageDirection=i.MessageDirection.clientToServer,H.type=new i.ProtocolRequestType(H.method),($=t.CodeLensResolveRequest||(t.CodeLensResolveRequest={})).method="codeLens/resolve",$.messageDirection=i.MessageDirection.clientToServer,$.type=new i.ProtocolRequestType($.method),(j=t.CodeLensRefreshRequest||(t.CodeLensRefreshRequest={})).method="workspace/codeLens/refresh",j.messageDirection=i.MessageDirection.serverToClient,j.type=new i.ProtocolRequestType0(j.method),(A=t.DocumentLinkRequest||(t.DocumentLinkRequest={})).method="textDocument/documentLink",A.messageDirection=i.MessageDirection.clientToServer,A.type=new i.ProtocolRequestType(A.method),(L=t.DocumentLinkResolveRequest||(t.DocumentLinkResolveRequest={})).method="documentLink/resolve",L.messageDirection=i.MessageDirection.clientToServer,L.type=new i.ProtocolRequestType(L.method),(M=t.DocumentFormattingRequest||(t.DocumentFormattingRequest={})).method="textDocument/formatting",M.messageDirection=i.MessageDirection.clientToServer,M.type=new i.ProtocolRequestType(M.method),(I=t.DocumentRangeFormattingRequest||(t.DocumentRangeFormattingRequest={})).method="textDocument/rangeFormatting",I.messageDirection=i.MessageDirection.clientToServer,I.type=new i.ProtocolRequestType(I.method),(N=t.DocumentOnTypeFormattingRequest||(t.DocumentOnTypeFormattingRequest={})).method="textDocument/onTypeFormatting",N.messageDirection=i.MessageDirection.clientToServer,N.type=new i.ProtocolRequestType(N.method),(t.PrepareSupportDefaultBehavior||(t.PrepareSupportDefaultBehavior={})).Identifier=1,(F=t.RenameRequest||(t.RenameRequest={})).method="textDocument/rename",F.messageDirection=i.MessageDirection.clientToServer,F.type=new i.ProtocolRequestType(F.method),(q=t.PrepareRenameRequest||(t.PrepareRenameRequest={})).method="textDocument/prepareRename",q.messageDirection=i.MessageDirection.clientToServer,q.type=new i.ProtocolRequestType(q.method),(O=t.ExecuteCommandRequest||(t.ExecuteCommandRequest={})).method="workspace/executeCommand",O.messageDirection=i.MessageDirection.clientToServer,O.type=new i.ProtocolRequestType(O.method),(E=t.ApplyWorkspaceEditRequest||(t.ApplyWorkspaceEditRequest={})).method="workspace/applyEdit",E.messageDirection=i.MessageDirection.serverToClient,E.type=new i.ProtocolRequestType("workspace/applyEdit")},6305:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkedEditingRangeRequest=void 0;const i=n(6140);var r;(r=t.LinkedEditingRangeRequest||(t.LinkedEditingRangeRequest={})).method="textDocument/linkedEditingRange",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},3443:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MonikerRequest=t.MonikerKind=t.UniquenessLevel=void 0;const i=n(6140);var r,o,s;(s=t.UniquenessLevel||(t.UniquenessLevel={})).document="document",s.project="project",s.group="group",s.scheme="scheme",s.global="global",(o=t.MonikerKind||(t.MonikerKind={})).$import="import",o.$export="export",o.local="local",(r=t.MonikerRequest||(t.MonikerRequest={})).method="textDocument/moniker",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},7169:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DidCloseNotebookDocumentNotification=t.DidSaveNotebookDocumentNotification=t.DidChangeNotebookDocumentNotification=t.NotebookCellArrayChange=t.DidOpenNotebookDocumentNotification=t.NotebookDocumentSyncRegistrationType=t.NotebookDocument=t.NotebookCell=t.ExecutionSummary=t.NotebookCellKind=void 0;const i=n(1674),r=n(9533),o=n(6140);var s,a,c,u,l,d,h,p,g,m;!function(e){e.Markup=1,e.Code=2,e.is=function(e){return 1===e||2===e}}(s=t.NotebookCellKind||(t.NotebookCellKind={})),function(e){e.create=function(e,t){const n={executionOrder:e};return!0!==t&&!1!==t||(n.success=t),n},e.is=function(e){const t=e;return r.objectLiteral(t)&&i.uinteger.is(t.executionOrder)&&(void 0===t.success||r.boolean(t.success))},e.equals=function(e,t){return e===t||null!=e&&null!=t&&e.executionOrder===t.executionOrder&&e.success===t.success}}(a=t.ExecutionSummary||(t.ExecutionSummary={})),function(e){function t(e,n){if(e===n)return!0;if(null==e||null==n)return!1;if(typeof e!=typeof n)return!1;if("object"!=typeof e)return!1;const i=Array.isArray(e),o=Array.isArray(n);if(i!==o)return!1;if(i&&o){if(e.length!==n.length)return!1;for(let i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WorkDoneProgressCancelNotification=t.WorkDoneProgressCreateRequest=t.WorkDoneProgress=void 0;const i=n(4389),r=n(6140);var o,s,a;(a=t.WorkDoneProgress||(t.WorkDoneProgress={})).type=new i.ProgressType,a.is=function(e){return e===a.type},(s=t.WorkDoneProgressCreateRequest||(t.WorkDoneProgressCreateRequest={})).method="window/workDoneProgress/create",s.messageDirection=r.MessageDirection.serverToClient,s.type=new r.ProtocolRequestType(s.method),(o=t.WorkDoneProgressCancelNotification||(t.WorkDoneProgressCancelNotification={})).method="window/workDoneProgress/cancel",o.messageDirection=r.MessageDirection.clientToServer,o.type=new r.ProtocolNotificationType(o.method)},5206:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionRangeRequest=void 0;const i=n(6140);var r;(r=t.SelectionRangeRequest||(t.SelectionRangeRequest={})).method="textDocument/selectionRange",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},9434:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SemanticTokensRefreshRequest=t.SemanticTokensRangeRequest=t.SemanticTokensDeltaRequest=t.SemanticTokensRequest=t.SemanticTokensRegistrationType=t.TokenFormat=void 0;const i=n(6140);var r,o,s,a,c;(t.TokenFormat||(t.TokenFormat={})).Relative="relative",function(e){e.method="textDocument/semanticTokens",e.type=new i.RegistrationType(e.method)}(r=t.SemanticTokensRegistrationType||(t.SemanticTokensRegistrationType={})),(c=t.SemanticTokensRequest||(t.SemanticTokensRequest={})).method="textDocument/semanticTokens/full",c.messageDirection=i.MessageDirection.clientToServer,c.type=new i.ProtocolRequestType(c.method),c.registrationMethod=r.method,(a=t.SemanticTokensDeltaRequest||(t.SemanticTokensDeltaRequest={})).method="textDocument/semanticTokens/full/delta",a.messageDirection=i.MessageDirection.clientToServer,a.type=new i.ProtocolRequestType(a.method),a.registrationMethod=r.method,(s=t.SemanticTokensRangeRequest||(t.SemanticTokensRangeRequest={})).method="textDocument/semanticTokens/range",s.messageDirection=i.MessageDirection.clientToServer,s.type=new i.ProtocolRequestType(s.method),s.registrationMethod=r.method,(o=t.SemanticTokensRefreshRequest||(t.SemanticTokensRefreshRequest={})).method="workspace/semanticTokens/refresh",o.messageDirection=i.MessageDirection.serverToClient,o.type=new i.ProtocolRequestType0(o.method)},5726:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShowDocumentRequest=void 0;const i=n(6140);var r;(r=t.ShowDocumentRequest||(t.ShowDocumentRequest={})).method="window/showDocument",r.messageDirection=i.MessageDirection.serverToClient,r.type=new i.ProtocolRequestType(r.method)},1589:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeDefinitionRequest=void 0;const i=n(6140);var r;(r=t.TypeDefinitionRequest||(t.TypeDefinitionRequest={})).method="textDocument/typeDefinition",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},3693:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeHierarchySubtypesRequest=t.TypeHierarchySupertypesRequest=t.TypeHierarchyPrepareRequest=void 0;const i=n(6140);var r,o,s;(s=t.TypeHierarchyPrepareRequest||(t.TypeHierarchyPrepareRequest={})).method="textDocument/prepareTypeHierarchy",s.messageDirection=i.MessageDirection.clientToServer,s.type=new i.ProtocolRequestType(s.method),(o=t.TypeHierarchySupertypesRequest||(t.TypeHierarchySupertypesRequest={})).method="typeHierarchy/supertypes",o.messageDirection=i.MessageDirection.clientToServer,o.type=new i.ProtocolRequestType(o.method),(r=t.TypeHierarchySubtypesRequest||(t.TypeHierarchySubtypesRequest={})).method="typeHierarchy/subtypes",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolRequestType(r.method)},8744:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DidChangeWorkspaceFoldersNotification=t.WorkspaceFoldersRequest=void 0;const i=n(6140);var r,o;(o=t.WorkspaceFoldersRequest||(t.WorkspaceFoldersRequest={})).method="workspace/workspaceFolders",o.messageDirection=i.MessageDirection.serverToClient,o.type=new i.ProtocolRequestType0(o.method),(r=t.DidChangeWorkspaceFoldersNotification||(t.DidChangeWorkspaceFoldersNotification={})).method="workspace/didChangeWorkspaceFolders",r.messageDirection=i.MessageDirection.clientToServer,r.type=new i.ProtocolNotificationType(r.method)},9533:(e,t)=>{"use strict";function n(e){return"string"==typeof e||e instanceof String}function i(e){return Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.objectLiteral=t.typedArray=t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=function(e){return"function"==typeof e},t.array=i,t.stringArray=function(e){return i(e)&&e.every((e=>n(e)))},t.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)},t.objectLiteral=function(e){return null!==e&&"object"==typeof e}},273:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.createProtocolConnection=void 0;const o=n(5028);r(n(5028),t),r(n(1661),t),t.createProtocolConnection=function(e,t,n,i){return(0,o.createMessageConnection)(e,t,n,i)}},6560:(e,t,n)=>{"use strict";e.exports=n(273)},1674:(e,t,n)=>{"use strict";var i,r,o,s,a,c,u,l,d,h,p,g,m,f,v,y,C,R,D,b,S,w,T,_,k,P,x,E;n.r(t),n.d(t,{AnnotatedTextEdit:()=>T,ChangeAnnotation:()=>S,ChangeAnnotationIdentifier:()=>w,CodeAction:()=>oe,CodeActionContext:()=>re,CodeActionKind:()=>ne,CodeActionTriggerKind:()=>ie,CodeDescription:()=>C,CodeLens:()=>se,Color:()=>d,ColorInformation:()=>h,ColorPresentation:()=>p,Command:()=>D,CompletionItem:()=>K,CompletionItemKind:()=>L,CompletionItemLabelDetails:()=>W,CompletionItemTag:()=>j,CompletionList:()=>U,CreateFile:()=>k,DeleteFile:()=>x,Diagnostic:()=>R,DiagnosticRelatedInformation:()=>f,DiagnosticSeverity:()=>v,DiagnosticTag:()=>y,DocumentHighlight:()=>J,DocumentHighlightKind:()=>X,DocumentLink:()=>ce,DocumentSymbol:()=>te,DocumentUri:()=>i,EOL:()=>Te,FoldingRange:()=>m,FoldingRangeKind:()=>g,FormattingOptions:()=>ae,Hover:()=>V,InlayHint:()=>Ce,InlayHintKind:()=>ve,InlayHintLabelPart:()=>ye,InlineValueContext:()=>fe,InlineValueEvaluatableExpression:()=>me,InlineValueText:()=>pe,InlineValueVariableLookup:()=>ge,InsertReplaceEdit:()=>$,InsertTextFormat:()=>A,InsertTextMode:()=>H,Location:()=>u,LocationLink:()=>l,MarkedString:()=>z,MarkupContent:()=>M,MarkupKind:()=>I,OptionalVersionedTextDocumentIdentifier:()=>F,ParameterInformation:()=>G,Position:()=>a,Range:()=>c,RenameFile:()=>P,SelectionRange:()=>ue,SemanticTokenModifiers:()=>de,SemanticTokenTypes:()=>le,SemanticTokens:()=>he,SignatureInformation:()=>B,SymbolInformation:()=>Z,SymbolKind:()=>Q,SymbolTag:()=>Y,TextDocument:()=>we,TextDocumentEdit:()=>_,TextDocumentIdentifier:()=>O,TextDocumentItem:()=>N,TextEdit:()=>b,URI:()=>r,VersionedTextDocumentIdentifier:()=>q,WorkspaceChange:()=>Se,WorkspaceEdit:()=>E,WorkspaceFolder:()=>Re,WorkspaceSymbol:()=>ee,integer:()=>o,uinteger:()=>s}),function(e){e.is=function(e){return"string"==typeof e}}(i||(i={})),function(e){e.is=function(e){return"string"==typeof e}}(r||(r={})),function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(o||(o={})),function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(s||(s={})),function(e){e.create=function(e,t){return e===Number.MAX_VALUE&&(e=s.MAX_VALUE),t===Number.MAX_VALUE&&(t=s.MAX_VALUE),{line:e,character:t}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.uinteger(t.line)&&_e.uinteger(t.character)}}(a||(a={})),function(e){e.create=function(e,t,n,i){if(_e.uinteger(e)&&_e.uinteger(t)&&_e.uinteger(n)&&_e.uinteger(i))return{start:a.create(e,t),end:a.create(n,i)};if(a.is(e)&&a.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments[".concat(e,", ").concat(t,", ").concat(n,", ").concat(i,"]"))},e.is=function(e){var t=e;return _e.objectLiteral(t)&&a.is(t.start)&&a.is(t.end)}}(c||(c={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&c.is(t.range)&&(_e.string(t.uri)||_e.undefined(t.uri))}}(u||(u={})),function(e){e.create=function(e,t,n,i){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:i}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&c.is(t.targetRange)&&_e.string(t.targetUri)&&c.is(t.targetSelectionRange)&&(c.is(t.originSelectionRange)||_e.undefined(t.originSelectionRange))}}(l||(l={})),function(e){e.create=function(e,t,n,i){return{red:e,green:t,blue:n,alpha:i}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.numberRange(t.red,0,1)&&_e.numberRange(t.green,0,1)&&_e.numberRange(t.blue,0,1)&&_e.numberRange(t.alpha,0,1)}}(d||(d={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&c.is(t.range)&&d.is(t.color)}}(h||(h={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.string(t.label)&&(_e.undefined(t.textEdit)||b.is(t))&&(_e.undefined(t.additionalTextEdits)||_e.typedArray(t.additionalTextEdits,b.is))}}(p||(p={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(g||(g={})),function(e){e.create=function(e,t,n,i,r,o){var s={startLine:e,endLine:t};return _e.defined(n)&&(s.startCharacter=n),_e.defined(i)&&(s.endCharacter=i),_e.defined(r)&&(s.kind=r),_e.defined(o)&&(s.collapsedText=o),s},e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.uinteger(t.startLine)&&_e.uinteger(t.startLine)&&(_e.undefined(t.startCharacter)||_e.uinteger(t.startCharacter))&&(_e.undefined(t.endCharacter)||_e.uinteger(t.endCharacter))&&(_e.undefined(t.kind)||_e.string(t.kind))}}(m||(m={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){var t=e;return _e.defined(t)&&u.is(t.location)&&_e.string(t.message)}}(f||(f={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(v||(v={})),function(e){e.Unnecessary=1,e.Deprecated=2}(y||(y={})),function(e){e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.string(t.href)}}(C||(C={})),function(e){e.create=function(e,t,n,i,r,o){var s={range:e,message:t};return _e.defined(n)&&(s.severity=n),_e.defined(i)&&(s.code=i),_e.defined(r)&&(s.source=r),_e.defined(o)&&(s.relatedInformation=o),s},e.is=function(e){var t,n=e;return _e.defined(n)&&c.is(n.range)&&_e.string(n.message)&&(_e.number(n.severity)||_e.undefined(n.severity))&&(_e.integer(n.code)||_e.string(n.code)||_e.undefined(n.code))&&(_e.undefined(n.codeDescription)||_e.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(_e.string(n.source)||_e.undefined(n.source))&&(_e.undefined(n.relatedInformation)||_e.typedArray(n.relatedInformation,f.is))}}(R||(R={})),function(e){e.create=function(e,t){for(var n=[],i=2;i0&&(r.arguments=n),r},e.is=function(e){var t=e;return _e.defined(t)&&_e.string(t.title)&&_e.string(t.command)}}(D||(D={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.string(t.newText)&&c.is(t.range)}}(b||(b={})),function(e){e.create=function(e,t,n){var i={label:e};return void 0!==t&&(i.needsConfirmation=t),void 0!==n&&(i.description=n),i},e.is=function(e){var t=e;return _e.objectLiteral(t)&&_e.string(t.label)&&(_e.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(_e.string(t.description)||void 0===t.description)}}(S||(S={})),function(e){e.is=function(e){var t=e;return _e.string(t)}}(w||(w={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){var t=e;return b.is(t)&&(S.is(t.annotationId)||w.is(t.annotationId))}}(T||(T={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return _e.defined(t)&&F.is(t.textDocument)&&Array.isArray(t.edits)}}(_||(_={})),function(e){e.create=function(e,t,n){var i={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(i.options=t),void 0!==n&&(i.annotationId=n),i},e.is=function(e){var t=e;return t&&"create"===t.kind&&_e.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||_e.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||_e.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||w.is(t.annotationId))}}(k||(k={})),function(e){e.create=function(e,t,n,i){var r={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(r.options=n),void 0!==i&&(r.annotationId=i),r},e.is=function(e){var t=e;return t&&"rename"===t.kind&&_e.string(t.oldUri)&&_e.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||_e.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||_e.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||w.is(t.annotationId))}}(P||(P={})),function(e){e.create=function(e,t,n){var i={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(i.options=t),void 0!==n&&(i.annotationId=n),i},e.is=function(e){var t=e;return t&&"delete"===t.kind&&_e.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||_e.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||_e.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||w.is(t.annotationId))}}(x||(x={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return _e.string(e.kind)?k.is(e)||P.is(e)||x.is(e):_.is(e)})))}}(E||(E={}));var O,q,F,N,I,M,L,A,j,$,H,W,K,U,z,V,G,B,X,J,Q,Y,Z,ee,te,ne,ie,re,oe,se,ae,ce,ue,le,de,he,pe,ge,me,fe,ve,ye,Ce,Re,De=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var i,r;if(void 0===n?i=b.insert(e,t):w.is(n)?(r=n,i=T.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(n),i=T.insert(e,t,r)),this.edits.push(i),void 0!==r)return r},e.prototype.replace=function(e,t,n){var i,r;if(void 0===n?i=b.replace(e,t):w.is(n)?(r=n,i=T.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(n),i=T.replace(e,t,r)),this.edits.push(i),void 0!==r)return r},e.prototype.delete=function(e,t){var n,i;if(void 0===t?n=b.del(e):w.is(t)?(i=t,n=T.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(t),n=T.del(e,i)),this.edits.push(n),void 0!==i)return i},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),be=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(w.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw new Error("Id ".concat(n," is already in use."));if(void 0===t)throw new Error("No annotation provided for id ".concat(n));return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}(),Se=function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new be(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach((function(e){if(_.is(e)){var n=new De(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}}))):e.changes&&Object.keys(e.changes).forEach((function(n){var i=new De(e.changes[n]);t._textEditChanges[n]=i}))):this._workspaceEdit={}}return Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(F.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version};if(!(i=this._textEditChanges[t.uri])){var n={textDocument:t,edits:r=[]};this._workspaceEdit.documentChanges.push(n),i=new De(r,this._changeAnnotations),this._textEditChanges[t.uri]=i}return i}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var i;if(!(i=this._textEditChanges[e])){var r=[];this._workspaceEdit.changes[e]=r,i=new De(r),this._textEditChanges[e]=i}return i},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new be,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,r,o;if(S.is(t)||w.is(t)?i=t:n=t,void 0===i?r=k.create(e,n):(o=w.is(i)?i:this._changeAnnotations.manage(i),r=k.create(e,n,o)),this._workspaceEdit.documentChanges.push(r),void 0!==o)return o},e.prototype.renameFile=function(e,t,n,i){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,o,s;if(S.is(n)||w.is(n)?r=n:i=n,void 0===r?o=P.create(e,t,i):(s=w.is(r)?r:this._changeAnnotations.manage(r),o=P.create(e,t,i,s)),this._workspaceEdit.documentChanges.push(o),void 0!==s)return s},e.prototype.deleteFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,r,o;if(S.is(t)||w.is(t)?i=t:n=t,void 0===i?r=x.create(e,n):(o=w.is(i)?i:this._changeAnnotations.manage(i),r=x.create(e,n,o)),this._workspaceEdit.documentChanges.push(r),void 0!==o)return o},e}();!function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return _e.defined(t)&&_e.string(t.uri)}}(O||(O={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return _e.defined(t)&&_e.string(t.uri)&&_e.integer(t.version)}}(q||(q={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return _e.defined(t)&&_e.string(t.uri)&&(null===t.version||_e.integer(t.version))}}(F||(F={})),function(e){e.create=function(e,t,n,i){return{uri:e,languageId:t,version:n,text:i}},e.is=function(e){var t=e;return _e.defined(t)&&_e.string(t.uri)&&_e.string(t.languageId)&&_e.integer(t.version)&&_e.string(t.text)}}(N||(N={})),function(e){e.PlainText="plaintext",e.Markdown="markdown",e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(I||(I={})),function(e){e.is=function(e){var t=e;return _e.objectLiteral(e)&&I.is(t.kind)&&_e.string(t.value)}}(M||(M={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(L||(L={})),function(e){e.PlainText=1,e.Snippet=2}(A||(A={})),function(e){e.Deprecated=1}(j||(j={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){var t=e;return t&&_e.string(t.newText)&&c.is(t.insert)&&c.is(t.replace)}}($||($={})),function(e){e.asIs=1,e.adjustIndentation=2}(H||(H={})),function(e){e.is=function(e){var t=e;return t&&(_e.string(t.detail)||void 0===t.detail)&&(_e.string(t.description)||void 0===t.description)}}(W||(W={})),function(e){e.create=function(e){return{label:e}}}(K||(K={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(U||(U={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return _e.string(t)||_e.objectLiteral(t)&&_e.string(t.language)&&_e.string(t.value)}}(z||(z={})),function(e){e.is=function(e){var t=e;return!!t&&_e.objectLiteral(t)&&(M.is(t.contents)||z.is(t.contents)||_e.typedArray(t.contents,z.is))&&(void 0===e.range||c.is(e.range))}}(V||(V={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(G||(G={})),function(e){e.create=function(e,t){for(var n=[],i=2;i=0;s--){var a=r[s],c=e.offsetAt(a.range.start),u=e.offsetAt(a.range.end);if(!(u<=o))throw new Error("Overlapping edit");i=i.substring(0,c)+a.newText+i.substring(u,i.length),o=c}return i}}(we||(we={}));var _e,ke=function(){function e(e,t,n,i){this._uri=e,this._languageId=t,this._version=n,this._content=i,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,i=0;i0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,i=t.length;if(0===i)return a.create(0,e);for(;ne?i=r:n=r+1}var o=n-1;return a.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],i=e.line+1{"use strict";e.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}},4411:(e,t,n)=>{"use strict";function i(e){var t=this;if(t instanceof i||(t=new i),t.tail=null,t.head=null,t.length=0,e&&"function"==typeof e.forEach)e.forEach((function(e){t.push(e)}));else if(arguments.length>0)for(var n=0,r=arguments.length;n1)n=t;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");i=this.head.next,n=this.head.value}for(var r=0;null!==i;r++)n=e(n,i.value,r),i=i.next;return n},i.prototype.reduceReverse=function(e,t){var n,i=this.tail;if(arguments.length>1)n=t;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");i=this.tail.prev,n=this.tail.value}for(var r=this.length-1;null!==i;r--)n=e(n,i.value,r),i=i.prev;return n},i.prototype.toArray=function(){for(var e=new Array(this.length),t=0,n=this.head;null!==n;t++)e[t]=n.value,n=n.next;return e},i.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,n=this.tail;null!==n;t++)e[t]=n.value,n=n.prev;return e},i.prototype.slice=function(e,t){(t=t||this.length)<0&&(t+=this.length),(e=e||0)<0&&(e+=this.length);var n=new i;if(tthis.length&&(t=this.length);for(var r=0,o=this.head;null!==o&&rthis.length&&(t=this.length);for(var r=this.length,o=this.tail;null!==o&&r>t;r--)o=o.prev;for(;null!==o&&r>e;r--,o=o.prev)n.push(o.value);return n},i.prototype.splice=function(e,t,...n){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var i=0,o=this.head;null!==o&&i{"use strict";e.exports=require("vscode")},2081:e=>{"use strict";e.exports=require("child_process")},6113:e=>{"use strict";e.exports=require("crypto")},7147:e=>{"use strict";e.exports=require("fs")},1808:e=>{"use strict";e.exports=require("net")},2037:e=>{"use strict";e.exports=require("os")},1017:e=>{"use strict";e.exports=require("path")},3837:e=>{"use strict";e.exports=require("util")}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,n),o.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";var e=i;Object.defineProperty(e,"__esModule",{value:!0}),e.deactivate=e.activate=void 0;const t=n(9496),r=n(2847),o=n(5049);let s;e.activate=async function(e){e.subscriptions.push(t.commands.registerCommand("pylyzer.restartLanguageServer",(()=>async function(){try{if(void 0===s)throw new Error;await s.restart()}catch(e){t.window.showErrorMessage("Failed to restart the pylyzer language server.")}}()))),e.subscriptions.push(t.commands.registerCommand("pylyzer.showReferences",(async(e,t,n)=>{await(0,o.showReferences)(s,e,t,n)}))),await async function(e){try{const e=(()=>{let e=t.workspace.getConfiguration("pylyzer").get("executablePath","");return""===e?"pylyzer":e})(),n=t.workspace.getConfiguration("pylyzer").get("inlayHints",!1),i=t.workspace.getConfiguration("pylyzer").get("semanticTokens",!0),o=t.workspace.getConfiguration("pylyzer").get("hover",!0),a=t.workspace.getConfiguration("pylyzer").get("smartCompletion",!0),c=t.workspace.getConfiguration("pylyzer").get("checkOnType",!1);let u=["--server"];n&&i&&o&&a&&!c||u.push("--"),n||(u.push("--disable"),u.push("inlayHints")),i||(u.push("--disable"),u.push("semanticTokens")),o||(u.push("--disable"),u.push("hover")),a||(u.push("--disable"),u.push("smartCompletion")),c&&(u.push("--enable"),u.push("checkOnType"));let l={command:e,args:u};const d={documentSelector:[{scheme:"file",language:"python"}]};s=new r.LanguageClient("pylyzer",l,d),await s.start()}catch(e){t.window.showErrorMessage("Failed to start the pylyzer language server. Please make sure you have pylyzer installed.")}}()},e.deactivate=function(){if(s)return s.stop()}})(),module.exports=i})(); diff --git a/extension/dist/extension.js.map b/extension/dist/extension.js.map new file mode 100644 index 0000000..c351d56 --- /dev/null +++ b/extension/dist/extension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension.js","mappings":"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","sources":["webpack://pylyzer/./node_modules/balanced-match/index.js","webpack://pylyzer/./node_modules/brace-expansion/index.js","webpack://pylyzer/./node_modules/lru-cache/index.js","webpack://pylyzer/./node_modules/minimatch/lib/path.js","webpack://pylyzer/./node_modules/minimatch/minimatch.js","webpack://pylyzer/./node_modules/semver/classes/comparator.js","webpack://pylyzer/./node_modules/semver/classes/range.js","webpack://pylyzer/./node_modules/semver/classes/semver.js","webpack://pylyzer/./node_modules/semver/functions/cmp.js","webpack://pylyzer/./node_modules/semver/functions/compare.js","webpack://pylyzer/./node_modules/semver/functions/eq.js","webpack://pylyzer/./node_modules/semver/functions/gt.js","webpack://pylyzer/./node_modules/semver/functions/gte.js","webpack://pylyzer/./node_modules/semver/functions/lt.js","webpack://pylyzer/./node_modules/semver/functions/lte.js","webpack://pylyzer/./node_modules/semver/functions/neq.js","webpack://pylyzer/./node_modules/semver/functions/parse.js","webpack://pylyzer/./node_modules/semver/functions/satisfies.js","webpack://pylyzer/./node_modules/semver/internal/constants.js","webpack://pylyzer/./node_modules/semver/internal/debug.js","webpack://pylyzer/./node_modules/semver/internal/identifiers.js","webpack://pylyzer/./node_modules/semver/internal/parse-options.js","webpack://pylyzer/./node_modules/semver/internal/re.js","webpack://pylyzer/./src/commands.ts","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/api.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/cancellation.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/connection.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/disposable.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/events.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/is.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/linkedMap.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/messageReader.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/messageWriter.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/messages.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/ral.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/semaphore.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/node/main.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/lib/node/ril.js","webpack://pylyzer/./node_modules/vscode-jsonrpc/node.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/api.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/callHierarchy.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/client.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/codeAction.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/codeConverter.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/codeLens.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/colorProvider.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/completion.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/configuration.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/declaration.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/definition.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/diagnostic.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/documentHighlight.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/documentLink.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/documentSymbol.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/executeCommand.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/features.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/fileOperations.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/fileSystemWatcher.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/foldingRange.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/formatting.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/hover.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/implementation.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/inlayHint.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/inlineValue.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/linkedEditingRange.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/notebook.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/progress.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/progressPart.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolCodeAction.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolCodeLens.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolCompletionItem.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolConverter.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolDiagnostic.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolDocumentLink.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolInlayHint.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/reference.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/rename.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/selectionRange.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/semanticTokens.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/signatureHelp.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/textSynchronization.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/typeDefinition.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/typeHierarchy.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/utils/async.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/utils/is.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/utils/uuid.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/workspaceFolder.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/common/workspaceSymbol.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/node/main.js","webpack://pylyzer/./node_modules/vscode-languageclient/lib/node/processes.js","webpack://pylyzer/./node_modules/vscode-languageclient/node.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/api.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/connection.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/messages.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/common/utils/is.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/lib/node/main.js","webpack://pylyzer/./node_modules/vscode-languageserver-protocol/node.js","webpack://pylyzer/./node_modules/vscode-languageserver-types/lib/esm/main.js","webpack://pylyzer/./node_modules/yallist/iterator.js","webpack://pylyzer/./node_modules/yallist/yallist.js","webpack://pylyzer/external commonjs \"vscode\"","webpack://pylyzer/external node-commonjs \"child_process\"","webpack://pylyzer/external node-commonjs \"crypto\"","webpack://pylyzer/external node-commonjs \"fs\"","webpack://pylyzer/external node-commonjs \"net\"","webpack://pylyzer/external node-commonjs \"os\"","webpack://pylyzer/external node-commonjs \"path\"","webpack://pylyzer/external node-commonjs \"util\"","webpack://pylyzer/webpack/bootstrap","webpack://pylyzer/webpack/runtime/define property getters","webpack://pylyzer/webpack/runtime/hasOwnProperty shorthand","webpack://pylyzer/webpack/runtime/make namespace object","webpack://pylyzer/./src/extension.ts"],"sourcesContent":["'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m) return [str];\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n if (/\\$$/.test(m.pre)) { \n for (var k = 0; k < post.length; k++) {\n var expansion = pre+ '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n } else {\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = [];\n\n for (var j = 0; j < n.length; j++) {\n N.push.apply(N, expand(n[j], false));\n }\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n }\n\n return expansions;\n}\n\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","const isWindows = typeof process === 'object' &&\n process &&\n process.platform === 'win32'\nmodule.exports = isWindows ? { sep: '\\\\' } : { sep: '/' }\n","const minimatch = module.exports = (p, pattern, options = {}) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\nmodule.exports = minimatch\n\nconst path = require('./lib/path.js')\nminimatch.sep = path.sep\n\nconst GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\nconst expand = require('brace-expansion')\n\nconst plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// \"abc\" -> { a:true, b:true, c:true }\nconst charSet = s => s.split('').reduce((set, c) => {\n set[c] = true\n return set\n}, {})\n\n// characters that need to be escaped in RegExp.\nconst reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// characters that indicate we have to add the pattern start\nconst addPatternStartSet = charSet('[.(')\n\n// normalizes slashes.\nconst slashSplit = /\\/+/\n\nminimatch.filter = (pattern, options = {}) =>\n (p, i, list) => minimatch(p, pattern, options)\n\nconst ext = (a, b = {}) => {\n const t = {}\n Object.keys(a).forEach(k => t[k] = a[k])\n Object.keys(b).forEach(k => t[k] = b[k])\n return t\n}\n\nminimatch.defaults = def => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p, pattern, options) => orig(p, pattern, ext(def, options))\n m.Minimatch = class Minimatch extends orig.Minimatch {\n constructor (pattern, options) {\n super(pattern, ext(def, options))\n }\n }\n m.Minimatch.defaults = options => orig.defaults(ext(def, options)).Minimatch\n m.filter = (pattern, options) => orig.filter(pattern, ext(def, options))\n m.defaults = options => orig.defaults(ext(def, options))\n m.makeRe = (pattern, options) => orig.makeRe(pattern, ext(def, options))\n m.braceExpand = (pattern, options) => orig.braceExpand(pattern, ext(def, options))\n m.match = (list, pattern, options) => orig.match(list, pattern, ext(def, options))\n\n return m\n}\n\n\n\n\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = (pattern, options) => braceExpand(pattern, options)\n\nconst braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\nconst MAX_PATTERN_LENGTH = 1024 * 64\nconst assertValidPattern = pattern => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nconst SUBPARSE = Symbol('subparse')\n\nminimatch.makeRe = (pattern, options) =>\n new Minimatch(pattern, options || {}).makeRe()\n\nminimatch.match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\n// replace stuff like \\* with *\nconst globUnescape = s => s.replace(/\\\\(.)/g, '$1')\nconst charUnescape = s => s.replace(/\\\\([^-\\]])/g, '$1')\nconst regExpEscape = s => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\nconst braExpEscape = s => s.replace(/[[\\]\\\\]/g, '\\\\$&')\n\nclass Minimatch {\n constructor (pattern, options) {\n assertValidPattern(pattern)\n\n if (!options) options = {}\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.windowsPathsNoEscape = !!options.windowsPathsNoEscape ||\n options.allowWindowsEscape === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n\n // make the set of regexps etc.\n this.make()\n }\n\n debug () {}\n\n make () {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n let set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = (...args) => console.error(...args)\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(s => s.split(slashSplit))\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map((s, si, set) => s.map(this.parse, this))\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(s => s.indexOf(false) === -1)\n\n this.debug(this.pattern, set)\n\n this.set = set\n }\n\n parseNegate () {\n if (this.options.nonegate) return\n\n const pattern = this.pattern\n let negate = false\n let negateOffset = 0\n\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.slice(negateOffset)\n this.negate = negate\n }\n\n // set partial to true to test if, for example,\n // \"/a/b\" matches the start of \"/*/b/*/d\"\n // Partial means, if you run out of file before you run\n // out of pattern, then that's fine, as long as all\n // the parts match.\n matchOne (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* istanbul ignore if */\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n /* istanbul ignore if */\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n hit = f === p\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else /* istanbul ignore else */ if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return (fi === fl - 1) && (file[fi] === '')\n }\n\n // should be unreachable.\n /* istanbul ignore next */\n throw new Error('wtf?')\n }\n\n braceExpand () {\n return braceExpand(this.pattern, this.options)\n }\n\n parse (pattern, isSub) {\n assertValidPattern(pattern)\n\n const options = this.options\n\n // shortcuts\n if (pattern === '**') {\n if (!options.noglobstar)\n return GLOBSTAR\n else\n pattern = '*'\n }\n if (pattern === '') return ''\n\n let re = ''\n let hasMagic = false\n let escaping = false\n // ? => one single character\n const patternListStack = []\n const negativeLists = []\n let stateChar\n let inClass = false\n let reClassStart = -1\n let classStart = -1\n let cs\n let pl\n let sp\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set. However, if the pattern\n // starts with ., then traversal patterns can match.\n let dotTravAllowed = pattern.charAt(0) === '.'\n let dotFileAllowed = options.dot || dotTravAllowed\n const patternStart = () =>\n dotTravAllowed\n ? ''\n : dotFileAllowed\n ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n : '(?!\\\\.)'\n const subPatternStart = (p) =>\n p.charAt(0) === '.'\n ? ''\n : options.dot\n ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n : '(?!\\\\.)'\n\n\n const clearStateChar = () => {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n this.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (let i = 0, c; (i < pattern.length) && (c = pattern.charAt(i)); i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping) {\n /* istanbul ignore next - completely not allowed, even escaped. */\n if (c === '/') {\n return false\n }\n\n if (reSpecials[c]) {\n re += '\\\\'\n }\n re += c\n escaping = false\n continue\n }\n\n switch (c) {\n /* istanbul ignore next */\n case '/': {\n // Should already be path-split by now.\n return false\n }\n\n case '\\\\':\n if (inClass && pattern.charAt(i + 1) === '-') {\n re += c\n continue\n }\n\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n this.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(': {\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n const plEntry = {\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close,\n }\n this.debug(this.pattern, '\\t', plEntry)\n patternListStack.push(plEntry)\n // negation is (?:(?!(?:js)(?:))[^/]*)\n re += plEntry.open\n // next entry starts with a dot maybe?\n if (plEntry.start === 0 && plEntry.type !== '!') {\n dotTravAllowed = true\n re += subPatternStart(pattern.slice(i + 1))\n }\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n }\n\n case ')': {\n const plEntry = patternListStack[patternListStack.length - 1]\n if (inClass || !plEntry) {\n re += '\\\\)'\n continue\n }\n patternListStack.pop()\n\n // closing an extglob\n clearStateChar()\n hasMagic = true\n pl = plEntry\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(Object.assign(pl, { reEnd: re.length }))\n }\n continue\n }\n\n case '|': {\n const plEntry = patternListStack[patternListStack.length - 1]\n if (inClass || !plEntry) {\n re += '\\\\|'\n continue\n }\n\n clearStateChar()\n re += '|'\n // next subpattern can start with a dot?\n if (plEntry.start === 0 && plEntry.type !== '!') {\n dotTravAllowed = true\n re += subPatternStart(pattern.slice(i + 1))\n }\n continue\n }\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n continue\n }\n\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + braExpEscape(charUnescape(cs)) + ']')\n // looks good, finish up the class.\n re += c\n } catch (er) {\n // out of order ranges in JS are errors, but in glob syntax,\n // they're just a range that matches nothing.\n re = re.substring(0, reClassStart) + '(?:$.)' // match nothing ever\n }\n hasMagic = true\n inClass = false\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (reSpecials[c] && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n break\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.slice(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substring(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n let tail\n tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, (_, $1, $2) => {\n /* istanbul ignore else - should already be done */\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n const t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n const addPatternStart = addPatternStartSet[re.charAt(0)]\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (let n = negativeLists.length - 1; n > -1; n--) {\n const nl = negativeLists[n]\n\n const nlBefore = re.slice(0, nl.reStart)\n const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n let nlAfter = re.slice(nl.reEnd)\n const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n const closeParensBefore = nlBefore.split(')').length\n const openParensBefore = nlBefore.split('(').length - closeParensBefore\n let cleanAfter = nlAfter\n for (let i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\\\/)' : ''\n\n re = nlBefore + nlFirst + nlAfter + dollar + nlLast\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart() + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // if it's nocase, and the lcase/uppercase don't match, it's magic\n if (options.nocase && !hasMagic) {\n hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n const flags = options.nocase ? 'i' : ''\n try {\n return Object.assign(new RegExp('^' + re + '$', flags), {\n _glob: pattern,\n _src: re,\n })\n } catch (er) /* istanbul ignore next - should be impossible */ {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n }\n\n makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n const set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n const options = this.options\n\n const twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n const flags = options.nocase ? 'i' : ''\n\n // coalesce globstars and regexpify non-globstar patterns\n // if it's the only item, then we just do one twoStar\n // if it's the first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if it's the last, append (\\/twoStar|) to previous\n // if it's in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set.map(pattern => {\n pattern = pattern.map(p =>\n typeof p === 'string' ? regExpEscape(p)\n : p === GLOBSTAR ? GLOBSTAR\n : p._src\n ).reduce((set, p) => {\n if (!(set[set.length - 1] === GLOBSTAR && p === GLOBSTAR)) {\n set.push(p)\n }\n return set\n }, [])\n pattern.forEach((p, i) => {\n if (p !== GLOBSTAR || pattern[i-1] === GLOBSTAR) {\n return\n }\n if (i === 0) {\n if (pattern.length > 1) {\n pattern[i+1] = '(?:\\\\\\/|' + twoStar + '\\\\\\/)?' + pattern[i+1]\n } else {\n pattern[i] = twoStar\n }\n } else if (i === pattern.length - 1) {\n pattern[i-1] += '(?:\\\\\\/|' + twoStar + ')?'\n } else {\n pattern[i-1] += '(?:\\\\\\/|\\\\\\/' + twoStar + '\\\\\\/)' + pattern[i+1]\n pattern[i+1] = GLOBSTAR\n }\n })\n return pattern.filter(p => p !== GLOBSTAR).join('/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) /* istanbul ignore next - should be impossible */ {\n this.regexp = false\n }\n return this.regexp\n }\n\n match (f, partial = this.partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n const options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n const set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n let filename\n for (let i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (let i = 0; i < set.length; i++) {\n const pattern = set[i]\n let file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n const hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n }\n\n static defaults (def) {\n return minimatch.defaults(def).Minimatch\n }\n}\n\nminimatch.Minimatch = Minimatch\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false,\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceTilde(c, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((c) => {\n return replaceCaret(c, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((c) => {\n return replaceXRange(c, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const { MAX_LENGTH } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((o, k) => {\n o[k] = true\n return o\n }, {})\nmodule.exports = parseOptions\n","const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// copied and modified from https://github.com/rust-lang/rust-analyzer/blob/27239fbb58a115915ffc1ce65ededc951eb00fd2/editors/code/src/commands.ts\r\nimport { LanguageClient, Location, Position } from 'vscode-languageclient/node';\r\nimport { Uri, commands } from 'vscode';\r\n\r\nexport async function showReferences(\r\n client: LanguageClient | undefined,\r\n uri: string,\r\n position: Position,\r\n locations: Location[]\r\n) {\r\n if (client) {\r\n await commands.executeCommand(\r\n \"editor.action.showReferences\",\r\n Uri.parse(uri),\r\n client.protocol2CodeConverter.asPosition(position),\r\n locations.map(client.protocol2CodeConverter.asLocation)\r\n );\r\n }\r\n}\r\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken = exports.ProgressToken || (exports.ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace = exports.Trace || (exports.Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues = exports.TraceValues || (exports.TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace = exports.Trace || (exports.Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification = exports.SetTraceNotification || (exports.SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification = exports.LogTraceNotification || (exports.LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors = exports.ConnectionErrors || (exports.ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy = exports.ConnectionStrategy || (exports.ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy = exports.CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy = exports.CancellationSenderStrategy || (exports.CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy = exports.CancellationStrategy || (exports.CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy = exports.MessageStrategy || (exports.MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions = exports.ConnectionOptions || (exports.ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n await messageWriter.write(requestMessage);\n responsePromises.set(id, responsePromise);\n }\n catch (error) {\n logger.error(`Sending request failed.`);\n // Writing the message failed. So we need to reject the promise.\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable = exports.Disposable || (exports.Disposable = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event = exports.Event || (exports.Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch = exports.Touch || (exports.Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error('Message header must separate key and value using :');\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader = exports.MessageReader || (exports.MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error('Header must provide a Content-Length property.'));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error('Content-Length value must be a number.'));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter = exports.MessageWriter || (exports.MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message = exports.Message || (exports.Message = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n constructor(process) {\n super();\n this.process = process;\n let eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose());\n }\n listen(callback) {\n this.process.on('message', callback);\n return api_1.Disposable.create(() => this.process.off('message', callback));\n }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n constructor(process) {\n super();\n this.process = process;\n this.errorCount = 0;\n const eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose);\n }\n write(msg) {\n try {\n if (typeof this.process.send === 'function') {\n this.process.send(msg, undefined, undefined, (error) => {\n if (error) {\n this.errorCount++;\n this.handleError(error, msg);\n }\n else {\n this.errorCount = 0;\n }\n });\n }\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this.onData = new api_1.Emitter;\n port.on('close', () => this.fireClose);\n port.on('error', (error) => this.fireError(error));\n port.on('message', (message) => {\n this.onData.fire(message);\n });\n }\n listen(callback) {\n return this.onData.event(callback);\n }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.on('close', () => this.fireClose());\n port.on('error', (error) => this.fireError(error));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(socket, encoding = 'utf-8') {\n super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(socket, options) {\n super((0, ril_1.default)().stream.asWritableStream(socket), options);\n this.socket = socket;\n }\n dispose() {\n super.dispose();\n this.socket.destroy();\n }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(readable, encoding) {\n super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(writable, options) {\n super((0, ril_1.default)().stream.asWritableStream(writable), options);\n }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n ['linux', 107],\n ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n }\n let result;\n if (XDG_RUNTIME_DIR) {\n result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n }\n else {\n result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n }\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined && result.length > limit) {\n (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n }\n return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n let server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(pipeName);\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n const server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(port, '127.0.0.1', () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n const candidate = value;\n return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n const candidate = value;\n return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n if (!logger) {\n logger = api_1.NullLogger;\n }\n const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, encoding) {\n return Buffer.from(value, encoding);\n }\n toString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n else {\n return new util_1.TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n }\n else {\n return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n }\n }\n allocNative(length) {\n return Buffer.allocUnsafe(length);\n }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n onData(listener) {\n this.stream.on('data', listener);\n return api_1.Disposable.create(() => this.stream.off('data', listener));\n }\n}\nclass WritableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n write(data, encoding) {\n return new Promise((resolve, reject) => {\n const callback = (error) => {\n if (error === undefined || error === null) {\n resolve();\n }\n else {\n reject(error);\n }\n };\n if (typeof data === 'string') {\n this.stream.write(data, encoding, callback);\n }\n else {\n this.stream.write(data, callback);\n }\n });\n }\n end() {\n this.stream.end();\n }\n}\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n try {\n return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n try {\n if (buffer instanceof Buffer) {\n return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n }\n else {\n return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n asWritableStream: (stream) => new WritableStreamWrapper(stream)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setImmediate(callback, ...args);\n return { dispose: () => clearImmediate(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n }\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticPullMode = exports.vsdiag = void 0;\n__exportStar(require(\"vscode-languageserver-protocol\"), exports);\n__exportStar(require(\"./features\"), exports);\nvar diagnostic_1 = require(\"./diagnostic\");\nObject.defineProperty(exports, \"vsdiag\", { enumerable: true, get: function () { return diagnostic_1.vsdiag; } });\nObject.defineProperty(exports, \"DiagnosticPullMode\", { enumerable: true, get: function () { return diagnostic_1.DiagnosticPullMode; } });\n__exportStar(require(\"./client\"), exports);\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallHierarchyFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass CallHierarchyProvider {\n constructor(client) {\n this.client = client;\n this.middleware = client.middleware;\n }\n prepareCallHierarchy(document, position, token) {\n const client = this.client;\n const middleware = this.middleware;\n const prepareCallHierarchy = (document, position, token) => {\n const params = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position);\n return client.sendRequest(vscode_languageserver_protocol_1.CallHierarchyPrepareRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asCallHierarchyItems(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CallHierarchyPrepareRequest.type, token, error, null);\n });\n };\n return middleware.prepareCallHierarchy\n ? middleware.prepareCallHierarchy(document, position, token, prepareCallHierarchy)\n : prepareCallHierarchy(document, position, token);\n }\n provideCallHierarchyIncomingCalls(item, token) {\n const client = this.client;\n const middleware = this.middleware;\n const provideCallHierarchyIncomingCalls = (item, token) => {\n const params = {\n item: client.code2ProtocolConverter.asCallHierarchyItem(item)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.CallHierarchyIncomingCallsRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asCallHierarchyIncomingCalls(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CallHierarchyIncomingCallsRequest.type, token, error, null);\n });\n };\n return middleware.provideCallHierarchyIncomingCalls\n ? middleware.provideCallHierarchyIncomingCalls(item, token, provideCallHierarchyIncomingCalls)\n : provideCallHierarchyIncomingCalls(item, token);\n }\n provideCallHierarchyOutgoingCalls(item, token) {\n const client = this.client;\n const middleware = this.middleware;\n const provideCallHierarchyOutgoingCalls = (item, token) => {\n const params = {\n item: client.code2ProtocolConverter.asCallHierarchyItem(item)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.CallHierarchyOutgoingCallsRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asCallHierarchyOutgoingCalls(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CallHierarchyOutgoingCallsRequest.type, token, error, null);\n });\n };\n return middleware.provideCallHierarchyOutgoingCalls\n ? middleware.provideCallHierarchyOutgoingCalls(item, token, provideCallHierarchyOutgoingCalls)\n : provideCallHierarchyOutgoingCalls(item, token);\n }\n}\nclass CallHierarchyFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.CallHierarchyPrepareRequest.type);\n }\n fillClientCapabilities(cap) {\n const capabilities = cap;\n const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'callHierarchy');\n capability.dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const [id, options] = this.getRegistration(documentSelector, capabilities.callHierarchyProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const client = this._client;\n const provider = new CallHierarchyProvider(client);\n return [vscode_1.languages.registerCallHierarchyProvider(this._client.protocol2CodeConverter.asDocumentSelector(options.documentSelector), provider), provider];\n }\n}\nexports.CallHierarchyFeature = CallHierarchyFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProposedFeatures = exports.BaseLanguageClient = exports.MessageTransports = exports.SuspendMode = exports.State = exports.CloseAction = exports.ErrorAction = exports.RevealOutputChannelOn = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst c2p = require(\"./codeConverter\");\nconst p2c = require(\"./protocolConverter\");\nconst Is = require(\"./utils/is\");\nconst async_1 = require(\"./utils/async\");\nconst UUID = require(\"./utils/uuid\");\nconst progressPart_1 = require(\"./progressPart\");\nconst features_1 = require(\"./features\");\nconst diagnostic_1 = require(\"./diagnostic\");\nconst notebook_1 = require(\"./notebook\");\nconst configuration_1 = require(\"./configuration\");\nconst textSynchronization_1 = require(\"./textSynchronization\");\nconst completion_1 = require(\"./completion\");\nconst hover_1 = require(\"./hover\");\nconst definition_1 = require(\"./definition\");\nconst signatureHelp_1 = require(\"./signatureHelp\");\nconst documentHighlight_1 = require(\"./documentHighlight\");\nconst documentSymbol_1 = require(\"./documentSymbol\");\nconst workspaceSymbol_1 = require(\"./workspaceSymbol\");\nconst reference_1 = require(\"./reference\");\nconst codeAction_1 = require(\"./codeAction\");\nconst codeLens_1 = require(\"./codeLens\");\nconst formatting_1 = require(\"./formatting\");\nconst rename_1 = require(\"./rename\");\nconst documentLink_1 = require(\"./documentLink\");\nconst executeCommand_1 = require(\"./executeCommand\");\nconst fileSystemWatcher_1 = require(\"./fileSystemWatcher\");\nconst colorProvider_1 = require(\"./colorProvider\");\nconst implementation_1 = require(\"./implementation\");\nconst typeDefinition_1 = require(\"./typeDefinition\");\nconst workspaceFolder_1 = require(\"./workspaceFolder\");\nconst foldingRange_1 = require(\"./foldingRange\");\nconst declaration_1 = require(\"./declaration\");\nconst selectionRange_1 = require(\"./selectionRange\");\nconst progress_1 = require(\"./progress\");\nconst callHierarchy_1 = require(\"./callHierarchy\");\nconst semanticTokens_1 = require(\"./semanticTokens\");\nconst fileOperations_1 = require(\"./fileOperations\");\nconst linkedEditingRange_1 = require(\"./linkedEditingRange\");\nconst typeHierarchy_1 = require(\"./typeHierarchy\");\nconst inlineValue_1 = require(\"./inlineValue\");\nconst inlayHint_1 = require(\"./inlayHint\");\n/**\n * Controls when the output channel is revealed.\n */\nvar RevealOutputChannelOn;\n(function (RevealOutputChannelOn) {\n RevealOutputChannelOn[RevealOutputChannelOn[\"Info\"] = 1] = \"Info\";\n RevealOutputChannelOn[RevealOutputChannelOn[\"Warn\"] = 2] = \"Warn\";\n RevealOutputChannelOn[RevealOutputChannelOn[\"Error\"] = 3] = \"Error\";\n RevealOutputChannelOn[RevealOutputChannelOn[\"Never\"] = 4] = \"Never\";\n})(RevealOutputChannelOn = exports.RevealOutputChannelOn || (exports.RevealOutputChannelOn = {}));\n/**\n * An action to be performed when the connection is producing errors.\n */\nvar ErrorAction;\n(function (ErrorAction) {\n /**\n * Continue running the server.\n */\n ErrorAction[ErrorAction[\"Continue\"] = 1] = \"Continue\";\n /**\n * Shutdown the server.\n */\n ErrorAction[ErrorAction[\"Shutdown\"] = 2] = \"Shutdown\";\n})(ErrorAction = exports.ErrorAction || (exports.ErrorAction = {}));\n/**\n * An action to be performed when the connection to a server got closed.\n */\nvar CloseAction;\n(function (CloseAction) {\n /**\n * Don't restart the server. The connection stays closed.\n */\n CloseAction[CloseAction[\"DoNotRestart\"] = 1] = \"DoNotRestart\";\n /**\n * Restart the server.\n */\n CloseAction[CloseAction[\"Restart\"] = 2] = \"Restart\";\n})(CloseAction = exports.CloseAction || (exports.CloseAction = {}));\n/**\n * Signals in which state the language client is in.\n */\nvar State;\n(function (State) {\n /**\n * The client is stopped or got never started.\n */\n State[State[\"Stopped\"] = 1] = \"Stopped\";\n /**\n * The client is starting but not ready yet.\n */\n State[State[\"Starting\"] = 3] = \"Starting\";\n /**\n * The client is running and ready.\n */\n State[State[\"Running\"] = 2] = \"Running\";\n})(State = exports.State || (exports.State = {}));\nvar SuspendMode;\n(function (SuspendMode) {\n /**\n * Don't allow suspend mode.\n */\n SuspendMode[\"off\"] = \"off\";\n /**\n * Support suspend mode even if not all\n * registered providers have a corresponding\n * activation listener.\n */\n SuspendMode[\"on\"] = \"on\";\n})(SuspendMode = exports.SuspendMode || (exports.SuspendMode = {}));\nclass DefaultErrorHandler {\n constructor(client, maxRestartCount) {\n this.client = client;\n this.maxRestartCount = maxRestartCount;\n this.restarts = [];\n }\n error(_error, _message, count) {\n if (count && count <= 3) {\n return { action: ErrorAction.Continue };\n }\n return { action: ErrorAction.Shutdown };\n }\n closed() {\n this.restarts.push(Date.now());\n if (this.restarts.length <= this.maxRestartCount) {\n return { action: CloseAction.Restart };\n }\n else {\n let diff = this.restarts[this.restarts.length - 1] - this.restarts[0];\n if (diff <= 3 * 60 * 1000) {\n return { action: CloseAction.DoNotRestart, message: `The ${this.client.name} server crashed ${this.maxRestartCount + 1} times in the last 3 minutes. The server will not be restarted. See the output for more information.` };\n }\n else {\n this.restarts.shift();\n return { action: CloseAction.Restart };\n }\n }\n }\n}\nvar ClientState;\n(function (ClientState) {\n ClientState[\"Initial\"] = \"initial\";\n ClientState[\"Starting\"] = \"starting\";\n ClientState[\"StartFailed\"] = \"startFailed\";\n ClientState[\"Running\"] = \"running\";\n ClientState[\"Stopping\"] = \"stopping\";\n ClientState[\"Stopped\"] = \"stopped\";\n})(ClientState || (ClientState = {}));\nvar MessageTransports;\n(function (MessageTransports) {\n function is(value) {\n let candidate = value;\n return candidate && vscode_languageserver_protocol_1.MessageReader.is(value.reader) && vscode_languageserver_protocol_1.MessageWriter.is(value.writer);\n }\n MessageTransports.is = is;\n})(MessageTransports = exports.MessageTransports || (exports.MessageTransports = {}));\nclass BaseLanguageClient {\n constructor(id, name, clientOptions) {\n this._traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\n this._diagnosticQueue = new Map();\n this._diagnosticQueueState = { state: 'idle' };\n this._features = [];\n this._dynamicFeatures = new Map();\n this.workspaceEditLock = new async_1.Semaphore(1);\n this._id = id;\n this._name = name;\n clientOptions = clientOptions || {};\n const markdown = { isTrusted: false, supportHtml: false };\n if (clientOptions.markdown !== undefined) {\n markdown.isTrusted = clientOptions.markdown.isTrusted === true;\n markdown.supportHtml = clientOptions.markdown.supportHtml === true;\n }\n // const defaultInterval = (clientOptions as TestOptions).$testMode ? 50 : 60000;\n this._clientOptions = {\n documentSelector: clientOptions.documentSelector ?? [],\n synchronize: clientOptions.synchronize ?? {},\n diagnosticCollectionName: clientOptions.diagnosticCollectionName,\n outputChannelName: clientOptions.outputChannelName ?? this._name,\n revealOutputChannelOn: clientOptions.revealOutputChannelOn ?? RevealOutputChannelOn.Error,\n stdioEncoding: clientOptions.stdioEncoding ?? 'utf8',\n initializationOptions: clientOptions.initializationOptions,\n initializationFailedHandler: clientOptions.initializationFailedHandler,\n progressOnInitialization: !!clientOptions.progressOnInitialization,\n errorHandler: clientOptions.errorHandler ?? this.createDefaultErrorHandler(clientOptions.connectionOptions?.maxRestartCount),\n middleware: clientOptions.middleware ?? {},\n uriConverters: clientOptions.uriConverters,\n workspaceFolder: clientOptions.workspaceFolder,\n connectionOptions: clientOptions.connectionOptions,\n markdown,\n // suspend: {\n // \tmode: clientOptions.suspend?.mode ?? SuspendMode.off,\n // \tcallback: clientOptions.suspend?.callback ?? (() => Promise.resolve(true)),\n // \tinterval: clientOptions.suspend?.interval ? Math.max(clientOptions.suspend.interval, defaultInterval) : defaultInterval\n // },\n diagnosticPullOptions: clientOptions.diagnosticPullOptions ?? { onChange: true, onSave: false },\n notebookDocumentOptions: clientOptions.notebookDocumentOptions ?? {}\n };\n this._clientOptions.synchronize = this._clientOptions.synchronize || {};\n this._state = ClientState.Initial;\n this._ignoredRegistrations = new Set();\n this._listeners = [];\n this._notificationHandlers = new Map();\n this._pendingNotificationHandlers = new Map();\n this._notificationDisposables = new Map();\n this._requestHandlers = new Map();\n this._pendingRequestHandlers = new Map();\n this._requestDisposables = new Map();\n this._progressHandlers = new Map();\n this._pendingProgressHandlers = new Map();\n this._progressDisposables = new Map();\n this._connection = undefined;\n // this._idleStart = undefined;\n this._initializeResult = undefined;\n if (clientOptions.outputChannel) {\n this._outputChannel = clientOptions.outputChannel;\n this._disposeOutputChannel = false;\n }\n else {\n this._outputChannel = undefined;\n this._disposeOutputChannel = true;\n }\n this._traceOutputChannel = clientOptions.traceOutputChannel;\n this._diagnostics = undefined;\n this._pendingOpenNotifications = new Set();\n this._pendingChangeSemaphore = new async_1.Semaphore(1);\n this._pendingChangeDelayer = new async_1.Delayer(250);\n this._fileEvents = [];\n this._fileEventDelayer = new async_1.Delayer(250);\n this._onStop = undefined;\n this._telemetryEmitter = new vscode_languageserver_protocol_1.Emitter();\n this._stateChangeEmitter = new vscode_languageserver_protocol_1.Emitter();\n this._trace = vscode_languageserver_protocol_1.Trace.Off;\n this._tracer = {\n log: (messageOrDataObject, data) => {\n if (Is.string(messageOrDataObject)) {\n this.logTrace(messageOrDataObject, data);\n }\n else {\n this.logObjectTrace(messageOrDataObject);\n }\n },\n };\n this._c2p = c2p.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.code2Protocol : undefined);\n this._p2c = p2c.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.protocol2Code : undefined, this._clientOptions.markdown.isTrusted, this._clientOptions.markdown.supportHtml);\n this._syncedDocuments = new Map();\n this.registerBuiltinFeatures();\n }\n get name() {\n return this._name;\n }\n get middleware() {\n return this._clientOptions.middleware ?? Object.create(null);\n }\n get clientOptions() {\n return this._clientOptions;\n }\n get protocol2CodeConverter() {\n return this._p2c;\n }\n get code2ProtocolConverter() {\n return this._c2p;\n }\n get onTelemetry() {\n return this._telemetryEmitter.event;\n }\n get onDidChangeState() {\n return this._stateChangeEmitter.event;\n }\n get outputChannel() {\n if (!this._outputChannel) {\n this._outputChannel = vscode_1.window.createOutputChannel(this._clientOptions.outputChannelName ? this._clientOptions.outputChannelName : this._name);\n }\n return this._outputChannel;\n }\n get traceOutputChannel() {\n if (this._traceOutputChannel) {\n return this._traceOutputChannel;\n }\n return this.outputChannel;\n }\n get diagnostics() {\n return this._diagnostics;\n }\n get state() {\n return this.getPublicState();\n }\n get $state() {\n return this._state;\n }\n set $state(value) {\n let oldState = this.getPublicState();\n this._state = value;\n let newState = this.getPublicState();\n if (newState !== oldState) {\n this._stateChangeEmitter.fire({ oldState, newState });\n }\n }\n getPublicState() {\n switch (this.$state) {\n case ClientState.Starting:\n return State.Starting;\n case ClientState.Running:\n return State.Running;\n default:\n return State.Stopped;\n }\n }\n get initializeResult() {\n return this._initializeResult;\n }\n async sendRequest(type, ...params) {\n if (this.$state === ClientState.StartFailed || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped) {\n return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive, `Client is not running`));\n }\n // Ensure we have a connection before we force the document sync.\n const connection = await this.$start();\n // If any document is synced in full mode make sure we flush any pending\n // full document syncs.\n if (this._didChangeTextDocumentFeature.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n await this.sendPendingFullTextDocumentChanges(connection);\n }\n return connection.sendRequest(type, ...params);\n }\n onRequest(type, handler) {\n const method = typeof type === 'string' ? type : type.method;\n this._requestHandlers.set(method, handler);\n const connection = this.activeConnection();\n let disposable;\n if (connection !== undefined) {\n this._requestDisposables.set(method, connection.onRequest(type, handler));\n disposable = {\n dispose: () => {\n const disposable = this._requestDisposables.get(method);\n if (disposable !== undefined) {\n disposable.dispose();\n this._requestDisposables.delete(method);\n }\n }\n };\n }\n else {\n this._pendingRequestHandlers.set(method, handler);\n disposable = {\n dispose: () => {\n this._pendingRequestHandlers.delete(method);\n const disposable = this._requestDisposables.get(method);\n if (disposable !== undefined) {\n disposable.dispose();\n this._requestDisposables.delete(method);\n }\n }\n };\n }\n return {\n dispose: () => {\n this._requestHandlers.delete(method);\n disposable.dispose();\n }\n };\n }\n async sendNotification(type, params) {\n if (this.$state === ClientState.StartFailed || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped) {\n return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive, `Client is not running`));\n }\n const needsPendingFullTextDocumentSync = this._didChangeTextDocumentFeature.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full;\n let openNotification;\n if (needsPendingFullTextDocumentSync && typeof type !== 'string' && type.method === vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.method) {\n openNotification = params?.textDocument.uri;\n this._pendingOpenNotifications.add(openNotification);\n }\n // Ensure we have a connection before we force the document sync.\n const connection = await this.$start();\n // If any document is synced in full mode make sure we flush any pending\n // full document syncs.\n if (needsPendingFullTextDocumentSync) {\n await this.sendPendingFullTextDocumentChanges(connection);\n }\n // We need to remove the pending open notification before we actually\n // send the notification over the connection. Otherwise there could be\n // a request coming in that although the open notification got already put\n // onto the wire will ignore pending document changes.\n //\n // Since the code path of connection.sendNotification is actually sync\n // until the message is handed of to the writer and the writer as a semaphore\n // lock with a capacity of 1 no additional async scheduling can happen until\n // the message is actually handed of.\n if (openNotification !== undefined) {\n this._pendingOpenNotifications.delete(openNotification);\n }\n return connection.sendNotification(type, params);\n }\n onNotification(type, handler) {\n const method = typeof type === 'string' ? type : type.method;\n this._notificationHandlers.set(method, handler);\n const connection = this.activeConnection();\n let disposable;\n if (connection !== undefined) {\n this._notificationDisposables.set(method, connection.onNotification(type, handler));\n disposable = {\n dispose: () => {\n const disposable = this._notificationDisposables.get(method);\n if (disposable !== undefined) {\n disposable.dispose();\n this._notificationDisposables.delete(method);\n }\n }\n };\n }\n else {\n this._pendingNotificationHandlers.set(method, handler);\n disposable = {\n dispose: () => {\n this._pendingNotificationHandlers.delete(method);\n const disposable = this._notificationDisposables.get(method);\n if (disposable !== undefined) {\n disposable.dispose();\n this._notificationDisposables.delete(method);\n }\n }\n };\n }\n return {\n dispose: () => {\n this._notificationHandlers.delete(method);\n disposable.dispose();\n }\n };\n }\n async sendProgress(type, token, value) {\n if (this.$state === ClientState.StartFailed || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped) {\n return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive, `Client is not running`));\n }\n try {\n // Ensure we have a connection before we force the document sync.\n const connection = await this.$start();\n return connection.sendProgress(type, token, value);\n }\n catch (error) {\n this.error(`Sending progress for token ${token} failed.`, error);\n throw error;\n }\n }\n onProgress(type, token, handler) {\n this._progressHandlers.set(token, { type, handler });\n const connection = this.activeConnection();\n let disposable;\n const handleWorkDoneProgress = this._clientOptions.middleware?.handleWorkDoneProgress;\n const realHandler = vscode_languageserver_protocol_1.WorkDoneProgress.is(type) && handleWorkDoneProgress !== undefined\n ? (params) => {\n handleWorkDoneProgress(token, params, () => handler(params));\n }\n : handler;\n if (connection !== undefined) {\n this._progressDisposables.set(token, connection.onProgress(type, token, realHandler));\n disposable = {\n dispose: () => {\n const disposable = this._progressDisposables.get(token);\n if (disposable !== undefined) {\n disposable.dispose();\n this._progressDisposables.delete(token);\n }\n }\n };\n }\n else {\n this._pendingProgressHandlers.set(token, { type, handler });\n disposable = {\n dispose: () => {\n this._pendingProgressHandlers.delete(token);\n const disposable = this._progressDisposables.get(token);\n if (disposable !== undefined) {\n disposable.dispose();\n this._progressDisposables.delete(token);\n }\n }\n };\n }\n return {\n dispose: () => {\n this._progressHandlers.delete(token);\n disposable.dispose();\n }\n };\n }\n createDefaultErrorHandler(maxRestartCount) {\n if (maxRestartCount !== undefined && maxRestartCount < 0) {\n throw new Error(`Invalid maxRestartCount: ${maxRestartCount}`);\n }\n return new DefaultErrorHandler(this, maxRestartCount ?? 4);\n }\n async setTrace(value) {\n this._trace = value;\n const connection = this.activeConnection();\n if (connection !== undefined) {\n await connection.trace(this._trace, this._tracer, {\n sendNotification: false,\n traceFormat: this._traceFormat\n });\n }\n }\n data2String(data) {\n if (data instanceof vscode_languageserver_protocol_1.ResponseError) {\n const responseError = data;\n return ` Message: ${responseError.message}\\n Code: ${responseError.code} ${responseError.data ? '\\n' + responseError.data.toString() : ''}`;\n }\n if (data instanceof Error) {\n if (Is.string(data.stack)) {\n return data.stack;\n }\n return data.message;\n }\n if (Is.string(data)) {\n return data;\n }\n return data.toString();\n }\n info(message, data, showNotification = true) {\n this.outputChannel.appendLine(`[Info - ${(new Date().toLocaleTimeString())}] ${message}`);\n if (data !== null && data !== undefined) {\n this.outputChannel.appendLine(this.data2String(data));\n }\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Info) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Info, message);\n }\n }\n warn(message, data, showNotification = true) {\n this.outputChannel.appendLine(`[Warn - ${(new Date().toLocaleTimeString())}] ${message}`);\n if (data !== null && data !== undefined) {\n this.outputChannel.appendLine(this.data2String(data));\n }\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Warn) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Warning, message);\n }\n }\n error(message, data, showNotification = true) {\n this.outputChannel.appendLine(`[Error - ${(new Date().toLocaleTimeString())}] ${message}`);\n if (data !== null && data !== undefined) {\n this.outputChannel.appendLine(this.data2String(data));\n }\n if (showNotification === 'force' || (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Error)) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Error, message);\n }\n }\n showNotificationMessage(type, message) {\n message = message ?? 'A request has failed. See the output for more information.';\n const messageFunc = type === vscode_languageserver_protocol_1.MessageType.Error\n ? vscode_1.window.showErrorMessage\n : type === vscode_languageserver_protocol_1.MessageType.Warning\n ? vscode_1.window.showWarningMessage\n : vscode_1.window.showInformationMessage;\n void messageFunc(message, 'Go to output').then((selection) => {\n if (selection !== undefined) {\n this.outputChannel.show(true);\n }\n });\n }\n logTrace(message, data) {\n this.traceOutputChannel.appendLine(`[Trace - ${(new Date().toLocaleTimeString())}] ${message}`);\n if (data) {\n this.traceOutputChannel.appendLine(this.data2String(data));\n }\n }\n logObjectTrace(data) {\n if (data.isLSPMessage && data.type) {\n this.traceOutputChannel.append(`[LSP - ${(new Date().toLocaleTimeString())}] `);\n }\n else {\n this.traceOutputChannel.append(`[Trace - ${(new Date().toLocaleTimeString())}] `);\n }\n if (data) {\n this.traceOutputChannel.appendLine(`${JSON.stringify(data)}`);\n }\n }\n needsStart() {\n return this.$state === ClientState.Initial || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped;\n }\n needsStop() {\n return this.$state === ClientState.Starting || this.$state === ClientState.Running;\n }\n activeConnection() {\n return this.$state === ClientState.Running && this._connection !== undefined ? this._connection : undefined;\n }\n isRunning() {\n return this.$state === ClientState.Running;\n }\n async start() {\n if (this._disposed === 'disposing' || this._disposed === 'disposed') {\n throw new Error(`Client got disposed and can't be restarted.`);\n }\n if (this.$state === ClientState.Stopping) {\n throw new Error(`Client is currently stopping. Can only restart a full stopped client`);\n }\n // We are already running or are in the process of getting up\n // to speed.\n if (this._onStart !== undefined) {\n return this._onStart;\n }\n const [promise, resolve, reject] = this.createOnStartPromise();\n this._onStart = promise;\n // If we restart then the diagnostics collection is reused.\n if (this._diagnostics === undefined) {\n this._diagnostics = this._clientOptions.diagnosticCollectionName\n ? vscode_1.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName)\n : vscode_1.languages.createDiagnosticCollection();\n }\n // When we start make all buffer handlers pending so that they\n // get added.\n for (const [method, handler] of this._notificationHandlers) {\n if (!this._pendingNotificationHandlers.has(method)) {\n this._pendingNotificationHandlers.set(method, handler);\n }\n }\n for (const [method, handler] of this._requestHandlers) {\n if (!this._pendingRequestHandlers.has(method)) {\n this._pendingRequestHandlers.set(method, handler);\n }\n }\n for (const [token, data] of this._progressHandlers) {\n if (!this._pendingProgressHandlers.has(token)) {\n this._pendingProgressHandlers.set(token, data);\n }\n }\n this.$state = ClientState.Starting;\n try {\n const connection = await this.createConnection();\n connection.onNotification(vscode_languageserver_protocol_1.LogMessageNotification.type, (message) => {\n switch (message.type) {\n case vscode_languageserver_protocol_1.MessageType.Error:\n this.error(message.message, undefined, false);\n break;\n case vscode_languageserver_protocol_1.MessageType.Warning:\n this.warn(message.message, undefined, false);\n break;\n case vscode_languageserver_protocol_1.MessageType.Info:\n this.info(message.message, undefined, false);\n break;\n default:\n this.outputChannel.appendLine(message.message);\n }\n });\n connection.onNotification(vscode_languageserver_protocol_1.ShowMessageNotification.type, (message) => {\n switch (message.type) {\n case vscode_languageserver_protocol_1.MessageType.Error:\n void vscode_1.window.showErrorMessage(message.message);\n break;\n case vscode_languageserver_protocol_1.MessageType.Warning:\n void vscode_1.window.showWarningMessage(message.message);\n break;\n case vscode_languageserver_protocol_1.MessageType.Info:\n void vscode_1.window.showInformationMessage(message.message);\n break;\n default:\n void vscode_1.window.showInformationMessage(message.message);\n }\n });\n connection.onRequest(vscode_languageserver_protocol_1.ShowMessageRequest.type, (params) => {\n let messageFunc;\n switch (params.type) {\n case vscode_languageserver_protocol_1.MessageType.Error:\n messageFunc = vscode_1.window.showErrorMessage;\n break;\n case vscode_languageserver_protocol_1.MessageType.Warning:\n messageFunc = vscode_1.window.showWarningMessage;\n break;\n case vscode_languageserver_protocol_1.MessageType.Info:\n messageFunc = vscode_1.window.showInformationMessage;\n break;\n default:\n messageFunc = vscode_1.window.showInformationMessage;\n }\n let actions = params.actions || [];\n return messageFunc(params.message, ...actions);\n });\n connection.onNotification(vscode_languageserver_protocol_1.TelemetryEventNotification.type, (data) => {\n this._telemetryEmitter.fire(data);\n });\n connection.onRequest(vscode_languageserver_protocol_1.ShowDocumentRequest.type, async (params) => {\n const showDocument = async (params) => {\n const uri = this.protocol2CodeConverter.asUri(params.uri);\n try {\n if (params.external === true) {\n const success = await vscode_1.env.openExternal(uri);\n return { success };\n }\n else {\n const options = {};\n if (params.selection !== undefined) {\n options.selection = this.protocol2CodeConverter.asRange(params.selection);\n }\n if (params.takeFocus === undefined || params.takeFocus === false) {\n options.preserveFocus = true;\n }\n else if (params.takeFocus === true) {\n options.preserveFocus = false;\n }\n await vscode_1.window.showTextDocument(uri, options);\n return { success: true };\n }\n }\n catch (error) {\n return { success: false };\n }\n };\n const middleware = this._clientOptions.middleware.window?.showDocument;\n if (middleware !== undefined) {\n return middleware(params, showDocument);\n }\n else {\n return showDocument(params);\n }\n });\n connection.listen();\n await this.initialize(connection);\n resolve();\n }\n catch (error) {\n this.$state = ClientState.StartFailed;\n this.error(`${this._name} client: couldn't create connection to server.`, error, 'force');\n reject(error);\n }\n return this._onStart;\n }\n createOnStartPromise() {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n return [promise, resolve, reject];\n }\n async initialize(connection) {\n this.refreshTrace(connection, false);\n const initOption = this._clientOptions.initializationOptions;\n // If the client is locked to a workspace folder use it. In this case the workspace folder\n // feature is not registered and we need to initialize the value here.\n const [rootPath, workspaceFolders] = this._clientOptions.workspaceFolder !== undefined\n ? [this._clientOptions.workspaceFolder.uri.fsPath, [{ uri: this._c2p.asUri(this._clientOptions.workspaceFolder.uri), name: this._clientOptions.workspaceFolder.name }]]\n : [this._clientGetRootPath(), null];\n const initParams = {\n processId: null,\n clientInfo: {\n name: vscode_1.env.appName,\n version: vscode_1.version\n },\n locale: this.getLocale(),\n rootPath: rootPath ? rootPath : null,\n rootUri: rootPath ? this._c2p.asUri(vscode_1.Uri.file(rootPath)) : null,\n capabilities: this.computeClientCapabilities(),\n initializationOptions: Is.func(initOption) ? initOption() : initOption,\n trace: vscode_languageserver_protocol_1.Trace.toString(this._trace),\n workspaceFolders: workspaceFolders\n };\n this.fillInitializeParams(initParams);\n if (this._clientOptions.progressOnInitialization) {\n const token = UUID.generateUuid();\n const part = new progressPart_1.ProgressPart(connection, token);\n initParams.workDoneToken = token;\n try {\n const result = await this.doInitialize(connection, initParams);\n part.done();\n return result;\n }\n catch (error) {\n part.cancel();\n throw error;\n }\n }\n else {\n return this.doInitialize(connection, initParams);\n }\n }\n async doInitialize(connection, initParams) {\n try {\n const result = await connection.initialize(initParams);\n if (result.capabilities.positionEncoding !== undefined && result.capabilities.positionEncoding !== vscode_languageserver_protocol_1.PositionEncodingKind.UTF16) {\n throw new Error(`Unsupported position encoding (${result.capabilities.positionEncoding}) received from server ${this.name}`);\n }\n this._initializeResult = result;\n this.$state = ClientState.Running;\n let textDocumentSyncOptions = undefined;\n if (Is.number(result.capabilities.textDocumentSync)) {\n if (result.capabilities.textDocumentSync === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\n textDocumentSyncOptions = {\n openClose: false,\n change: vscode_languageserver_protocol_1.TextDocumentSyncKind.None,\n save: undefined\n };\n }\n else {\n textDocumentSyncOptions = {\n openClose: true,\n change: result.capabilities.textDocumentSync,\n save: {\n includeText: false\n }\n };\n }\n }\n else if (result.capabilities.textDocumentSync !== undefined && result.capabilities.textDocumentSync !== null) {\n textDocumentSyncOptions = result.capabilities.textDocumentSync;\n }\n this._capabilities = Object.assign({}, result.capabilities, { resolvedTextDocumentSync: textDocumentSyncOptions });\n connection.onNotification(vscode_languageserver_protocol_1.PublishDiagnosticsNotification.type, params => this.handleDiagnostics(params));\n connection.onRequest(vscode_languageserver_protocol_1.RegistrationRequest.type, params => this.handleRegistrationRequest(params));\n // See https://github.com/Microsoft/vscode-languageserver-node/issues/199\n connection.onRequest('client/registerFeature', params => this.handleRegistrationRequest(params));\n connection.onRequest(vscode_languageserver_protocol_1.UnregistrationRequest.type, params => this.handleUnregistrationRequest(params));\n // See https://github.com/Microsoft/vscode-languageserver-node/issues/199\n connection.onRequest('client/unregisterFeature', params => this.handleUnregistrationRequest(params));\n connection.onRequest(vscode_languageserver_protocol_1.ApplyWorkspaceEditRequest.type, params => this.handleApplyWorkspaceEdit(params));\n // Add pending notification, request and progress handlers.\n for (const [method, handler] of this._pendingNotificationHandlers) {\n this._notificationDisposables.set(method, connection.onNotification(method, handler));\n }\n this._pendingNotificationHandlers.clear();\n for (const [method, handler] of this._pendingRequestHandlers) {\n this._requestDisposables.set(method, connection.onRequest(method, handler));\n }\n this._pendingRequestHandlers.clear();\n for (const [token, data] of this._pendingProgressHandlers) {\n this._progressDisposables.set(token, connection.onProgress(data.type, token, data.handler));\n }\n this._pendingProgressHandlers.clear();\n // if (this._clientOptions.suspend.mode !== SuspendMode.off) {\n // \tthis._idleInterval = RAL().timer.setInterval(() => this.checkSuspend(), this._clientOptions.suspend.interval);\n // }\n await connection.sendNotification(vscode_languageserver_protocol_1.InitializedNotification.type, {});\n this.hookFileEvents(connection);\n this.hookConfigurationChanged(connection);\n this.initializeFeatures(connection);\n return result;\n }\n catch (error) {\n if (this._clientOptions.initializationFailedHandler) {\n if (this._clientOptions.initializationFailedHandler(error)) {\n void this.initialize(connection);\n }\n else {\n void this.stop();\n }\n }\n else if (error instanceof vscode_languageserver_protocol_1.ResponseError && error.data && error.data.retry) {\n void vscode_1.window.showErrorMessage(error.message, { title: 'Retry', id: 'retry' }).then(item => {\n if (item && item.id === 'retry') {\n void this.initialize(connection);\n }\n else {\n void this.stop();\n }\n });\n }\n else {\n if (error && error.message) {\n void vscode_1.window.showErrorMessage(error.message);\n }\n this.error('Server initialization failed.', error);\n void this.stop();\n }\n throw error;\n }\n }\n _clientGetRootPath() {\n let folders = vscode_1.workspace.workspaceFolders;\n if (!folders || folders.length === 0) {\n return undefined;\n }\n let folder = folders[0];\n if (folder.uri.scheme === 'file') {\n return folder.uri.fsPath;\n }\n return undefined;\n }\n stop(timeout = 2000) {\n // Wait 2 seconds on stop\n return this.shutdown('stop', timeout);\n }\n dispose(timeout = 2000) {\n try {\n this._disposed = 'disposing';\n return this.stop(timeout);\n }\n finally {\n this._disposed = 'disposed';\n }\n }\n async shutdown(mode, timeout) {\n // If the client is stopped or in its initial state return.\n if (this.$state === ClientState.Stopped || this.$state === ClientState.Initial) {\n return;\n }\n // If we are stopping the client and have a stop promise return it.\n if (this.$state === ClientState.Stopping) {\n if (this._onStop !== undefined) {\n return this._onStop;\n }\n else {\n throw new Error(`Client is stopping but no stop promise available.`);\n }\n }\n const connection = this.activeConnection();\n // We can't stop a client that is not running (e.g. has no connection). Especially not\n // on that us starting since it can't be correctly synchronized.\n if (connection === undefined || this.$state !== ClientState.Running) {\n throw new Error(`Client is not running and can't be stopped. It's current state is: ${this.$state}`);\n }\n this._initializeResult = undefined;\n this.$state = ClientState.Stopping;\n this.cleanUp(mode);\n const tp = new Promise(c => { (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(c, timeout); });\n const shutdown = (async (connection) => {\n await connection.shutdown();\n await connection.exit();\n return connection;\n })(connection);\n return this._onStop = Promise.race([tp, shutdown]).then((connection) => {\n // The connection won the race with the timeout.\n if (connection !== undefined) {\n connection.end();\n connection.dispose();\n }\n else {\n this.error(`Stopping server timed out`, undefined, false);\n throw new Error(`Stopping the server timed out`);\n }\n }, (error) => {\n this.error(`Stopping server failed`, error, false);\n throw error;\n }).finally(() => {\n this.$state = ClientState.Stopped;\n mode === 'stop' && this.cleanUpChannel();\n this._onStart = undefined;\n this._onStop = undefined;\n this._connection = undefined;\n this._ignoredRegistrations.clear();\n });\n }\n cleanUp(mode) {\n // purge outstanding file events.\n this._fileEvents = [];\n this._fileEventDelayer.cancel();\n const disposables = this._listeners.splice(0, this._listeners.length);\n for (const disposable of disposables) {\n disposable.dispose();\n }\n if (this._syncedDocuments) {\n this._syncedDocuments.clear();\n }\n // Dispose features in reverse order;\n for (const feature of Array.from(this._features.entries()).map(entry => entry[1]).reverse()) {\n feature.dispose();\n }\n if (mode === 'stop' && this._diagnostics !== undefined) {\n this._diagnostics.dispose();\n this._diagnostics = undefined;\n }\n if (this._idleInterval !== undefined) {\n this._idleInterval.dispose();\n this._idleInterval = undefined;\n }\n // this._idleStart = undefined;\n }\n cleanUpChannel() {\n if (this._outputChannel !== undefined && this._disposeOutputChannel) {\n this._outputChannel.dispose();\n this._outputChannel = undefined;\n }\n }\n notifyFileEvent(event) {\n const client = this;\n async function didChangeWatchedFile(event) {\n client._fileEvents.push(event);\n return client._fileEventDelayer.trigger(async () => {\n await client.sendNotification(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type, { changes: client._fileEvents });\n client._fileEvents = [];\n });\n }\n const workSpaceMiddleware = this.clientOptions.middleware?.workspace;\n (workSpaceMiddleware?.didChangeWatchedFile ? workSpaceMiddleware.didChangeWatchedFile(event, didChangeWatchedFile) : didChangeWatchedFile(event)).catch((error) => {\n client.error(`Notify file events failed.`, error);\n });\n }\n async sendPendingFullTextDocumentChanges(connection) {\n return this._pendingChangeSemaphore.lock(async () => {\n try {\n const changes = this._didChangeTextDocumentFeature.getPendingDocumentChanges(this._pendingOpenNotifications);\n if (changes.length === 0) {\n return;\n }\n for (const document of changes) {\n const params = this.code2ProtocolConverter.asChangeTextDocumentParams(document);\n // We await the send and not the delivery since it is more or less the same for\n // notifications.\n await connection.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n this._didChangeTextDocumentFeature.notificationSent(document, vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n }\n }\n catch (error) {\n this.error(`Sending pending changes failed`, error, false);\n throw error;\n }\n });\n }\n triggerPendingChangeDelivery() {\n this._pendingChangeDelayer.trigger(async () => {\n const connection = this.activeConnection();\n if (connection === undefined) {\n this.triggerPendingChangeDelivery();\n return;\n }\n await this.sendPendingFullTextDocumentChanges(connection);\n }).catch((error) => this.error(`Delivering pending changes failed`, error, false));\n }\n handleDiagnostics(params) {\n if (!this._diagnostics) {\n return;\n }\n const key = params.uri;\n if (this._diagnosticQueueState.state === 'busy' && this._diagnosticQueueState.document === key) {\n // Cancel the active run;\n this._diagnosticQueueState.tokenSource.cancel();\n }\n this._diagnosticQueue.set(params.uri, params.diagnostics);\n this.triggerDiagnosticQueue();\n }\n triggerDiagnosticQueue() {\n (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => { this.workDiagnosticQueue(); });\n }\n workDiagnosticQueue() {\n if (this._diagnosticQueueState.state === 'busy') {\n return;\n }\n const next = this._diagnosticQueue.entries().next();\n if (next.done === true) {\n // Nothing in the queue\n return;\n }\n const [document, diagnostics] = next.value;\n this._diagnosticQueue.delete(document);\n const tokenSource = new vscode_1.CancellationTokenSource();\n this._diagnosticQueueState = { state: 'busy', document: document, tokenSource };\n this._p2c.asDiagnostics(diagnostics, tokenSource.token).then((converted) => {\n if (!tokenSource.token.isCancellationRequested) {\n const uri = this._p2c.asUri(document);\n const middleware = this.clientOptions.middleware;\n if (middleware.handleDiagnostics) {\n middleware.handleDiagnostics(uri, converted, (uri, diagnostics) => this.setDiagnostics(uri, diagnostics));\n }\n else {\n this.setDiagnostics(uri, converted);\n }\n }\n }).finally(() => {\n this._diagnosticQueueState = { state: 'idle' };\n this.triggerDiagnosticQueue();\n });\n }\n setDiagnostics(uri, diagnostics) {\n if (!this._diagnostics) {\n return;\n }\n this._diagnostics.set(uri, diagnostics);\n }\n getLocale() {\n return vscode_1.env.language;\n }\n async $start() {\n if (this.$state === ClientState.StartFailed) {\n throw new Error(`Previous start failed. Can't restart server.`);\n }\n await this.start();\n const connection = this.activeConnection();\n if (connection === undefined) {\n throw new Error(`Starting server failed`);\n }\n return connection;\n }\n async createConnection() {\n let errorHandler = (error, message, count) => {\n this.handleConnectionError(error, message, count).catch((error) => this.error(`Handling connection error failed`, error));\n };\n let closeHandler = () => {\n this.handleConnectionClosed().catch((error) => this.error(`Handling connection close failed`, error));\n };\n const transports = await this.createMessageTransports(this._clientOptions.stdioEncoding || 'utf8');\n this._connection = createConnection(transports.reader, transports.writer, errorHandler, closeHandler, this._clientOptions.connectionOptions);\n return this._connection;\n }\n async handleConnectionClosed() {\n // Check whether this is a normal shutdown in progress or the client stopped normally.\n if (this.$state === ClientState.Stopped) {\n return;\n }\n try {\n if (this._connection !== undefined) {\n this._connection.dispose();\n }\n }\n catch (error) {\n // Disposing a connection could fail if error cases.\n }\n let handlerResult = { action: CloseAction.DoNotRestart };\n if (this.$state !== ClientState.Stopping) {\n try {\n handlerResult = await this._clientOptions.errorHandler.closed();\n }\n catch (error) {\n // Ignore errors coming from the error handler.\n }\n }\n this._connection = undefined;\n if (handlerResult.action === CloseAction.DoNotRestart) {\n this.error(handlerResult.message ?? 'Connection to server got closed. Server will not be restarted.', undefined, handlerResult.handled === true ? false : 'force');\n this.cleanUp('stop');\n if (this.$state === ClientState.Starting) {\n this.$state = ClientState.StartFailed;\n }\n else {\n this.$state = ClientState.Stopped;\n }\n this._onStop = Promise.resolve();\n this._onStart = undefined;\n }\n else if (handlerResult.action === CloseAction.Restart) {\n this.info(handlerResult.message ?? 'Connection to server got closed. Server will restart.', !handlerResult.handled);\n this.cleanUp('restart');\n this.$state = ClientState.Initial;\n this._onStop = Promise.resolve();\n this._onStart = undefined;\n this.start().catch((error) => this.error(`Restarting server failed`, error, 'force'));\n }\n }\n async handleConnectionError(error, message, count) {\n const handlerResult = await this._clientOptions.errorHandler.error(error, message, count);\n if (handlerResult.action === ErrorAction.Shutdown) {\n this.error(handlerResult.message ?? `Client ${this._name}: connection to server is erroring. Shutting down server.`, undefined, handlerResult.handled === true ? false : 'force');\n this.stop().catch((error) => {\n this.error(`Stopping server failed`, error, false);\n });\n }\n }\n hookConfigurationChanged(connection) {\n this._listeners.push(vscode_1.workspace.onDidChangeConfiguration(() => {\n this.refreshTrace(connection, true);\n }));\n }\n refreshTrace(connection, sendNotification = false) {\n const config = vscode_1.workspace.getConfiguration(this._id);\n let trace = vscode_languageserver_protocol_1.Trace.Off;\n let traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\n if (config) {\n const traceConfig = config.get('trace.server', 'off');\n if (typeof traceConfig === 'string') {\n trace = vscode_languageserver_protocol_1.Trace.fromString(traceConfig);\n }\n else {\n trace = vscode_languageserver_protocol_1.Trace.fromString(config.get('trace.server.verbosity', 'off'));\n traceFormat = vscode_languageserver_protocol_1.TraceFormat.fromString(config.get('trace.server.format', 'text'));\n }\n }\n this._trace = trace;\n this._traceFormat = traceFormat;\n connection.trace(this._trace, this._tracer, {\n sendNotification,\n traceFormat: this._traceFormat\n }).catch((error) => { this.error(`Updating trace failed with error`, error, false); });\n }\n hookFileEvents(_connection) {\n let fileEvents = this._clientOptions.synchronize.fileEvents;\n if (!fileEvents) {\n return;\n }\n let watchers;\n if (Is.array(fileEvents)) {\n watchers = fileEvents;\n }\n else {\n watchers = [fileEvents];\n }\n if (!watchers) {\n return;\n }\n this._dynamicFeatures.get(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type.method).registerRaw(UUID.generateUuid(), watchers);\n }\n registerFeatures(features) {\n for (let feature of features) {\n this.registerFeature(feature);\n }\n }\n registerFeature(feature) {\n this._features.push(feature);\n if (features_1.DynamicFeature.is(feature)) {\n const registrationType = feature.registrationType;\n this._dynamicFeatures.set(registrationType.method, feature);\n }\n }\n getFeature(request) {\n return this._dynamicFeatures.get(request);\n }\n hasDedicatedTextSynchronizationFeature(textDocument) {\n const feature = this.getFeature(vscode_languageserver_protocol_1.NotebookDocumentSyncRegistrationType.method);\n if (feature === undefined || !(feature instanceof notebook_1.NotebookDocumentSyncFeature)) {\n return false;\n }\n return feature.handles(textDocument);\n }\n registerBuiltinFeatures() {\n const pendingFullTextDocumentChanges = new Map();\n this.registerFeature(new configuration_1.ConfigurationFeature(this));\n this.registerFeature(new textSynchronization_1.DidOpenTextDocumentFeature(this, this._syncedDocuments));\n this._didChangeTextDocumentFeature = new textSynchronization_1.DidChangeTextDocumentFeature(this, pendingFullTextDocumentChanges);\n this._didChangeTextDocumentFeature.onPendingChangeAdded(() => {\n this.triggerPendingChangeDelivery();\n });\n this.registerFeature(this._didChangeTextDocumentFeature);\n this.registerFeature(new textSynchronization_1.WillSaveFeature(this));\n this.registerFeature(new textSynchronization_1.WillSaveWaitUntilFeature(this));\n this.registerFeature(new textSynchronization_1.DidSaveTextDocumentFeature(this));\n this.registerFeature(new textSynchronization_1.DidCloseTextDocumentFeature(this, this._syncedDocuments, pendingFullTextDocumentChanges));\n this.registerFeature(new fileSystemWatcher_1.FileSystemWatcherFeature(this, (event) => this.notifyFileEvent(event)));\n this.registerFeature(new completion_1.CompletionItemFeature(this));\n this.registerFeature(new hover_1.HoverFeature(this));\n this.registerFeature(new signatureHelp_1.SignatureHelpFeature(this));\n this.registerFeature(new definition_1.DefinitionFeature(this));\n this.registerFeature(new reference_1.ReferencesFeature(this));\n this.registerFeature(new documentHighlight_1.DocumentHighlightFeature(this));\n this.registerFeature(new documentSymbol_1.DocumentSymbolFeature(this));\n this.registerFeature(new workspaceSymbol_1.WorkspaceSymbolFeature(this));\n this.registerFeature(new codeAction_1.CodeActionFeature(this));\n this.registerFeature(new codeLens_1.CodeLensFeature(this));\n this.registerFeature(new formatting_1.DocumentFormattingFeature(this));\n this.registerFeature(new formatting_1.DocumentRangeFormattingFeature(this));\n this.registerFeature(new formatting_1.DocumentOnTypeFormattingFeature(this));\n this.registerFeature(new rename_1.RenameFeature(this));\n this.registerFeature(new documentLink_1.DocumentLinkFeature(this));\n this.registerFeature(new executeCommand_1.ExecuteCommandFeature(this));\n this.registerFeature(new configuration_1.SyncConfigurationFeature(this));\n this.registerFeature(new typeDefinition_1.TypeDefinitionFeature(this));\n this.registerFeature(new implementation_1.ImplementationFeature(this));\n this.registerFeature(new colorProvider_1.ColorProviderFeature(this));\n // We only register the workspace folder feature if the client is not locked\n // to a specific workspace folder.\n if (this.clientOptions.workspaceFolder === undefined) {\n this.registerFeature(new workspaceFolder_1.WorkspaceFoldersFeature(this));\n }\n this.registerFeature(new foldingRange_1.FoldingRangeFeature(this));\n this.registerFeature(new declaration_1.DeclarationFeature(this));\n this.registerFeature(new selectionRange_1.SelectionRangeFeature(this));\n this.registerFeature(new progress_1.ProgressFeature(this));\n this.registerFeature(new callHierarchy_1.CallHierarchyFeature(this));\n this.registerFeature(new semanticTokens_1.SemanticTokensFeature(this));\n this.registerFeature(new linkedEditingRange_1.LinkedEditingFeature(this));\n this.registerFeature(new fileOperations_1.DidCreateFilesFeature(this));\n this.registerFeature(new fileOperations_1.DidRenameFilesFeature(this));\n this.registerFeature(new fileOperations_1.DidDeleteFilesFeature(this));\n this.registerFeature(new fileOperations_1.WillCreateFilesFeature(this));\n this.registerFeature(new fileOperations_1.WillRenameFilesFeature(this));\n this.registerFeature(new fileOperations_1.WillDeleteFilesFeature(this));\n this.registerFeature(new typeHierarchy_1.TypeHierarchyFeature(this));\n this.registerFeature(new inlineValue_1.InlineValueFeature(this));\n this.registerFeature(new inlayHint_1.InlayHintsFeature(this));\n this.registerFeature(new diagnostic_1.DiagnosticFeature(this));\n this.registerFeature(new notebook_1.NotebookDocumentSyncFeature(this));\n }\n registerProposedFeatures() {\n this.registerFeatures(ProposedFeatures.createAll(this));\n }\n fillInitializeParams(params) {\n for (let feature of this._features) {\n if (Is.func(feature.fillInitializeParams)) {\n feature.fillInitializeParams(params);\n }\n }\n }\n computeClientCapabilities() {\n const result = {};\n (0, features_1.ensure)(result, 'workspace').applyEdit = true;\n const workspaceEdit = (0, features_1.ensure)((0, features_1.ensure)(result, 'workspace'), 'workspaceEdit');\n workspaceEdit.documentChanges = true;\n workspaceEdit.resourceOperations = [vscode_languageserver_protocol_1.ResourceOperationKind.Create, vscode_languageserver_protocol_1.ResourceOperationKind.Rename, vscode_languageserver_protocol_1.ResourceOperationKind.Delete];\n workspaceEdit.failureHandling = vscode_languageserver_protocol_1.FailureHandlingKind.TextOnlyTransactional;\n workspaceEdit.normalizesLineEndings = true;\n workspaceEdit.changeAnnotationSupport = {\n groupsOnLabel: true\n };\n const diagnostics = (0, features_1.ensure)((0, features_1.ensure)(result, 'textDocument'), 'publishDiagnostics');\n diagnostics.relatedInformation = true;\n diagnostics.versionSupport = false;\n diagnostics.tagSupport = { valueSet: [vscode_languageserver_protocol_1.DiagnosticTag.Unnecessary, vscode_languageserver_protocol_1.DiagnosticTag.Deprecated] };\n diagnostics.codeDescriptionSupport = true;\n diagnostics.dataSupport = true;\n const windowCapabilities = (0, features_1.ensure)(result, 'window');\n const showMessage = (0, features_1.ensure)(windowCapabilities, 'showMessage');\n showMessage.messageActionItem = { additionalPropertiesSupport: true };\n const showDocument = (0, features_1.ensure)(windowCapabilities, 'showDocument');\n showDocument.support = true;\n const generalCapabilities = (0, features_1.ensure)(result, 'general');\n generalCapabilities.staleRequestSupport = {\n cancel: true,\n retryOnContentModified: Array.from(BaseLanguageClient.RequestsToCancelOnContentModified)\n };\n generalCapabilities.regularExpressions = { engine: 'ECMAScript', version: 'ES2020' };\n generalCapabilities.markdown = {\n parser: 'marked',\n version: '1.1.0',\n };\n generalCapabilities.positionEncodings = ['utf-16'];\n if (this._clientOptions.markdown.supportHtml) {\n generalCapabilities.markdown.allowedTags = ['ul', 'li', 'p', 'code', 'blockquote', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'em', 'pre', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'div', 'del', 'a', 'strong', 'br', 'img', 'span'];\n }\n for (let feature of this._features) {\n feature.fillClientCapabilities(result);\n }\n return result;\n }\n initializeFeatures(_connection) {\n const documentSelector = this._clientOptions.documentSelector;\n for (const feature of this._features) {\n if (Is.func(feature.preInitialize)) {\n feature.preInitialize(this._capabilities, documentSelector);\n }\n }\n for (const feature of this._features) {\n feature.initialize(this._capabilities, documentSelector);\n }\n }\n async handleRegistrationRequest(params) {\n // We will not receive a registration call before a client is running\n // from a server. However if we stop or shutdown we might which might\n // try to restart the server. So ignore registrations if we are not running\n if (!this.isRunning()) {\n for (const registration of params.registrations) {\n this._ignoredRegistrations.add(registration.id);\n }\n return;\n }\n for (const registration of params.registrations) {\n const feature = this._dynamicFeatures.get(registration.method);\n if (feature === undefined) {\n return Promise.reject(new Error(`No feature implementation for ${registration.method} found. Registration failed.`));\n }\n const options = registration.registerOptions ?? {};\n options.documentSelector = options.documentSelector ?? this._clientOptions.documentSelector;\n const data = {\n id: registration.id,\n registerOptions: options\n };\n try {\n feature.register(data);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }\n async handleUnregistrationRequest(params) {\n for (let unregistration of params.unregisterations) {\n if (this._ignoredRegistrations.has(unregistration.id)) {\n continue;\n }\n const feature = this._dynamicFeatures.get(unregistration.method);\n if (!feature) {\n return Promise.reject(new Error(`No feature implementation for ${unregistration.method} found. Unregistration failed.`));\n }\n feature.unregister(unregistration.id);\n }\n }\n async handleApplyWorkspaceEdit(params) {\n const workspaceEdit = params.edit;\n // Make sure we convert workspace edits one after the other. Otherwise\n // we might execute a workspace edit received first after we received another\n // one since the conversion might race.\n const converted = await this.workspaceEditLock.lock(() => {\n return this._p2c.asWorkspaceEdit(workspaceEdit);\n });\n // This is some sort of workaround since the version check should be done by VS Code in the Workspace.applyEdit.\n // However doing it here adds some safety since the server can lag more behind then an extension.\n const openTextDocuments = new Map();\n vscode_1.workspace.textDocuments.forEach((document) => openTextDocuments.set(document.uri.toString(), document));\n let versionMismatch = false;\n if (workspaceEdit.documentChanges) {\n for (const change of workspaceEdit.documentChanges) {\n if (vscode_languageserver_protocol_1.TextDocumentEdit.is(change) && change.textDocument.version && change.textDocument.version >= 0) {\n const changeUri = this._p2c.asUri(change.textDocument.uri).toString();\n const textDocument = openTextDocuments.get(changeUri);\n if (textDocument && textDocument.version !== change.textDocument.version) {\n versionMismatch = true;\n break;\n }\n }\n }\n }\n if (versionMismatch) {\n return Promise.resolve({ applied: false });\n }\n return Is.asPromise(vscode_1.workspace.applyEdit(converted).then((value) => { return { applied: value }; }));\n }\n handleFailedRequest(type, token, error, defaultValue, showNotification = true) {\n // If we get a request cancel or a content modified don't log anything.\n if (error instanceof vscode_languageserver_protocol_1.ResponseError) {\n // The connection got disposed while we were waiting for a response.\n // Simply return the default value. Is the best we can do.\n if (error.code === vscode_languageserver_protocol_1.ErrorCodes.PendingResponseRejected || error.code === vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive) {\n return defaultValue;\n }\n if (error.code === vscode_languageserver_protocol_1.LSPErrorCodes.RequestCancelled || error.code === vscode_languageserver_protocol_1.LSPErrorCodes.ServerCancelled) {\n if (token !== undefined && token.isCancellationRequested) {\n return defaultValue;\n }\n else {\n if (error.data !== undefined) {\n throw new features_1.LSPCancellationError(error.data);\n }\n else {\n throw new vscode_1.CancellationError();\n }\n }\n }\n else if (error.code === vscode_languageserver_protocol_1.LSPErrorCodes.ContentModified) {\n if (BaseLanguageClient.RequestsToCancelOnContentModified.has(type.method) || BaseLanguageClient.CancellableResolveCalls.has(type.method)) {\n throw new vscode_1.CancellationError();\n }\n else {\n return defaultValue;\n }\n }\n }\n this.error(`Request ${type.method} failed.`, error, showNotification);\n throw error;\n }\n}\nexports.BaseLanguageClient = BaseLanguageClient;\nBaseLanguageClient.RequestsToCancelOnContentModified = new Set([\n vscode_languageserver_protocol_1.SemanticTokensRequest.method,\n vscode_languageserver_protocol_1.SemanticTokensRangeRequest.method,\n vscode_languageserver_protocol_1.SemanticTokensDeltaRequest.method\n]);\nBaseLanguageClient.CancellableResolveCalls = new Set([\n vscode_languageserver_protocol_1.CompletionResolveRequest.method,\n vscode_languageserver_protocol_1.CodeLensResolveRequest.method,\n vscode_languageserver_protocol_1.CodeActionResolveRequest.method,\n vscode_languageserver_protocol_1.InlayHintResolveRequest.method,\n vscode_languageserver_protocol_1.DocumentLinkResolveRequest.method,\n vscode_languageserver_protocol_1.WorkspaceSymbolResolveRequest.method\n]);\nclass ConsoleLogger {\n error(message) {\n (0, vscode_languageserver_protocol_1.RAL)().console.error(message);\n }\n warn(message) {\n (0, vscode_languageserver_protocol_1.RAL)().console.warn(message);\n }\n info(message) {\n (0, vscode_languageserver_protocol_1.RAL)().console.info(message);\n }\n log(message) {\n (0, vscode_languageserver_protocol_1.RAL)().console.log(message);\n }\n}\nfunction createConnection(input, output, errorHandler, closeHandler, options) {\n const logger = new ConsoleLogger();\n const connection = (0, vscode_languageserver_protocol_1.createProtocolConnection)(input, output, logger, options);\n connection.onError((data) => { errorHandler(data[0], data[1], data[2]); });\n connection.onClose(closeHandler);\n const result = {\n listen: () => connection.listen(),\n sendRequest: connection.sendRequest,\n onRequest: connection.onRequest,\n hasPendingResponse: connection.hasPendingResponse,\n sendNotification: connection.sendNotification,\n onNotification: connection.onNotification,\n onProgress: connection.onProgress,\n sendProgress: connection.sendProgress,\n trace: (value, tracer, sendNotificationOrTraceOptions) => {\n const defaultTraceOptions = {\n sendNotification: false,\n traceFormat: vscode_languageserver_protocol_1.TraceFormat.Text\n };\n if (sendNotificationOrTraceOptions === undefined) {\n return connection.trace(value, tracer, defaultTraceOptions);\n }\n else if (Is.boolean(sendNotificationOrTraceOptions)) {\n return connection.trace(value, tracer, sendNotificationOrTraceOptions);\n }\n else {\n return connection.trace(value, tracer, sendNotificationOrTraceOptions);\n }\n },\n initialize: (params) => {\n // This needs to return and MUST not be await to avoid any async\n // scheduling. Otherwise messages might overtake each other.\n return connection.sendRequest(vscode_languageserver_protocol_1.InitializeRequest.type, params);\n },\n shutdown: () => {\n // This needs to return and MUST not be await to avoid any async\n // scheduling. Otherwise messages might overtake each other.\n return connection.sendRequest(vscode_languageserver_protocol_1.ShutdownRequest.type, undefined);\n },\n exit: () => {\n // This needs to return and MUST not be await to avoid any async\n // scheduling. Otherwise messages might overtake each other.\n return connection.sendNotification(vscode_languageserver_protocol_1.ExitNotification.type);\n },\n end: () => connection.end(),\n dispose: () => connection.dispose()\n };\n return result;\n}\n// Exporting proposed protocol.\nvar ProposedFeatures;\n(function (ProposedFeatures) {\n function createAll(_client) {\n let result = [];\n return result;\n }\n ProposedFeatures.createAll = createAll;\n})(ProposedFeatures = exports.ProposedFeatures || (exports.ProposedFeatures = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeActionFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nclass CodeActionFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.CodeActionRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const cap = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'codeAction');\n cap.dynamicRegistration = true;\n cap.isPreferredSupport = true;\n cap.disabledSupport = true;\n cap.dataSupport = true;\n // We can only resolve the edit property.\n cap.resolveSupport = {\n properties: ['edit']\n };\n cap.codeActionLiteralSupport = {\n codeActionKind: {\n valueSet: [\n vscode_languageserver_protocol_1.CodeActionKind.Empty,\n vscode_languageserver_protocol_1.CodeActionKind.QuickFix,\n vscode_languageserver_protocol_1.CodeActionKind.Refactor,\n vscode_languageserver_protocol_1.CodeActionKind.RefactorExtract,\n vscode_languageserver_protocol_1.CodeActionKind.RefactorInline,\n vscode_languageserver_protocol_1.CodeActionKind.RefactorRewrite,\n vscode_languageserver_protocol_1.CodeActionKind.Source,\n vscode_languageserver_protocol_1.CodeActionKind.SourceOrganizeImports\n ]\n }\n };\n cap.honorsChangeAnnotations = false;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.codeActionProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideCodeActions: (document, range, context, token) => {\n const client = this._client;\n const _provideCodeActions = async (document, range, context, token) => {\n const params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n range: client.code2ProtocolConverter.asRange(range),\n context: await client.code2ProtocolConverter.asCodeActionContext(context, token)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, params, token).then((values) => {\n if (token.isCancellationRequested || values === null || values === undefined) {\n return null;\n }\n return client.protocol2CodeConverter.asCodeActionResult(values, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideCodeActions\n ? middleware.provideCodeActions(document, range, context, token, _provideCodeActions)\n : _provideCodeActions(document, range, context, token);\n },\n resolveCodeAction: options.resolveProvider\n ? (item, token) => {\n const client = this._client;\n const middleware = this._client.middleware;\n const resolveCodeAction = async (item, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.CodeActionResolveRequest.type, await client.code2ProtocolConverter.asCodeAction(item, token), token).then((result) => {\n if (token.isCancellationRequested) {\n return item;\n }\n return client.protocol2CodeConverter.asCodeAction(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeActionResolveRequest.type, token, error, item);\n });\n };\n return middleware.resolveCodeAction\n ? middleware.resolveCodeAction(item, token, resolveCodeAction)\n : resolveCodeAction(item, token);\n }\n : undefined\n };\n return [vscode_1.languages.registerCodeActionsProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, (options.codeActionKinds\n ? { providedCodeActionKinds: this._client.protocol2CodeConverter.asCodeActionKinds(options.codeActionKinds) }\n : undefined)), provider];\n }\n}\nexports.CodeActionFeature = CodeActionFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConverter = void 0;\nconst code = require(\"vscode\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst async = require(\"./utils/async\");\nconst protocolCompletionItem_1 = require(\"./protocolCompletionItem\");\nconst protocolCodeLens_1 = require(\"./protocolCodeLens\");\nconst protocolDocumentLink_1 = require(\"./protocolDocumentLink\");\nconst protocolCodeAction_1 = require(\"./protocolCodeAction\");\nconst protocolDiagnostic_1 = require(\"./protocolDiagnostic\");\nconst protocolCallHierarchyItem_1 = require(\"./protocolCallHierarchyItem\");\nconst protocolTypeHierarchyItem_1 = require(\"./protocolTypeHierarchyItem\");\nconst protocolWorkspaceSymbol_1 = require(\"./protocolWorkspaceSymbol\");\nconst protocolInlayHint_1 = require(\"./protocolInlayHint\");\nvar InsertReplaceRange;\n(function (InsertReplaceRange) {\n function is(value) {\n const candidate = value;\n return candidate && !!candidate.inserting && !!candidate.replacing;\n }\n InsertReplaceRange.is = is;\n})(InsertReplaceRange || (InsertReplaceRange = {}));\nfunction createConverter(uriConverter) {\n const nullConverter = (value) => value.toString();\n const _uriConverter = uriConverter || nullConverter;\n function asUri(value) {\n return _uriConverter(value);\n }\n function asTextDocumentIdentifier(textDocument) {\n return {\n uri: _uriConverter(textDocument.uri)\n };\n }\n function asTextDocumentItem(textDocument) {\n return {\n uri: _uriConverter(textDocument.uri),\n languageId: textDocument.languageId,\n version: textDocument.version,\n text: textDocument.getText()\n };\n }\n function asVersionedTextDocumentIdentifier(textDocument) {\n return {\n uri: _uriConverter(textDocument.uri),\n version: textDocument.version\n };\n }\n function asOpenTextDocumentParams(textDocument) {\n return {\n textDocument: asTextDocumentItem(textDocument)\n };\n }\n function isTextDocumentChangeEvent(value) {\n const candidate = value;\n return !!candidate.document && !!candidate.contentChanges;\n }\n function isTextDocument(value) {\n const candidate = value;\n return !!candidate.uri && !!candidate.version;\n }\n function asChangeTextDocumentParams(arg0, arg1, arg2) {\n if (isTextDocument(arg0)) {\n const result = {\n textDocument: {\n uri: _uriConverter(arg0.uri),\n version: arg0.version\n },\n contentChanges: [{ text: arg0.getText() }]\n };\n return result;\n }\n else if (isTextDocumentChangeEvent(arg0)) {\n const uri = arg1;\n const version = arg2;\n const result = {\n textDocument: {\n uri: _uriConverter(uri),\n version: version\n },\n contentChanges: arg0.contentChanges.map((change) => {\n const range = change.range;\n return {\n range: {\n start: { line: range.start.line, character: range.start.character },\n end: { line: range.end.line, character: range.end.character }\n },\n rangeLength: change.rangeLength,\n text: change.text\n };\n })\n };\n return result;\n }\n else {\n throw Error('Unsupported text document change parameter');\n }\n }\n function asCloseTextDocumentParams(textDocument) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument)\n };\n }\n function asSaveTextDocumentParams(textDocument, includeContent = false) {\n let result = {\n textDocument: asTextDocumentIdentifier(textDocument)\n };\n if (includeContent) {\n result.text = textDocument.getText();\n }\n return result;\n }\n function asTextDocumentSaveReason(reason) {\n switch (reason) {\n case code.TextDocumentSaveReason.Manual:\n return proto.TextDocumentSaveReason.Manual;\n case code.TextDocumentSaveReason.AfterDelay:\n return proto.TextDocumentSaveReason.AfterDelay;\n case code.TextDocumentSaveReason.FocusOut:\n return proto.TextDocumentSaveReason.FocusOut;\n }\n return proto.TextDocumentSaveReason.Manual;\n }\n function asWillSaveTextDocumentParams(event) {\n return {\n textDocument: asTextDocumentIdentifier(event.document),\n reason: asTextDocumentSaveReason(event.reason)\n };\n }\n function asDidCreateFilesParams(event) {\n return {\n files: event.files.map((fileUri) => ({\n uri: _uriConverter(fileUri),\n })),\n };\n }\n function asDidRenameFilesParams(event) {\n return {\n files: event.files.map((file) => ({\n oldUri: _uriConverter(file.oldUri),\n newUri: _uriConverter(file.newUri),\n })),\n };\n }\n function asDidDeleteFilesParams(event) {\n return {\n files: event.files.map((fileUri) => ({\n uri: _uriConverter(fileUri),\n })),\n };\n }\n function asWillCreateFilesParams(event) {\n return {\n files: event.files.map((fileUri) => ({\n uri: _uriConverter(fileUri),\n })),\n };\n }\n function asWillRenameFilesParams(event) {\n return {\n files: event.files.map((file) => ({\n oldUri: _uriConverter(file.oldUri),\n newUri: _uriConverter(file.newUri),\n })),\n };\n }\n function asWillDeleteFilesParams(event) {\n return {\n files: event.files.map((fileUri) => ({\n uri: _uriConverter(fileUri),\n })),\n };\n }\n function asTextDocumentPositionParams(textDocument, position) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument),\n position: asWorkerPosition(position)\n };\n }\n function asCompletionTriggerKind(triggerKind) {\n switch (triggerKind) {\n case code.CompletionTriggerKind.TriggerCharacter:\n return proto.CompletionTriggerKind.TriggerCharacter;\n case code.CompletionTriggerKind.TriggerForIncompleteCompletions:\n return proto.CompletionTriggerKind.TriggerForIncompleteCompletions;\n default:\n return proto.CompletionTriggerKind.Invoked;\n }\n }\n function asCompletionParams(textDocument, position, context) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument),\n position: asWorkerPosition(position),\n context: {\n triggerKind: asCompletionTriggerKind(context.triggerKind),\n triggerCharacter: context.triggerCharacter\n }\n };\n }\n function asSignatureHelpTriggerKind(triggerKind) {\n switch (triggerKind) {\n case code.SignatureHelpTriggerKind.Invoke:\n return proto.SignatureHelpTriggerKind.Invoked;\n case code.SignatureHelpTriggerKind.TriggerCharacter:\n return proto.SignatureHelpTriggerKind.TriggerCharacter;\n case code.SignatureHelpTriggerKind.ContentChange:\n return proto.SignatureHelpTriggerKind.ContentChange;\n }\n }\n function asParameterInformation(value) {\n // We leave the documentation out on purpose since it usually adds no\n // value for the server.\n return {\n label: value.label\n };\n }\n function asParameterInformations(values) {\n return values.map(asParameterInformation);\n }\n function asSignatureInformation(value) {\n // We leave the documentation out on purpose since it usually adds no\n // value for the server.\n return {\n label: value.label,\n parameters: asParameterInformations(value.parameters)\n };\n }\n function asSignatureInformations(values) {\n return values.map(asSignatureInformation);\n }\n function asSignatureHelp(value) {\n if (value === undefined) {\n return value;\n }\n return {\n signatures: asSignatureInformations(value.signatures),\n activeSignature: value.activeSignature,\n activeParameter: value.activeParameter\n };\n }\n function asSignatureHelpParams(textDocument, position, context) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument),\n position: asWorkerPosition(position),\n context: {\n isRetrigger: context.isRetrigger,\n triggerCharacter: context.triggerCharacter,\n triggerKind: asSignatureHelpTriggerKind(context.triggerKind),\n activeSignatureHelp: asSignatureHelp(context.activeSignatureHelp)\n }\n };\n }\n function asWorkerPosition(position) {\n return { line: position.line, character: position.character };\n }\n function asPosition(value) {\n if (value === undefined || value === null) {\n return value;\n }\n return { line: value.line > proto.uinteger.MAX_VALUE ? proto.uinteger.MAX_VALUE : value.line, character: value.character > proto.uinteger.MAX_VALUE ? proto.uinteger.MAX_VALUE : value.character };\n }\n function asPositions(value, token) {\n return async.map(value, asPosition, token);\n }\n function asRange(value) {\n if (value === undefined || value === null) {\n return value;\n }\n return { start: asPosition(value.start), end: asPosition(value.end) };\n }\n function asLocation(value) {\n if (value === undefined || value === null) {\n return value;\n }\n return proto.Location.create(asUri(value.uri), asRange(value.range));\n }\n function asDiagnosticSeverity(value) {\n switch (value) {\n case code.DiagnosticSeverity.Error:\n return proto.DiagnosticSeverity.Error;\n case code.DiagnosticSeverity.Warning:\n return proto.DiagnosticSeverity.Warning;\n case code.DiagnosticSeverity.Information:\n return proto.DiagnosticSeverity.Information;\n case code.DiagnosticSeverity.Hint:\n return proto.DiagnosticSeverity.Hint;\n }\n }\n function asDiagnosticTags(tags) {\n if (!tags) {\n return undefined;\n }\n let result = [];\n for (let tag of tags) {\n let converted = asDiagnosticTag(tag);\n if (converted !== undefined) {\n result.push(converted);\n }\n }\n return result.length > 0 ? result : undefined;\n }\n function asDiagnosticTag(tag) {\n switch (tag) {\n case code.DiagnosticTag.Unnecessary:\n return proto.DiagnosticTag.Unnecessary;\n case code.DiagnosticTag.Deprecated:\n return proto.DiagnosticTag.Deprecated;\n default:\n return undefined;\n }\n }\n function asRelatedInformation(item) {\n return {\n message: item.message,\n location: asLocation(item.location)\n };\n }\n function asRelatedInformations(items) {\n return items.map(asRelatedInformation);\n }\n function asDiagnosticCode(value) {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (Is.number(value) || Is.string(value)) {\n return value;\n }\n return { value: value.value, target: asUri(value.target) };\n }\n function asDiagnostic(item) {\n const result = proto.Diagnostic.create(asRange(item.range), item.message);\n const protocolDiagnostic = item instanceof protocolDiagnostic_1.ProtocolDiagnostic ? item : undefined;\n if (protocolDiagnostic !== undefined && protocolDiagnostic.data !== undefined) {\n result.data = protocolDiagnostic.data;\n }\n const code = asDiagnosticCode(item.code);\n if (protocolDiagnostic_1.DiagnosticCode.is(code)) {\n if (protocolDiagnostic !== undefined && protocolDiagnostic.hasDiagnosticCode) {\n result.code = code;\n }\n else {\n result.code = code.value;\n result.codeDescription = { href: code.target };\n }\n }\n else {\n result.code = code;\n }\n if (Is.number(item.severity)) {\n result.severity = asDiagnosticSeverity(item.severity);\n }\n if (Array.isArray(item.tags)) {\n result.tags = asDiagnosticTags(item.tags);\n }\n if (item.relatedInformation) {\n result.relatedInformation = asRelatedInformations(item.relatedInformation);\n }\n if (item.source) {\n result.source = item.source;\n }\n return result;\n }\n function asDiagnostics(items, token) {\n if (items === undefined || items === null) {\n return items;\n }\n return async.map(items, asDiagnostic, token);\n }\n function asDocumentation(format, documentation) {\n switch (format) {\n case '$string':\n return documentation;\n case proto.MarkupKind.PlainText:\n return { kind: format, value: documentation };\n case proto.MarkupKind.Markdown:\n return { kind: format, value: documentation.value };\n default:\n return `Unsupported Markup content received. Kind is: ${format}`;\n }\n }\n function asCompletionItemTag(tag) {\n switch (tag) {\n case code.CompletionItemTag.Deprecated:\n return proto.CompletionItemTag.Deprecated;\n }\n return undefined;\n }\n function asCompletionItemTags(tags) {\n if (tags === undefined) {\n return tags;\n }\n const result = [];\n for (let tag of tags) {\n const converted = asCompletionItemTag(tag);\n if (converted !== undefined) {\n result.push(converted);\n }\n }\n return result;\n }\n function asCompletionItemKind(value, original) {\n if (original !== undefined) {\n return original;\n }\n return value + 1;\n }\n function asCompletionItem(item, labelDetailsSupport = false) {\n let label;\n let labelDetails;\n if (Is.string(item.label)) {\n label = item.label;\n }\n else {\n label = item.label.label;\n if (labelDetailsSupport && (item.label.detail !== undefined || item.label.description !== undefined)) {\n labelDetails = { detail: item.label.detail, description: item.label.description };\n }\n }\n let result = { label: label };\n if (labelDetails !== undefined) {\n result.labelDetails = labelDetails;\n }\n let protocolItem = item instanceof protocolCompletionItem_1.default ? item : undefined;\n if (item.detail) {\n result.detail = item.detail;\n }\n // We only send items back we created. So this can't be something else than\n // a string right now.\n if (item.documentation) {\n if (!protocolItem || protocolItem.documentationFormat === '$string') {\n result.documentation = item.documentation;\n }\n else {\n result.documentation = asDocumentation(protocolItem.documentationFormat, item.documentation);\n }\n }\n if (item.filterText) {\n result.filterText = item.filterText;\n }\n fillPrimaryInsertText(result, item);\n if (Is.number(item.kind)) {\n result.kind = asCompletionItemKind(item.kind, protocolItem && protocolItem.originalItemKind);\n }\n if (item.sortText) {\n result.sortText = item.sortText;\n }\n if (item.additionalTextEdits) {\n result.additionalTextEdits = asTextEdits(item.additionalTextEdits);\n }\n if (item.commitCharacters) {\n result.commitCharacters = item.commitCharacters.slice();\n }\n if (item.command) {\n result.command = asCommand(item.command);\n }\n if (item.preselect === true || item.preselect === false) {\n result.preselect = item.preselect;\n }\n const tags = asCompletionItemTags(item.tags);\n if (protocolItem) {\n if (protocolItem.data !== undefined) {\n result.data = protocolItem.data;\n }\n if (protocolItem.deprecated === true || protocolItem.deprecated === false) {\n if (protocolItem.deprecated === true && tags !== undefined && tags.length > 0) {\n const index = tags.indexOf(code.CompletionItemTag.Deprecated);\n if (index !== -1) {\n tags.splice(index, 1);\n }\n }\n result.deprecated = protocolItem.deprecated;\n }\n if (protocolItem.insertTextMode !== undefined) {\n result.insertTextMode = protocolItem.insertTextMode;\n }\n }\n if (tags !== undefined && tags.length > 0) {\n result.tags = tags;\n }\n if (result.insertTextMode === undefined && item.keepWhitespace === true) {\n result.insertTextMode = proto.InsertTextMode.adjustIndentation;\n }\n return result;\n }\n function fillPrimaryInsertText(target, source) {\n let format = proto.InsertTextFormat.PlainText;\n let text = undefined;\n let range = undefined;\n if (source.textEdit) {\n text = source.textEdit.newText;\n range = source.textEdit.range;\n }\n else if (source.insertText instanceof code.SnippetString) {\n format = proto.InsertTextFormat.Snippet;\n text = source.insertText.value;\n }\n else {\n text = source.insertText;\n }\n if (source.range) {\n range = source.range;\n }\n target.insertTextFormat = format;\n if (source.fromEdit && text !== undefined && range !== undefined) {\n target.textEdit = asCompletionTextEdit(text, range);\n }\n else {\n target.insertText = text;\n }\n }\n function asCompletionTextEdit(newText, range) {\n if (InsertReplaceRange.is(range)) {\n return proto.InsertReplaceEdit.create(newText, asRange(range.inserting), asRange(range.replacing));\n }\n else {\n return { newText, range: asRange(range) };\n }\n }\n function asTextEdit(edit) {\n return { range: asRange(edit.range), newText: edit.newText };\n }\n function asTextEdits(edits) {\n if (edits === undefined || edits === null) {\n return edits;\n }\n return edits.map(asTextEdit);\n }\n function asSymbolKind(item) {\n if (item <= code.SymbolKind.TypeParameter) {\n // Symbol kind is one based in the protocol and zero based in code.\n return (item + 1);\n }\n return proto.SymbolKind.Property;\n }\n function asSymbolTag(item) {\n return item;\n }\n function asSymbolTags(items) {\n return items.map(asSymbolTag);\n }\n function asReferenceParams(textDocument, position, options) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument),\n position: asWorkerPosition(position),\n context: { includeDeclaration: options.includeDeclaration }\n };\n }\n async function asCodeAction(item, token) {\n let result = proto.CodeAction.create(item.title);\n if (item instanceof protocolCodeAction_1.default && item.data !== undefined) {\n result.data = item.data;\n }\n if (item.kind !== undefined) {\n result.kind = asCodeActionKind(item.kind);\n }\n if (item.diagnostics !== undefined) {\n result.diagnostics = await asDiagnostics(item.diagnostics, token);\n }\n if (item.edit !== undefined) {\n throw new Error(`VS Code code actions can only be converted to a protocol code action without an edit.`);\n }\n if (item.command !== undefined) {\n result.command = asCommand(item.command);\n }\n if (item.isPreferred !== undefined) {\n result.isPreferred = item.isPreferred;\n }\n if (item.disabled !== undefined) {\n result.disabled = { reason: item.disabled.reason };\n }\n return result;\n }\n async function asCodeActionContext(context, token) {\n if (context === undefined || context === null) {\n return context;\n }\n let only;\n if (context.only && Is.string(context.only.value)) {\n only = [context.only.value];\n }\n return proto.CodeActionContext.create(await asDiagnostics(context.diagnostics, token), only, asCodeActionTriggerKind(context.triggerKind));\n }\n function asCodeActionTriggerKind(kind) {\n switch (kind) {\n case code.CodeActionTriggerKind.Invoke:\n return proto.CodeActionTriggerKind.Invoked;\n case code.CodeActionTriggerKind.Automatic:\n return proto.CodeActionTriggerKind.Automatic;\n default:\n return undefined;\n }\n }\n function asCodeActionKind(item) {\n if (item === undefined || item === null) {\n return undefined;\n }\n return item.value;\n }\n function asInlineValueContext(context) {\n if (context === undefined || context === null) {\n return context;\n }\n return proto.InlineValueContext.create(context.frameId, asRange(context.stoppedLocation));\n }\n function asCommand(item) {\n let result = proto.Command.create(item.title, item.command);\n if (item.arguments) {\n result.arguments = item.arguments;\n }\n return result;\n }\n function asCodeLens(item) {\n let result = proto.CodeLens.create(asRange(item.range));\n if (item.command) {\n result.command = asCommand(item.command);\n }\n if (item instanceof protocolCodeLens_1.default) {\n if (item.data) {\n result.data = item.data;\n }\n }\n return result;\n }\n function asFormattingOptions(options, fileOptions) {\n const result = { tabSize: options.tabSize, insertSpaces: options.insertSpaces };\n if (fileOptions.trimTrailingWhitespace) {\n result.trimTrailingWhitespace = true;\n }\n if (fileOptions.trimFinalNewlines) {\n result.trimFinalNewlines = true;\n }\n if (fileOptions.insertFinalNewline) {\n result.insertFinalNewline = true;\n }\n return result;\n }\n function asDocumentSymbolParams(textDocument) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument)\n };\n }\n function asCodeLensParams(textDocument) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument)\n };\n }\n function asDocumentLink(item) {\n let result = proto.DocumentLink.create(asRange(item.range));\n if (item.target) {\n result.target = asUri(item.target);\n }\n if (item.tooltip !== undefined) {\n result.tooltip = item.tooltip;\n }\n let protocolItem = item instanceof protocolDocumentLink_1.default ? item : undefined;\n if (protocolItem && protocolItem.data) {\n result.data = protocolItem.data;\n }\n return result;\n }\n function asDocumentLinkParams(textDocument) {\n return {\n textDocument: asTextDocumentIdentifier(textDocument)\n };\n }\n function asCallHierarchyItem(value) {\n const result = {\n name: value.name,\n kind: asSymbolKind(value.kind),\n uri: asUri(value.uri),\n range: asRange(value.range),\n selectionRange: asRange(value.selectionRange)\n };\n if (value.detail !== undefined && value.detail.length > 0) {\n result.detail = value.detail;\n }\n if (value.tags !== undefined) {\n result.tags = asSymbolTags(value.tags);\n }\n if (value instanceof protocolCallHierarchyItem_1.default && value.data !== undefined) {\n result.data = value.data;\n }\n return result;\n }\n function asTypeHierarchyItem(value) {\n const result = {\n name: value.name,\n kind: asSymbolKind(value.kind),\n uri: asUri(value.uri),\n range: asRange(value.range),\n selectionRange: asRange(value.selectionRange),\n };\n if (value.detail !== undefined && value.detail.length > 0) {\n result.detail = value.detail;\n }\n if (value.tags !== undefined) {\n result.tags = asSymbolTags(value.tags);\n }\n if (value instanceof protocolTypeHierarchyItem_1.default && value.data !== undefined) {\n result.data = value.data;\n }\n return result;\n }\n function asWorkspaceSymbol(item) {\n const result = item instanceof protocolWorkspaceSymbol_1.default\n ? { name: item.name, kind: asSymbolKind(item.kind), location: item.hasRange ? asLocation(item.location) : { uri: _uriConverter(item.location.uri) }, data: item.data }\n : { name: item.name, kind: asSymbolKind(item.kind), location: asLocation(item.location) };\n if (item.tags !== undefined) {\n result.tags = asSymbolTags(item.tags);\n }\n if (item.containerName !== '') {\n result.containerName = item.containerName;\n }\n return result;\n }\n function asInlayHint(item) {\n const label = typeof item.label === 'string'\n ? item.label\n : item.label.map(asInlayHintLabelPart);\n const result = proto.InlayHint.create(asPosition(item.position), label);\n if (item.kind !== undefined) {\n result.kind = item.kind;\n }\n if (item.textEdits !== undefined) {\n result.textEdits = asTextEdits(item.textEdits);\n }\n if (item.tooltip !== undefined) {\n result.tooltip = asTooltip(item.tooltip);\n }\n if (item.paddingLeft !== undefined) {\n result.paddingLeft = item.paddingLeft;\n }\n if (item.paddingRight !== undefined) {\n result.paddingRight = item.paddingRight;\n }\n if (item instanceof protocolInlayHint_1.default && item.data !== undefined) {\n result.data = item.data;\n }\n return result;\n }\n function asInlayHintLabelPart(item) {\n const result = proto.InlayHintLabelPart.create(item.value);\n if (item.location !== undefined) {\n result.location = asLocation(item.location);\n }\n if (item.command !== undefined) {\n result.command = asCommand(item.command);\n }\n if (item.tooltip !== undefined) {\n result.tooltip = asTooltip(item.tooltip);\n }\n return result;\n }\n function asTooltip(value) {\n if (typeof value === 'string') {\n return value;\n }\n const result = {\n kind: proto.MarkupKind.Markdown,\n value: value.value\n };\n return result;\n }\n return {\n asUri,\n asTextDocumentIdentifier,\n asTextDocumentItem,\n asVersionedTextDocumentIdentifier,\n asOpenTextDocumentParams,\n asChangeTextDocumentParams,\n asCloseTextDocumentParams,\n asSaveTextDocumentParams,\n asWillSaveTextDocumentParams,\n asDidCreateFilesParams,\n asDidRenameFilesParams,\n asDidDeleteFilesParams,\n asWillCreateFilesParams,\n asWillRenameFilesParams,\n asWillDeleteFilesParams,\n asTextDocumentPositionParams,\n asCompletionParams,\n asSignatureHelpParams,\n asWorkerPosition,\n asRange,\n asPosition,\n asPositions,\n asLocation,\n asDiagnosticSeverity,\n asDiagnosticTag,\n asDiagnostic,\n asDiagnostics,\n asCompletionItem,\n asTextEdit,\n asSymbolKind,\n asSymbolTag,\n asSymbolTags,\n asReferenceParams,\n asCodeAction,\n asCodeActionContext,\n asInlineValueContext,\n asCommand,\n asCodeLens,\n asFormattingOptions,\n asDocumentSymbolParams,\n asCodeLensParams,\n asDocumentLink,\n asDocumentLinkParams,\n asCallHierarchyItem,\n asTypeHierarchyItem,\n asInlayHint,\n asWorkspaceSymbol\n };\n}\nexports.createConverter = createConverter;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeLensFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nclass CodeLensFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.CodeLensRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'codeLens').dynamicRegistration = true;\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'codeLens').refreshSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.CodeLensRefreshRequest.type, async () => {\n for (const provider of this.getAllProviders()) {\n provider.onDidChangeCodeLensEmitter.fire();\n }\n });\n const options = this.getRegistrationOptions(documentSelector, capabilities.codeLensProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const eventEmitter = new vscode_1.EventEmitter();\n const provider = {\n onDidChangeCodeLenses: eventEmitter.event,\n provideCodeLenses: (document, token) => {\n const client = this._client;\n const provideCodeLenses = (document, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, client.code2ProtocolConverter.asCodeLensParams(document), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asCodeLenses(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideCodeLenses\n ? middleware.provideCodeLenses(document, token, provideCodeLenses)\n : provideCodeLenses(document, token);\n },\n resolveCodeLens: (options.resolveProvider)\n ? (codeLens, token) => {\n const client = this._client;\n const resolveCodeLens = (codeLens, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, client.code2ProtocolConverter.asCodeLens(codeLens), token).then((result) => {\n if (token.isCancellationRequested) {\n return codeLens;\n }\n return client.protocol2CodeConverter.asCodeLens(result);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, token, error, codeLens);\n });\n };\n const middleware = client.middleware;\n return middleware.resolveCodeLens\n ? middleware.resolveCodeLens(codeLens, token, resolveCodeLens)\n : resolveCodeLens(codeLens, token);\n }\n : undefined\n };\n return [vscode_1.languages.registerCodeLensProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), { provider, onDidChangeCodeLensEmitter: eventEmitter }];\n }\n}\nexports.CodeLensFeature = CodeLensFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorProviderFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass ColorProviderFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentColorRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'colorProvider').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n let [id, options] = this.getRegistration(documentSelector, capabilities.colorProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideColorPresentations: (color, context, token) => {\n const client = this._client;\n const provideColorPresentations = (color, context, token) => {\n const requestParams = {\n color,\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(context.document),\n range: client.code2ProtocolConverter.asRange(context.range)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, requestParams, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return this._client.protocol2CodeConverter.asColorPresentations(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideColorPresentations\n ? middleware.provideColorPresentations(color, context, token, provideColorPresentations)\n : provideColorPresentations(color, context, token);\n },\n provideDocumentColors: (document, token) => {\n const client = this._client;\n const provideDocumentColors = (document, token) => {\n const requestParams = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentColorRequest.type, requestParams, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return this._client.protocol2CodeConverter.asColorInformations(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentColorRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDocumentColors\n ? middleware.provideDocumentColors(document, token, provideDocumentColors)\n : provideDocumentColors(document, token);\n }\n };\n return [vscode_1.languages.registerColorProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n }\n}\nexports.ColorProviderFeature = ColorProviderFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompletionItemFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nconst SupportedCompletionItemKinds = [\n vscode_languageserver_protocol_1.CompletionItemKind.Text,\n vscode_languageserver_protocol_1.CompletionItemKind.Method,\n vscode_languageserver_protocol_1.CompletionItemKind.Function,\n vscode_languageserver_protocol_1.CompletionItemKind.Constructor,\n vscode_languageserver_protocol_1.CompletionItemKind.Field,\n vscode_languageserver_protocol_1.CompletionItemKind.Variable,\n vscode_languageserver_protocol_1.CompletionItemKind.Class,\n vscode_languageserver_protocol_1.CompletionItemKind.Interface,\n vscode_languageserver_protocol_1.CompletionItemKind.Module,\n vscode_languageserver_protocol_1.CompletionItemKind.Property,\n vscode_languageserver_protocol_1.CompletionItemKind.Unit,\n vscode_languageserver_protocol_1.CompletionItemKind.Value,\n vscode_languageserver_protocol_1.CompletionItemKind.Enum,\n vscode_languageserver_protocol_1.CompletionItemKind.Keyword,\n vscode_languageserver_protocol_1.CompletionItemKind.Snippet,\n vscode_languageserver_protocol_1.CompletionItemKind.Color,\n vscode_languageserver_protocol_1.CompletionItemKind.File,\n vscode_languageserver_protocol_1.CompletionItemKind.Reference,\n vscode_languageserver_protocol_1.CompletionItemKind.Folder,\n vscode_languageserver_protocol_1.CompletionItemKind.EnumMember,\n vscode_languageserver_protocol_1.CompletionItemKind.Constant,\n vscode_languageserver_protocol_1.CompletionItemKind.Struct,\n vscode_languageserver_protocol_1.CompletionItemKind.Event,\n vscode_languageserver_protocol_1.CompletionItemKind.Operator,\n vscode_languageserver_protocol_1.CompletionItemKind.TypeParameter\n];\nclass CompletionItemFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.CompletionRequest.type);\n this.labelDetailsSupport = new Map();\n }\n fillClientCapabilities(capabilities) {\n let completion = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'completion');\n completion.dynamicRegistration = true;\n completion.contextSupport = true;\n completion.completionItem = {\n snippetSupport: true,\n commitCharactersSupport: true,\n documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText],\n deprecatedSupport: true,\n preselectSupport: true,\n tagSupport: { valueSet: [vscode_languageserver_protocol_1.CompletionItemTag.Deprecated] },\n insertReplaceSupport: true,\n resolveSupport: {\n properties: ['documentation', 'detail', 'additionalTextEdits']\n },\n insertTextModeSupport: { valueSet: [vscode_languageserver_protocol_1.InsertTextMode.asIs, vscode_languageserver_protocol_1.InsertTextMode.adjustIndentation] },\n labelDetailsSupport: true\n };\n completion.insertTextMode = vscode_languageserver_protocol_1.InsertTextMode.adjustIndentation;\n completion.completionItemKind = { valueSet: SupportedCompletionItemKinds };\n completion.completionList = {\n itemDefaults: [\n 'commitCharacters', 'editRange', 'insertTextFormat', 'insertTextMode'\n ]\n };\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.completionProvider);\n if (!options) {\n return;\n }\n this.register({\n id: UUID.generateUuid(),\n registerOptions: options\n });\n }\n registerLanguageProvider(options, id) {\n this.labelDetailsSupport.set(id, !!options.completionItem?.labelDetailsSupport);\n const triggerCharacters = options.triggerCharacters ?? [];\n const defaultCommitCharacters = options.allCommitCharacters;\n const selector = options.documentSelector;\n const provider = {\n provideCompletionItems: (document, position, token, context) => {\n const client = this._client;\n const middleware = this._client.middleware;\n const provideCompletionItems = (document, position, context, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.CompletionRequest.type, client.code2ProtocolConverter.asCompletionParams(document, position, context), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asCompletionResult(result, defaultCommitCharacters, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CompletionRequest.type, token, error, null);\n });\n };\n return middleware.provideCompletionItem\n ? middleware.provideCompletionItem(document, position, context, token, provideCompletionItems)\n : provideCompletionItems(document, position, context, token);\n },\n resolveCompletionItem: options.resolveProvider\n ? (item, token) => {\n const client = this._client;\n const middleware = this._client.middleware;\n const resolveCompletionItem = (item, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, client.code2ProtocolConverter.asCompletionItem(item, !!this.labelDetailsSupport.get(id)), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asCompletionItem(result);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, token, error, item);\n });\n };\n return middleware.resolveCompletionItem\n ? middleware.resolveCompletionItem(item, token, resolveCompletionItem)\n : resolveCompletionItem(item, token);\n }\n : undefined\n };\n return [vscode_1.languages.registerCompletionItemProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, ...triggerCharacters), provider];\n }\n}\nexports.CompletionItemFeature = CompletionItemFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncConfigurationFeature = exports.toJSONObject = exports.ConfigurationFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\n/**\n * Configuration pull model. From server to client.\n */\nclass ConfigurationFeature {\n constructor(client) {\n this._client = client;\n }\n getState() {\n return { kind: 'static' };\n }\n fillClientCapabilities(capabilities) {\n capabilities.workspace = capabilities.workspace || {};\n capabilities.workspace.configuration = true;\n }\n initialize() {\n let client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.ConfigurationRequest.type, (params, token) => {\n let configuration = (params) => {\n let result = [];\n for (let item of params.items) {\n let resource = item.scopeUri !== void 0 && item.scopeUri !== null ? this._client.protocol2CodeConverter.asUri(item.scopeUri) : undefined;\n result.push(this.getConfiguration(resource, item.section !== null ? item.section : undefined));\n }\n return result;\n };\n let middleware = client.middleware.workspace;\n return middleware && middleware.configuration\n ? middleware.configuration(params, token, configuration)\n : configuration(params, token);\n });\n }\n getConfiguration(resource, section) {\n let result = null;\n if (section) {\n let index = section.lastIndexOf('.');\n if (index === -1) {\n result = toJSONObject(vscode_1.workspace.getConfiguration(undefined, resource).get(section));\n }\n else {\n let config = vscode_1.workspace.getConfiguration(section.substr(0, index), resource);\n if (config) {\n result = toJSONObject(config.get(section.substr(index + 1)));\n }\n }\n }\n else {\n let config = vscode_1.workspace.getConfiguration(undefined, resource);\n result = {};\n for (let key of Object.keys(config)) {\n if (config.has(key)) {\n result[key] = toJSONObject(config.get(key));\n }\n }\n }\n if (result === undefined) {\n result = null;\n }\n return result;\n }\n dispose() {\n }\n}\nexports.ConfigurationFeature = ConfigurationFeature;\nfunction toJSONObject(obj) {\n if (obj) {\n if (Array.isArray(obj)) {\n return obj.map(toJSONObject);\n }\n else if (typeof obj === 'object') {\n const res = Object.create(null);\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = toJSONObject(obj[key]);\n }\n }\n return res;\n }\n }\n return obj;\n}\nexports.toJSONObject = toJSONObject;\nclass SyncConfigurationFeature {\n constructor(_client) {\n this._client = _client;\n this.isDisposed = false;\n this._listeners = new Map();\n }\n getState() {\n return { kind: 'workspace', id: this.registrationType.method, registrations: this._listeners.size > 0 };\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type;\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'didChangeConfiguration').dynamicRegistration = true;\n }\n initialize() {\n let section = this._client.clientOptions.synchronize?.configurationSection;\n if (section !== undefined) {\n this.register({\n id: UUID.generateUuid(),\n registerOptions: {\n section: section\n }\n });\n }\n }\n register(data) {\n let disposable = vscode_1.workspace.onDidChangeConfiguration((event) => {\n this.onDidChangeConfiguration(data.registerOptions.section, event);\n });\n this._listeners.set(data.id, disposable);\n if (data.registerOptions.section !== undefined) {\n this.onDidChangeConfiguration(data.registerOptions.section, undefined);\n }\n }\n unregister(id) {\n let disposable = this._listeners.get(id);\n if (disposable) {\n this._listeners.delete(id);\n disposable.dispose();\n }\n }\n dispose() {\n for (const disposable of this._listeners.values()) {\n disposable.dispose();\n }\n this._listeners.clear();\n this.isDisposed = true;\n }\n onDidChangeConfiguration(configurationSection, event) {\n if (this.isDisposed) {\n return;\n }\n let sections;\n if (Is.string(configurationSection)) {\n sections = [configurationSection];\n }\n else {\n sections = configurationSection;\n }\n if (sections !== undefined && event !== undefined) {\n let affected = sections.some((section) => event.affectsConfiguration(section));\n if (!affected) {\n return;\n }\n }\n const didChangeConfiguration = async (sections) => {\n if (sections === undefined) {\n return this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: null });\n }\n else {\n return this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: this.extractSettingsInformation(sections) });\n }\n };\n let middleware = this._client.middleware.workspace?.didChangeConfiguration;\n (middleware ? middleware(sections, didChangeConfiguration) : didChangeConfiguration(sections)).catch((error) => {\n this._client.error(`Sending notification ${vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type.method} failed`, error);\n });\n }\n extractSettingsInformation(keys) {\n function ensurePath(config, path) {\n let current = config;\n for (let i = 0; i < path.length - 1; i++) {\n let obj = current[path[i]];\n if (!obj) {\n obj = Object.create(null);\n current[path[i]] = obj;\n }\n current = obj;\n }\n return current;\n }\n let resource = this._client.clientOptions.workspaceFolder\n ? this._client.clientOptions.workspaceFolder.uri\n : undefined;\n let result = Object.create(null);\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let index = key.indexOf('.');\n let config = null;\n if (index >= 0) {\n config = vscode_1.workspace.getConfiguration(key.substr(0, index), resource).get(key.substr(index + 1));\n }\n else {\n config = vscode_1.workspace.getConfiguration(undefined, resource).get(key);\n }\n if (config) {\n let path = keys[i].split('.');\n ensurePath(result, path)[path[path.length - 1]] = toJSONObject(config);\n }\n }\n return result;\n }\n}\nexports.SyncConfigurationFeature = SyncConfigurationFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeclarationFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass DeclarationFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DeclarationRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const declarationSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'declaration');\n declarationSupport.dynamicRegistration = true;\n declarationSupport.linkSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const [id, options] = this.getRegistration(documentSelector, capabilities.declarationProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDeclaration: (document, position, token) => {\n const client = this._client;\n const provideDeclaration = (document, position, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asDeclarationResult(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDeclaration\n ? middleware.provideDeclaration(document, position, token, provideDeclaration)\n : provideDeclaration(document, position, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerDeclarationProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.DeclarationFeature = DeclarationFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefinitionFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DefinitionFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DefinitionRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let definitionSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'definition');\n definitionSupport.dynamicRegistration = true;\n definitionSupport.linkSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.definitionProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDefinition: (document, position, token) => {\n const client = this._client;\n const provideDefinition = (document, position, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asDefinitionResult(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDefinition\n ? middleware.provideDefinition(document, position, token, provideDefinition)\n : provideDefinition(document, position, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.DefinitionFeature = DefinitionFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticFeature = exports.DiagnosticPullMode = exports.vsdiag = void 0;\nconst minimatch = require(\"minimatch\");\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst uuid_1 = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nfunction ensure(target, key) {\n if (target[key] === void 0) {\n target[key] = {};\n }\n return target[key];\n}\nvar vsdiag;\n(function (vsdiag) {\n let DocumentDiagnosticReportKind;\n (function (DocumentDiagnosticReportKind) {\n DocumentDiagnosticReportKind[\"full\"] = \"full\";\n DocumentDiagnosticReportKind[\"unChanged\"] = \"unChanged\";\n })(DocumentDiagnosticReportKind = vsdiag.DocumentDiagnosticReportKind || (vsdiag.DocumentDiagnosticReportKind = {}));\n})(vsdiag = exports.vsdiag || (exports.vsdiag = {}));\nvar DiagnosticPullMode;\n(function (DiagnosticPullMode) {\n DiagnosticPullMode[\"onType\"] = \"onType\";\n DiagnosticPullMode[\"onSave\"] = \"onSave\";\n})(DiagnosticPullMode = exports.DiagnosticPullMode || (exports.DiagnosticPullMode = {}));\nvar RequestStateKind;\n(function (RequestStateKind) {\n RequestStateKind[\"active\"] = \"open\";\n RequestStateKind[\"reschedule\"] = \"reschedule\";\n RequestStateKind[\"outDated\"] = \"drop\";\n})(RequestStateKind || (RequestStateKind = {}));\n/**\n * Manages the open tabs. We don't directly use the tab API since for\n * diagnostics we need to de-dupe tabs that show the same resources since\n * we pull on the model not the UI.\n */\nclass Tabs {\n constructor() {\n this.open = new Set();\n this._onOpen = new vscode_1.EventEmitter();\n this._onClose = new vscode_1.EventEmitter();\n Tabs.fillTabResources(this.open);\n const openTabsHandler = (event) => {\n if (event.closed.length === 0 && event.opened.length === 0) {\n return;\n }\n const oldTabs = this.open;\n const currentTabs = new Set();\n Tabs.fillTabResources(currentTabs);\n const closed = new Set();\n const opened = new Set(currentTabs);\n for (const tab of oldTabs.values()) {\n if (currentTabs.has(tab)) {\n opened.delete(tab);\n }\n else {\n closed.add(tab);\n }\n }\n this.open = currentTabs;\n if (closed.size > 0) {\n const toFire = new Set();\n for (const item of closed) {\n toFire.add(vscode_1.Uri.parse(item));\n }\n this._onClose.fire(toFire);\n }\n if (opened.size > 0) {\n const toFire = new Set();\n for (const item of opened) {\n toFire.add(vscode_1.Uri.parse(item));\n }\n this._onOpen.fire(toFire);\n }\n };\n if (vscode_1.window.tabGroups.onDidChangeTabs !== undefined) {\n this.disposable = vscode_1.window.tabGroups.onDidChangeTabs(openTabsHandler);\n }\n else {\n this.disposable = { dispose: () => { } };\n }\n }\n get onClose() {\n return this._onClose.event;\n }\n get onOpen() {\n return this._onOpen.event;\n }\n dispose() {\n this.disposable.dispose();\n }\n isActive(document) {\n return document instanceof vscode_1.Uri\n ? vscode_1.window.activeTextEditor?.document.uri === document\n : vscode_1.window.activeTextEditor?.document === document;\n }\n isVisible(document) {\n const uri = document instanceof vscode_1.Uri ? document : document.uri;\n return this.open.has(uri.toString());\n }\n getTabResources() {\n const result = new Set();\n Tabs.fillTabResources(new Set(), result);\n return result;\n }\n static fillTabResources(strings, uris) {\n const seen = strings ?? new Set();\n for (const group of vscode_1.window.tabGroups.all) {\n for (const tab of group.tabs) {\n const input = tab.input;\n let uri;\n if (input instanceof vscode_1.TabInputText) {\n uri = input.uri;\n }\n else if (input instanceof vscode_1.TabInputTextDiff) {\n uri = input.modified;\n }\n if (uri !== undefined && !seen.has(uri.toString())) {\n seen.add(uri.toString());\n uris !== undefined && uris.add(uri);\n }\n }\n }\n }\n}\nvar PullState;\n(function (PullState) {\n PullState[PullState[\"document\"] = 1] = \"document\";\n PullState[PullState[\"workspace\"] = 2] = \"workspace\";\n})(PullState || (PullState = {}));\nvar DocumentOrUri;\n(function (DocumentOrUri) {\n function asKey(document) {\n return document instanceof vscode_1.Uri ? document.toString() : document.uri.toString();\n }\n DocumentOrUri.asKey = asKey;\n})(DocumentOrUri || (DocumentOrUri = {}));\nclass DocumentPullStateTracker {\n constructor() {\n this.documentPullStates = new Map();\n this.workspacePullStates = new Map();\n }\n track(kind, document, arg1) {\n const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n const [key, uri, version] = document instanceof vscode_1.Uri\n ? [document.toString(), document, arg1]\n : [document.uri.toString(), document.uri, document.version];\n let state = states.get(key);\n if (state === undefined) {\n state = { document: uri, pulledVersion: version, resultId: undefined };\n states.set(key, state);\n }\n return state;\n }\n update(kind, document, arg1, arg2) {\n const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n const [key, uri, version, resultId] = document instanceof vscode_1.Uri\n ? [document.toString(), document, arg1, arg2]\n : [document.uri.toString(), document.uri, document.version, arg1];\n let state = states.get(key);\n if (state === undefined) {\n state = { document: uri, pulledVersion: version, resultId };\n states.set(key, state);\n }\n else {\n state.pulledVersion = version;\n state.resultId = resultId;\n }\n }\n unTrack(kind, document) {\n const key = DocumentOrUri.asKey(document);\n const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n states.delete(key);\n }\n tracks(kind, document) {\n const key = DocumentOrUri.asKey(document);\n const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n return states.has(key);\n }\n getResultId(kind, document) {\n const key = DocumentOrUri.asKey(document);\n const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n return states.get(key)?.resultId;\n }\n getAllResultIds() {\n const result = [];\n for (let [uri, value] of this.workspacePullStates) {\n if (this.documentPullStates.has(uri)) {\n value = this.documentPullStates.get(uri);\n }\n if (value.resultId !== undefined) {\n result.push({ uri, value: value.resultId });\n }\n }\n return result;\n }\n}\nclass DiagnosticRequestor {\n constructor(client, tabs, options) {\n this.client = client;\n this.tabs = tabs;\n this.options = options;\n this.isDisposed = false;\n this.onDidChangeDiagnosticsEmitter = new vscode_1.EventEmitter();\n this.provider = this.createProvider();\n this.diagnostics = vscode_1.languages.createDiagnosticCollection(options.identifier);\n this.openRequests = new Map();\n this.documentStates = new DocumentPullStateTracker();\n this.workspaceErrorCounter = 0;\n }\n knows(kind, document) {\n const uri = document instanceof vscode_1.Uri ? document : document.uri;\n return this.documentStates.tracks(kind, document) || this.openRequests.has(uri.toString());\n }\n forget(kind, document) {\n this.documentStates.unTrack(kind, document);\n }\n pull(document, cb) {\n if (this.isDisposed) {\n return;\n }\n const uri = document instanceof vscode_1.Uri ? document : document.uri;\n this.pullAsync(document).then(() => {\n if (cb) {\n cb();\n }\n }, (error) => {\n this.client.error(`Document pull failed for text document ${uri.toString()}`, error, false);\n });\n }\n async pullAsync(document, version) {\n if (this.isDisposed) {\n return;\n }\n const isUri = document instanceof vscode_1.Uri;\n const uri = isUri ? document : document.uri;\n const key = uri.toString();\n version = isUri ? version : document.version;\n const currentRequestState = this.openRequests.get(key);\n const documentState = isUri\n ? this.documentStates.track(PullState.document, document, version)\n : this.documentStates.track(PullState.document, document);\n if (currentRequestState === undefined) {\n const tokenSource = new vscode_1.CancellationTokenSource();\n this.openRequests.set(key, { state: RequestStateKind.active, document: document, version: version, tokenSource });\n let report;\n let afterState;\n try {\n report = await this.provider.provideDiagnostics(document, documentState.resultId, tokenSource.token) ?? { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] };\n }\n catch (error) {\n if (error instanceof features_1.LSPCancellationError && vscode_languageserver_protocol_1.DiagnosticServerCancellationData.is(error.data) && error.data.retriggerRequest === false) {\n afterState = { state: RequestStateKind.outDated, document };\n }\n if (afterState === undefined && error instanceof vscode_1.CancellationError) {\n afterState = { state: RequestStateKind.reschedule, document };\n }\n else {\n throw error;\n }\n }\n afterState = afterState ?? this.openRequests.get(key);\n if (afterState === undefined) {\n // This shouldn't happen. Log it\n this.client.error(`Lost request state in diagnostic pull model. Clearing diagnostics for ${key}`);\n this.diagnostics.delete(uri);\n return;\n }\n this.openRequests.delete(key);\n if (!this.tabs.isVisible(document)) {\n this.documentStates.unTrack(PullState.document, document);\n return;\n }\n if (afterState.state === RequestStateKind.outDated) {\n return;\n }\n // report is only undefined if the request has thrown.\n if (report !== undefined) {\n if (report.kind === vsdiag.DocumentDiagnosticReportKind.full) {\n this.diagnostics.set(uri, report.items);\n }\n documentState.pulledVersion = version;\n documentState.resultId = report.resultId;\n }\n if (afterState.state === RequestStateKind.reschedule) {\n this.pull(document);\n }\n }\n else {\n if (currentRequestState.state === RequestStateKind.active) {\n // Cancel the current request and reschedule a new one when the old one returned.\n currentRequestState.tokenSource.cancel();\n this.openRequests.set(key, { state: RequestStateKind.reschedule, document: currentRequestState.document });\n }\n else if (currentRequestState.state === RequestStateKind.outDated) {\n this.openRequests.set(key, { state: RequestStateKind.reschedule, document: currentRequestState.document });\n }\n }\n }\n forgetDocument(document) {\n const uri = document instanceof vscode_1.Uri ? document : document.uri;\n const key = uri.toString();\n const request = this.openRequests.get(key);\n if (this.options.workspaceDiagnostics) {\n // If we run workspace diagnostic pull a last time for the diagnostics\n // and the rely on getting them from the workspace result.\n if (request !== undefined) {\n this.openRequests.set(key, { state: RequestStateKind.reschedule, document: document });\n }\n else {\n this.pull(document, () => {\n this.forget(PullState.document, document);\n });\n }\n }\n else {\n // We have normal pull or inter file dependencies. In this case we\n // clear the diagnostics (to have the same start as after startup).\n // We also cancel outstanding requests.\n if (request !== undefined) {\n if (request.state === RequestStateKind.active) {\n request.tokenSource.cancel();\n }\n this.openRequests.set(key, { state: RequestStateKind.outDated, document: document });\n }\n this.diagnostics.delete(uri);\n this.forget(PullState.document, document);\n }\n }\n pullWorkspace() {\n if (this.isDisposed) {\n return;\n }\n this.pullWorkspaceAsync().then(() => {\n this.workspaceTimeout = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n this.pullWorkspace();\n }, 2000);\n }, (error) => {\n if (!(error instanceof features_1.LSPCancellationError) && !vscode_languageserver_protocol_1.DiagnosticServerCancellationData.is(error.data)) {\n this.client.error(`Workspace diagnostic pull failed.`, error, false);\n this.workspaceErrorCounter++;\n }\n if (this.workspaceErrorCounter <= 5) {\n this.workspaceTimeout = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n this.pullWorkspace();\n }, 2000);\n }\n });\n }\n async pullWorkspaceAsync() {\n if (!this.provider.provideWorkspaceDiagnostics || this.isDisposed) {\n return;\n }\n if (this.workspaceCancellation !== undefined) {\n this.workspaceCancellation.cancel();\n this.workspaceCancellation = undefined;\n }\n this.workspaceCancellation = new vscode_1.CancellationTokenSource();\n const previousResultIds = this.documentStates.getAllResultIds().map((item) => {\n return {\n uri: this.client.protocol2CodeConverter.asUri(item.uri),\n value: item.value\n };\n });\n await this.provider.provideWorkspaceDiagnostics(previousResultIds, this.workspaceCancellation.token, (chunk) => {\n if (!chunk || this.isDisposed) {\n return;\n }\n for (const item of chunk.items) {\n if (item.kind === vsdiag.DocumentDiagnosticReportKind.full) {\n // Favour document pull result over workspace results. So skip if it is tracked\n // as a document result.\n if (!this.documentStates.tracks(PullState.document, item.uri)) {\n this.diagnostics.set(item.uri, item.items);\n }\n }\n this.documentStates.update(PullState.workspace, item.uri, item.version ?? undefined, item.resultId);\n }\n });\n }\n createProvider() {\n const result = {\n onDidChangeDiagnostics: this.onDidChangeDiagnosticsEmitter.event,\n provideDiagnostics: (document, previousResultId, token) => {\n const provideDiagnostics = (document, previousResultId, token) => {\n const params = {\n identifier: this.options.identifier,\n textDocument: { uri: this.client.code2ProtocolConverter.asUri(document instanceof vscode_1.Uri ? document : document.uri) },\n previousResultId: previousResultId\n };\n if (this.isDisposed === true || !this.client.isRunning()) {\n return { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] };\n }\n return this.client.sendRequest(vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type, params, token).then(async (result) => {\n if (result === undefined || result === null || this.isDisposed || token.isCancellationRequested) {\n return { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] };\n }\n if (result.kind === vscode_languageserver_protocol_1.DocumentDiagnosticReportKind.Full) {\n return { kind: vsdiag.DocumentDiagnosticReportKind.full, resultId: result.resultId, items: await this.client.protocol2CodeConverter.asDiagnostics(result.items, token) };\n }\n else {\n return { kind: vsdiag.DocumentDiagnosticReportKind.unChanged, resultId: result.resultId };\n }\n }, (error) => {\n return this.client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type, token, error, { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] });\n });\n };\n const middleware = this.client.middleware;\n return middleware.provideDiagnostics\n ? middleware.provideDiagnostics(document, previousResultId, token, provideDiagnostics)\n : provideDiagnostics(document, previousResultId, token);\n }\n };\n if (this.options.workspaceDiagnostics) {\n result.provideWorkspaceDiagnostics = (resultIds, token, resultReporter) => {\n const convertReport = async (report) => {\n if (report.kind === vscode_languageserver_protocol_1.DocumentDiagnosticReportKind.Full) {\n return {\n kind: vsdiag.DocumentDiagnosticReportKind.full,\n uri: this.client.protocol2CodeConverter.asUri(report.uri),\n resultId: report.resultId,\n version: report.version,\n items: await this.client.protocol2CodeConverter.asDiagnostics(report.items, token)\n };\n }\n else {\n return {\n kind: vsdiag.DocumentDiagnosticReportKind.unChanged,\n uri: this.client.protocol2CodeConverter.asUri(report.uri),\n resultId: report.resultId,\n version: report.version\n };\n }\n };\n const convertPreviousResultIds = (resultIds) => {\n const converted = [];\n for (const item of resultIds) {\n converted.push({ uri: this.client.code2ProtocolConverter.asUri(item.uri), value: item.value });\n }\n return converted;\n };\n const provideDiagnostics = (resultIds, token) => {\n const partialResultToken = (0, uuid_1.generateUuid)();\n const disposable = this.client.onProgress(vscode_languageserver_protocol_1.WorkspaceDiagnosticRequest.partialResult, partialResultToken, async (partialResult) => {\n if (partialResult === undefined || partialResult === null) {\n resultReporter(null);\n return;\n }\n const converted = {\n items: []\n };\n for (const item of partialResult.items) {\n try {\n converted.items.push(await convertReport(item));\n }\n catch (error) {\n this.client.error(`Converting workspace diagnostics failed.`, error);\n }\n }\n resultReporter(converted);\n });\n const params = {\n identifier: this.options.identifier,\n previousResultIds: convertPreviousResultIds(resultIds),\n partialResultToken: partialResultToken\n };\n if (this.isDisposed === true || !this.client.isRunning()) {\n return { items: [] };\n }\n return this.client.sendRequest(vscode_languageserver_protocol_1.WorkspaceDiagnosticRequest.type, params, token).then(async (result) => {\n if (token.isCancellationRequested) {\n return { items: [] };\n }\n const converted = {\n items: []\n };\n for (const item of result.items) {\n converted.items.push(await convertReport(item));\n }\n disposable.dispose();\n resultReporter(converted);\n return { items: [] };\n }, (error) => {\n disposable.dispose();\n return this.client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type, token, error, { items: [] });\n });\n };\n const middleware = this.client.middleware;\n return middleware.provideWorkspaceDiagnostics\n ? middleware.provideWorkspaceDiagnostics(resultIds, token, resultReporter, provideDiagnostics)\n : provideDiagnostics(resultIds, token, resultReporter);\n };\n }\n return result;\n }\n dispose() {\n this.isDisposed = true;\n // Cancel and clear workspace pull if present.\n this.workspaceCancellation?.cancel();\n this.workspaceTimeout?.dispose();\n // Cancel all request and mark open requests as outdated.\n for (const [key, request] of this.openRequests) {\n if (request.state === RequestStateKind.active) {\n request.tokenSource.cancel();\n }\n this.openRequests.set(key, { state: RequestStateKind.outDated, document: request.document });\n }\n // cleanup old diagnostics\n this.diagnostics.dispose();\n }\n}\nclass BackgroundScheduler {\n constructor(diagnosticRequestor) {\n this.diagnosticRequestor = diagnosticRequestor;\n this.documents = new vscode_languageserver_protocol_1.LinkedMap();\n this.isDisposed = false;\n }\n add(document) {\n if (this.isDisposed === true) {\n return;\n }\n const key = DocumentOrUri.asKey(document);\n if (this.documents.has(key)) {\n return;\n }\n this.documents.set(key, document, vscode_languageserver_protocol_1.Touch.Last);\n this.trigger();\n }\n remove(document) {\n const key = DocumentOrUri.asKey(document);\n this.documents.delete(key);\n // No more documents. Stop background activity.\n if (this.documents.size === 0) {\n this.stop();\n }\n else if (key === this.endDocumentKey()) {\n // Make sure we have a correct last document. It could have\n this.endDocument = this.documents.last;\n }\n }\n trigger() {\n if (this.isDisposed === true) {\n return;\n }\n // We have a round running. So simply make sure we run up to the\n // last document\n if (this.intervalHandle !== undefined) {\n this.endDocument = this.documents.last;\n return;\n }\n this.endDocument = this.documents.last;\n this.intervalHandle = (0, vscode_languageserver_protocol_1.RAL)().timer.setInterval(() => {\n const document = this.documents.first;\n if (document !== undefined) {\n const key = DocumentOrUri.asKey(document);\n this.diagnosticRequestor.pull(document);\n this.documents.set(key, document, vscode_languageserver_protocol_1.Touch.Last);\n if (key === this.endDocumentKey()) {\n this.stop();\n }\n }\n }, 200);\n }\n dispose() {\n this.isDisposed = true;\n this.stop();\n this.documents.clear();\n }\n stop() {\n this.intervalHandle?.dispose();\n this.intervalHandle = undefined;\n this.endDocument = undefined;\n }\n endDocumentKey() {\n return this.endDocument !== undefined ? DocumentOrUri.asKey(this.endDocument) : undefined;\n }\n}\nclass DiagnosticFeatureProviderImpl {\n constructor(client, tabs, options) {\n const diagnosticPullOptions = client.clientOptions.diagnosticPullOptions ?? { onChange: true, onSave: false };\n const documentSelector = client.protocol2CodeConverter.asDocumentSelector(options.documentSelector);\n const disposables = [];\n const matchResource = (resource) => {\n const selector = options.documentSelector;\n if (diagnosticPullOptions.match !== undefined) {\n return diagnosticPullOptions.match(selector, resource);\n }\n for (const filter of selector) {\n if (!vscode_languageserver_protocol_1.TextDocumentFilter.is(filter)) {\n continue;\n }\n // The filter is a language id. We can't determine if it matches\n // so we return false.\n if (typeof filter === 'string') {\n return false;\n }\n if (filter.language !== undefined && filter.language !== '*') {\n return false;\n }\n if (filter.scheme !== undefined && filter.scheme !== '*' && filter.scheme !== resource.scheme) {\n return false;\n }\n if (filter.pattern !== undefined) {\n const matcher = new minimatch.Minimatch(filter.pattern, { noext: true });\n if (!matcher.makeRe()) {\n return false;\n }\n if (!matcher.match(resource.fsPath)) {\n return false;\n }\n }\n }\n return true;\n };\n const matches = (document) => {\n return document instanceof vscode_1.Uri\n ? matchResource(document)\n : vscode_1.languages.match(documentSelector, document) > 0 && tabs.isVisible(document);\n };\n const isActiveDocument = (document) => {\n return document instanceof vscode_1.Uri\n ? this.activeTextDocument?.uri.toString() === document.toString()\n : this.activeTextDocument === document;\n };\n this.diagnosticRequestor = new DiagnosticRequestor(client, tabs, options);\n this.backgroundScheduler = new BackgroundScheduler(this.diagnosticRequestor);\n const addToBackgroundIfNeeded = (document) => {\n if (!matches(document) || !options.interFileDependencies || isActiveDocument(document)) {\n return;\n }\n this.backgroundScheduler.add(document);\n };\n this.activeTextDocument = vscode_1.window.activeTextEditor?.document;\n vscode_1.window.onDidChangeActiveTextEditor((editor) => {\n const oldActive = this.activeTextDocument;\n this.activeTextDocument = editor?.document;\n if (oldActive !== undefined) {\n addToBackgroundIfNeeded(oldActive);\n }\n if (this.activeTextDocument !== undefined) {\n this.backgroundScheduler.remove(this.activeTextDocument);\n }\n });\n // For pull model diagnostics we pull for documents visible in the UI.\n // From an eventing point of view we still rely on open document events\n // and filter the documents that are not visible in the UI instead of\n // listening to Tab events. Major reason is event timing since we need\n // to ensure that the pull is send after the document open has reached\n // the server.\n // We always pull on open.\n const openFeature = client.getFeature(vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.method);\n disposables.push(openFeature.onNotificationSent((event) => {\n const textDocument = event.textDocument;\n // We already know about this document. This can happen via a tab open.\n if (this.diagnosticRequestor.knows(PullState.document, textDocument)) {\n return;\n }\n if (matches(textDocument)) {\n this.diagnosticRequestor.pull(textDocument, () => { addToBackgroundIfNeeded(textDocument); });\n }\n }));\n tabs.onOpen((opened) => {\n for (const resource of opened) {\n // We already know about this document. This can happen via a document open.\n if (this.diagnosticRequestor.knows(PullState.document, resource)) {\n continue;\n }\n const uriStr = resource.toString();\n let textDocument;\n for (const item of vscode_1.workspace.textDocuments) {\n if (uriStr === item.uri.toString()) {\n textDocument = item;\n break;\n }\n }\n // We have an open document for the resource behind the tab.\n if (textDocument !== undefined && matches(textDocument)) {\n this.diagnosticRequestor.pull(textDocument, () => { addToBackgroundIfNeeded(textDocument); });\n }\n else if (matches(resource)) {\n // Check if the resource matches\n this.diagnosticRequestor.pull(resource, () => { addToBackgroundIfNeeded(resource); });\n }\n }\n });\n // Pull all diagnostics for documents that are already open\n const pulledTextDocuments = new Set();\n for (const textDocument of vscode_1.workspace.textDocuments) {\n if (matches(textDocument)) {\n this.diagnosticRequestor.pull(textDocument, () => { addToBackgroundIfNeeded(textDocument); });\n pulledTextDocuments.add(textDocument.uri.toString());\n }\n }\n // Pull all tabs if not already pulled as text document\n if (diagnosticPullOptions.onTabs === true) {\n for (const resource of tabs.getTabResources()) {\n if (!pulledTextDocuments.has(resource.toString()) && matches(resource)) {\n this.diagnosticRequestor.pull(resource, () => { addToBackgroundIfNeeded(resource); });\n }\n }\n }\n // We don't need to pull on tab open since we will receive a document open as well later on\n // and that event allows us to use a document for a match check which will have a set\n // language id.\n if (diagnosticPullOptions.onChange === true) {\n const changeFeature = client.getFeature(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.method);\n disposables.push(changeFeature.onNotificationSent(async (event) => {\n const textDocument = event.textDocument;\n if ((diagnosticPullOptions.filter === undefined || !diagnosticPullOptions.filter(textDocument, DiagnosticPullMode.onType)) && this.diagnosticRequestor.knows(PullState.document, textDocument)) {\n this.diagnosticRequestor.pull(textDocument, () => { this.backgroundScheduler.trigger(); });\n }\n }));\n }\n if (diagnosticPullOptions.onSave === true) {\n const saveFeature = client.getFeature(vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.method);\n disposables.push(saveFeature.onNotificationSent((event) => {\n const textDocument = event.textDocument;\n if ((diagnosticPullOptions.filter === undefined || !diagnosticPullOptions.filter(textDocument, DiagnosticPullMode.onSave)) && this.diagnosticRequestor.knows(PullState.document, textDocument)) {\n this.diagnosticRequestor.pull(event.textDocument, () => { this.backgroundScheduler.trigger(); });\n }\n }));\n }\n // When the document closes clear things up\n const closeFeature = client.getFeature(vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.method);\n disposables.push(closeFeature.onNotificationSent((event) => {\n this.cleanUpDocument(event.textDocument);\n }));\n // Same when a tabs closes.\n tabs.onClose((closed) => {\n for (const document of closed) {\n this.cleanUpDocument(document);\n }\n });\n // We received a did change from the server.\n this.diagnosticRequestor.onDidChangeDiagnosticsEmitter.event(() => {\n for (const textDocument of vscode_1.workspace.textDocuments) {\n if (matches(textDocument)) {\n this.diagnosticRequestor.pull(textDocument);\n }\n }\n });\n // da348dc5-c30a-4515-9d98-31ff3be38d14 is the test UUID to test the middle ware. So don't auto trigger pulls.\n if (options.workspaceDiagnostics === true && options.identifier !== 'da348dc5-c30a-4515-9d98-31ff3be38d14') {\n this.diagnosticRequestor.pullWorkspace();\n }\n this.disposable = vscode_1.Disposable.from(...disposables, this.backgroundScheduler, this.diagnosticRequestor);\n }\n get onDidChangeDiagnosticsEmitter() {\n return this.diagnosticRequestor.onDidChangeDiagnosticsEmitter;\n }\n get diagnostics() {\n return this.diagnosticRequestor.provider;\n }\n cleanUpDocument(document) {\n if (this.diagnosticRequestor.knows(PullState.document, document)) {\n this.diagnosticRequestor.forgetDocument(document);\n this.backgroundScheduler.remove(document);\n }\n }\n}\nclass DiagnosticFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let capability = ensure(ensure(capabilities, 'textDocument'), 'diagnostic');\n capability.dynamicRegistration = true;\n // We first need to decide how a UI will look with related documents.\n // An easy implementation would be to only show related diagnostics for\n // the active editor.\n capability.relatedDocumentSupport = false;\n ensure(ensure(capabilities, 'workspace'), 'diagnostics').refreshSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.DiagnosticRefreshRequest.type, async () => {\n for (const provider of this.getAllProviders()) {\n provider.onDidChangeDiagnosticsEmitter.fire();\n }\n });\n let [id, options] = this.getRegistration(documentSelector, capabilities.diagnosticProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n dispose() {\n if (this.tabs !== undefined) {\n this.tabs.dispose();\n this.tabs = undefined;\n }\n super.dispose();\n }\n registerLanguageProvider(options) {\n if (this.tabs === undefined) {\n this.tabs = new Tabs();\n }\n const provider = new DiagnosticFeatureProviderImpl(this._client, this.tabs, options);\n return [provider.disposable, provider];\n }\n}\nexports.DiagnosticFeature = DiagnosticFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentHighlightFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DocumentHighlightFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentHighlightRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'documentHighlight').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentHighlightProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDocumentHighlights: (document, position, token) => {\n const client = this._client;\n const _provideDocumentHighlights = (document, position, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asDocumentHighlights(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDocumentHighlights\n ? middleware.provideDocumentHighlights(document, position, token, _provideDocumentHighlights)\n : _provideDocumentHighlights(document, position, token);\n }\n };\n return [vscode_1.languages.registerDocumentHighlightProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n }\n}\nexports.DocumentHighlightFeature = DocumentHighlightFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentLinkFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DocumentLinkFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentLinkRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const documentLinkCapabilities = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'documentLink');\n documentLinkCapabilities.dynamicRegistration = true;\n documentLinkCapabilities.tooltipSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentLinkProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDocumentLinks: (document, token) => {\n const client = this._client;\n const provideDocumentLinks = (document, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, client.code2ProtocolConverter.asDocumentLinkParams(document), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asDocumentLinks(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDocumentLinks\n ? middleware.provideDocumentLinks(document, token, provideDocumentLinks)\n : provideDocumentLinks(document, token);\n },\n resolveDocumentLink: options.resolveProvider\n ? (link, token) => {\n const client = this._client;\n let resolveDocumentLink = (link, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, client.code2ProtocolConverter.asDocumentLink(link), token).then((result) => {\n if (token.isCancellationRequested) {\n return link;\n }\n return client.protocol2CodeConverter.asDocumentLink(result);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, token, error, link);\n });\n };\n const middleware = client.middleware;\n return middleware.resolveDocumentLink\n ? middleware.resolveDocumentLink(link, token, resolveDocumentLink)\n : resolveDocumentLink(link, token);\n }\n : undefined\n };\n return [vscode_1.languages.registerDocumentLinkProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n }\n}\nexports.DocumentLinkFeature = DocumentLinkFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentSymbolFeature = exports.SupportedSymbolTags = exports.SupportedSymbolKinds = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nexports.SupportedSymbolKinds = [\n vscode_languageserver_protocol_1.SymbolKind.File,\n vscode_languageserver_protocol_1.SymbolKind.Module,\n vscode_languageserver_protocol_1.SymbolKind.Namespace,\n vscode_languageserver_protocol_1.SymbolKind.Package,\n vscode_languageserver_protocol_1.SymbolKind.Class,\n vscode_languageserver_protocol_1.SymbolKind.Method,\n vscode_languageserver_protocol_1.SymbolKind.Property,\n vscode_languageserver_protocol_1.SymbolKind.Field,\n vscode_languageserver_protocol_1.SymbolKind.Constructor,\n vscode_languageserver_protocol_1.SymbolKind.Enum,\n vscode_languageserver_protocol_1.SymbolKind.Interface,\n vscode_languageserver_protocol_1.SymbolKind.Function,\n vscode_languageserver_protocol_1.SymbolKind.Variable,\n vscode_languageserver_protocol_1.SymbolKind.Constant,\n vscode_languageserver_protocol_1.SymbolKind.String,\n vscode_languageserver_protocol_1.SymbolKind.Number,\n vscode_languageserver_protocol_1.SymbolKind.Boolean,\n vscode_languageserver_protocol_1.SymbolKind.Array,\n vscode_languageserver_protocol_1.SymbolKind.Object,\n vscode_languageserver_protocol_1.SymbolKind.Key,\n vscode_languageserver_protocol_1.SymbolKind.Null,\n vscode_languageserver_protocol_1.SymbolKind.EnumMember,\n vscode_languageserver_protocol_1.SymbolKind.Struct,\n vscode_languageserver_protocol_1.SymbolKind.Event,\n vscode_languageserver_protocol_1.SymbolKind.Operator,\n vscode_languageserver_protocol_1.SymbolKind.TypeParameter\n];\nexports.SupportedSymbolTags = [\n vscode_languageserver_protocol_1.SymbolTag.Deprecated\n];\nclass DocumentSymbolFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentSymbolRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let symbolCapabilities = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'documentSymbol');\n symbolCapabilities.dynamicRegistration = true;\n symbolCapabilities.symbolKind = {\n valueSet: exports.SupportedSymbolKinds\n };\n symbolCapabilities.hierarchicalDocumentSymbolSupport = true;\n symbolCapabilities.tagSupport = {\n valueSet: exports.SupportedSymbolTags\n };\n symbolCapabilities.labelSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentSymbolProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDocumentSymbols: (document, token) => {\n const client = this._client;\n const _provideDocumentSymbols = async (document, token) => {\n try {\n const data = await client.sendRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, client.code2ProtocolConverter.asDocumentSymbolParams(document), token);\n if (token.isCancellationRequested || data === undefined || data === null) {\n return null;\n }\n if (data.length === 0) {\n return [];\n }\n else {\n const first = data[0];\n if (vscode_languageserver_protocol_1.DocumentSymbol.is(first)) {\n return await client.protocol2CodeConverter.asDocumentSymbols(data, token);\n }\n else {\n return await client.protocol2CodeConverter.asSymbolInformations(data, token);\n }\n }\n }\n catch (error) {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, token, error, null);\n }\n };\n const middleware = client.middleware;\n return middleware.provideDocumentSymbols\n ? middleware.provideDocumentSymbols(document, token, _provideDocumentSymbols)\n : _provideDocumentSymbols(document, token);\n }\n };\n const metaData = options.label !== undefined ? { label: options.label } : undefined;\n return [vscode_1.languages.registerDocumentSymbolProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, metaData), provider];\n }\n}\nexports.DocumentSymbolFeature = DocumentSymbolFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExecuteCommandFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nclass ExecuteCommandFeature {\n constructor(client) {\n this._client = client;\n this._commands = new Map();\n }\n getState() {\n return { kind: 'workspace', id: this.registrationType.method, registrations: this._commands.size > 0 };\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.ExecuteCommandRequest.type;\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'executeCommand').dynamicRegistration = true;\n }\n initialize(capabilities) {\n if (!capabilities.executeCommandProvider) {\n return;\n }\n this.register({\n id: UUID.generateUuid(),\n registerOptions: Object.assign({}, capabilities.executeCommandProvider)\n });\n }\n register(data) {\n const client = this._client;\n const middleware = client.middleware;\n const executeCommand = (command, args) => {\n let params = {\n command,\n arguments: args\n };\n return client.sendRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, params).then(undefined, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, undefined, error, undefined);\n });\n };\n if (data.registerOptions.commands) {\n const disposables = [];\n for (const command of data.registerOptions.commands) {\n disposables.push(vscode_1.commands.registerCommand(command, (...args) => {\n return middleware.executeCommand\n ? middleware.executeCommand(command, args, executeCommand)\n : executeCommand(command, args);\n }));\n }\n this._commands.set(data.id, disposables);\n }\n }\n unregister(id) {\n let disposables = this._commands.get(id);\n if (disposables) {\n disposables.forEach(disposable => disposable.dispose());\n }\n }\n dispose() {\n this._commands.forEach((value) => {\n value.forEach(disposable => disposable.dispose());\n });\n this._commands.clear();\n }\n}\nexports.ExecuteCommandFeature = ExecuteCommandFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceFeature = exports.TextDocumentLanguageFeature = exports.TextDocumentEventFeature = exports.DynamicDocumentFeature = exports.DynamicFeature = exports.StaticFeature = exports.ensure = exports.LSPCancellationError = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst UUID = require(\"./utils/uuid\");\nclass LSPCancellationError extends vscode_1.CancellationError {\n constructor(data) {\n super();\n this.data = data;\n }\n}\nexports.LSPCancellationError = LSPCancellationError;\nfunction ensure(target, key) {\n if (target[key] === undefined) {\n target[key] = {};\n }\n return target[key];\n}\nexports.ensure = ensure;\nvar StaticFeature;\n(function (StaticFeature) {\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null &&\n Is.func(candidate.fillClientCapabilities) && Is.func(candidate.initialize) && Is.func(candidate.getState) && Is.func(candidate.dispose) &&\n (candidate.fillInitializeParams === undefined || Is.func(candidate.fillInitializeParams));\n }\n StaticFeature.is = is;\n})(StaticFeature = exports.StaticFeature || (exports.StaticFeature = {}));\nvar DynamicFeature;\n(function (DynamicFeature) {\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null &&\n Is.func(candidate.fillClientCapabilities) && Is.func(candidate.initialize) && Is.func(candidate.getState) && Is.func(candidate.dispose) &&\n (candidate.fillInitializeParams === undefined || Is.func(candidate.fillInitializeParams)) && Is.func(candidate.register) &&\n Is.func(candidate.unregister) && candidate.registrationType !== undefined;\n }\n DynamicFeature.is = is;\n})(DynamicFeature = exports.DynamicFeature || (exports.DynamicFeature = {}));\n/**\n * An abstract dynamic feature implementation that operates on documents (e.g. text\n * documents or notebooks).\n */\nclass DynamicDocumentFeature {\n constructor(client) {\n this._client = client;\n }\n /**\n * Returns the state the feature is in.\n */\n getState() {\n const selectors = this.getDocumentSelectors();\n let count = 0;\n for (const selector of selectors) {\n count++;\n for (const document of vscode_1.workspace.textDocuments) {\n if (vscode_1.languages.match(selector, document) > 0) {\n return { kind: 'document', id: this.registrationType.method, registrations: true, matches: true };\n }\n }\n }\n const registrations = count > 0;\n return { kind: 'document', id: this.registrationType.method, registrations, matches: false };\n }\n}\nexports.DynamicDocumentFeature = DynamicDocumentFeature;\n/**\n * An abstract base class to implement features that react to events\n * emitted from text documents.\n */\nclass TextDocumentEventFeature extends DynamicDocumentFeature {\n constructor(client, event, type, middleware, createParams, textDocument, selectorFilter) {\n super(client);\n this._event = event;\n this._type = type;\n this._middleware = middleware;\n this._createParams = createParams;\n this._textDocument = textDocument;\n this._selectorFilter = selectorFilter;\n this._selectors = new Map();\n this._onNotificationSent = new vscode_1.EventEmitter();\n }\n static textDocumentFilter(selectors, textDocument) {\n for (const selector of selectors) {\n if (vscode_1.languages.match(selector, textDocument) > 0) {\n return true;\n }\n }\n return false;\n }\n getStateInfo() {\n return [this._selectors.values(), false];\n }\n getDocumentSelectors() {\n return this._selectors.values();\n }\n register(data) {\n if (!data.registerOptions.documentSelector) {\n return;\n }\n if (!this._listener) {\n this._listener = this._event((data) => {\n this.callback(data).catch((error) => {\n this._client.error(`Sending document notification ${this._type.method} failed.`, error);\n });\n });\n }\n this._selectors.set(data.id, this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector));\n }\n async callback(data) {\n const doSend = async (data) => {\n const params = this._createParams(data);\n await this._client.sendNotification(this._type, params);\n this.notificationSent(this.getTextDocument(data), this._type, params);\n };\n if (this.matches(data)) {\n const middleware = this._middleware();\n return middleware ? middleware(data, (data) => doSend(data)) : doSend(data);\n }\n }\n matches(data) {\n if (this._client.hasDedicatedTextSynchronizationFeature(this._textDocument(data))) {\n return false;\n }\n return !this._selectorFilter || this._selectorFilter(this._selectors.values(), data);\n }\n get onNotificationSent() {\n return this._onNotificationSent.event;\n }\n notificationSent(textDocument, type, params) {\n this._onNotificationSent.fire({ textDocument, type, params });\n }\n unregister(id) {\n this._selectors.delete(id);\n if (this._selectors.size === 0 && this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n dispose() {\n this._selectors.clear();\n this._onNotificationSent.dispose();\n if (this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n getProvider(document) {\n for (const selector of this._selectors.values()) {\n if (vscode_1.languages.match(selector, document) > 0) {\n return {\n send: (data) => {\n return this.callback(data);\n }\n };\n }\n }\n return undefined;\n }\n}\nexports.TextDocumentEventFeature = TextDocumentEventFeature;\n/**\n * A abstract feature implementation that registers language providers\n * for text documents using a given document selector.\n */\nclass TextDocumentLanguageFeature extends DynamicDocumentFeature {\n constructor(client, registrationType) {\n super(client);\n this._registrationType = registrationType;\n this._registrations = new Map();\n }\n *getDocumentSelectors() {\n for (const registration of this._registrations.values()) {\n const selector = registration.data.registerOptions.documentSelector;\n if (selector === null) {\n continue;\n }\n yield this._client.protocol2CodeConverter.asDocumentSelector(selector);\n }\n }\n get registrationType() {\n return this._registrationType;\n }\n register(data) {\n if (!data.registerOptions.documentSelector) {\n return;\n }\n let registration = this.registerLanguageProvider(data.registerOptions, data.id);\n this._registrations.set(data.id, { disposable: registration[0], data, provider: registration[1] });\n }\n unregister(id) {\n let registration = this._registrations.get(id);\n if (registration !== undefined) {\n registration.disposable.dispose();\n }\n }\n dispose() {\n this._registrations.forEach((value) => {\n value.disposable.dispose();\n });\n this._registrations.clear();\n }\n getRegistration(documentSelector, capability) {\n if (!capability) {\n return [undefined, undefined];\n }\n else if (vscode_languageserver_protocol_1.TextDocumentRegistrationOptions.is(capability)) {\n const id = vscode_languageserver_protocol_1.StaticRegistrationOptions.hasId(capability) ? capability.id : UUID.generateUuid();\n const selector = capability.documentSelector ?? documentSelector;\n if (selector) {\n return [id, Object.assign({}, capability, { documentSelector: selector })];\n }\n }\n else if (Is.boolean(capability) && capability === true || vscode_languageserver_protocol_1.WorkDoneProgressOptions.is(capability)) {\n if (!documentSelector) {\n return [undefined, undefined];\n }\n const options = (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector }));\n return [UUID.generateUuid(), options];\n }\n return [undefined, undefined];\n }\n getRegistrationOptions(documentSelector, capability) {\n if (!documentSelector || !capability) {\n return undefined;\n }\n return (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector }));\n }\n getProvider(textDocument) {\n for (const registration of this._registrations.values()) {\n let selector = registration.data.registerOptions.documentSelector;\n if (selector !== null && vscode_1.languages.match(this._client.protocol2CodeConverter.asDocumentSelector(selector), textDocument) > 0) {\n return registration.provider;\n }\n }\n return undefined;\n }\n getAllProviders() {\n const result = [];\n for (const item of this._registrations.values()) {\n result.push(item.provider);\n }\n return result;\n }\n}\nexports.TextDocumentLanguageFeature = TextDocumentLanguageFeature;\nclass WorkspaceFeature {\n constructor(client, registrationType) {\n this._client = client;\n this._registrationType = registrationType;\n this._registrations = new Map();\n }\n getState() {\n const registrations = this._registrations.size > 0;\n return { kind: 'workspace', id: this._registrationType.method, registrations };\n }\n get registrationType() {\n return this._registrationType;\n }\n register(data) {\n const registration = this.registerLanguageProvider(data.registerOptions);\n this._registrations.set(data.id, { disposable: registration[0], provider: registration[1] });\n }\n unregister(id) {\n let registration = this._registrations.get(id);\n if (registration !== undefined) {\n registration.disposable.dispose();\n }\n }\n dispose() {\n this._registrations.forEach((registration) => {\n registration.disposable.dispose();\n });\n this._registrations.clear();\n }\n getProviders() {\n const result = [];\n for (const registration of this._registrations.values()) {\n result.push(registration.provider);\n }\n return result;\n }\n}\nexports.WorkspaceFeature = WorkspaceFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WillDeleteFilesFeature = exports.WillRenameFilesFeature = exports.WillCreateFilesFeature = exports.DidDeleteFilesFeature = exports.DidRenameFilesFeature = exports.DidCreateFilesFeature = void 0;\nconst code = require(\"vscode\");\nconst minimatch = require(\"minimatch\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nfunction ensure(target, key) {\n if (target[key] === void 0) {\n target[key] = {};\n }\n return target[key];\n}\nfunction access(target, key) {\n return target[key];\n}\nfunction assign(target, key, value) {\n target[key] = value;\n}\nclass FileOperationFeature {\n constructor(client, event, registrationType, clientCapability, serverCapability) {\n this._client = client;\n this._event = event;\n this._registrationType = registrationType;\n this._clientCapability = clientCapability;\n this._serverCapability = serverCapability;\n this._filters = new Map();\n }\n getState() {\n return { kind: 'workspace', id: this._registrationType.method, registrations: this._filters.size > 0 };\n }\n filterSize() {\n return this._filters.size;\n }\n get registrationType() {\n return this._registrationType;\n }\n fillClientCapabilities(capabilities) {\n const value = ensure(ensure(capabilities, 'workspace'), 'fileOperations');\n // this happens n times but it is the same value so we tolerate this.\n assign(value, 'dynamicRegistration', true);\n assign(value, this._clientCapability, true);\n }\n initialize(capabilities) {\n const options = capabilities.workspace?.fileOperations;\n const capability = options !== undefined ? access(options, this._serverCapability) : undefined;\n if (capability?.filters !== undefined) {\n try {\n this.register({\n id: UUID.generateUuid(),\n registerOptions: { filters: capability.filters }\n });\n }\n catch (e) {\n this._client.warn(`Ignoring invalid glob pattern for ${this._serverCapability} registration: ${e}`);\n }\n }\n }\n register(data) {\n if (!this._listener) {\n this._listener = this._event(this.send, this);\n }\n const minimatchFilter = data.registerOptions.filters.map((filter) => {\n const matcher = new minimatch.Minimatch(filter.pattern.glob, FileOperationFeature.asMinimatchOptions(filter.pattern.options));\n if (!matcher.makeRe()) {\n throw new Error(`Invalid pattern ${filter.pattern.glob}!`);\n }\n return { scheme: filter.scheme, matcher, kind: filter.pattern.matches };\n });\n this._filters.set(data.id, minimatchFilter);\n }\n unregister(id) {\n this._filters.delete(id);\n if (this._filters.size === 0 && this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n dispose() {\n this._filters.clear();\n if (this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n getFileType(uri) {\n return FileOperationFeature.getFileType(uri);\n }\n async filter(event, prop) {\n // (Asynchronously) map each file onto a boolean of whether it matches\n // any of the globs.\n const fileMatches = await Promise.all(event.files.map(async (item) => {\n const uri = prop(item);\n // Use fsPath to make this consistent with file system watchers but help\n // minimatch to use '/' instead of `\\\\` if present.\n const path = uri.fsPath.replace(/\\\\/g, '/');\n for (const filters of this._filters.values()) {\n for (const filter of filters) {\n if (filter.scheme !== undefined && filter.scheme !== uri.scheme) {\n continue;\n }\n if (filter.matcher.match(path)) {\n // The pattern matches. If kind is undefined then everything is ok\n if (filter.kind === undefined) {\n return true;\n }\n const fileType = await this.getFileType(uri);\n // If we can't determine the file type than we treat it as a match.\n // Dropping it would be another alternative.\n if (fileType === undefined) {\n this._client.error(`Failed to determine file type for ${uri.toString()}.`);\n return true;\n }\n if ((fileType === code.FileType.File && filter.kind === proto.FileOperationPatternKind.file) || (fileType === code.FileType.Directory && filter.kind === proto.FileOperationPatternKind.folder)) {\n return true;\n }\n }\n else if (filter.kind === proto.FileOperationPatternKind.folder) {\n const fileType = await FileOperationFeature.getFileType(uri);\n if (fileType === code.FileType.Directory && filter.matcher.match(`${path}/`)) {\n return true;\n }\n }\n }\n }\n return false;\n }));\n // Filter the files to those that matched.\n const files = event.files.filter((_, index) => fileMatches[index]);\n return { ...event, files };\n }\n static async getFileType(uri) {\n try {\n return (await code.workspace.fs.stat(uri)).type;\n }\n catch (e) {\n return undefined;\n }\n }\n static asMinimatchOptions(options) {\n if (options === undefined) {\n return undefined;\n }\n if (options.ignoreCase === true) {\n return { nocase: true };\n }\n return undefined;\n }\n}\nclass NotificationFileOperationFeature extends FileOperationFeature {\n constructor(client, event, notificationType, clientCapability, serverCapability, accessUri, createParams) {\n super(client, event, notificationType, clientCapability, serverCapability);\n this._notificationType = notificationType;\n this._accessUri = accessUri;\n this._createParams = createParams;\n }\n async send(originalEvent) {\n // Create a copy of the event that has the files filtered to match what the\n // server wants.\n const filteredEvent = await this.filter(originalEvent, this._accessUri);\n if (filteredEvent.files.length) {\n const next = async (event) => {\n return this._client.sendNotification(this._notificationType, this._createParams(event));\n };\n return this.doSend(filteredEvent, next);\n }\n }\n}\nclass CachingNotificationFileOperationFeature extends NotificationFileOperationFeature {\n constructor() {\n super(...arguments);\n this._fsPathFileTypes = new Map();\n }\n async getFileType(uri) {\n const fsPath = uri.fsPath;\n if (this._fsPathFileTypes.has(fsPath)) {\n return this._fsPathFileTypes.get(fsPath);\n }\n const type = await FileOperationFeature.getFileType(uri);\n if (type) {\n this._fsPathFileTypes.set(fsPath, type);\n }\n return type;\n }\n async cacheFileTypes(event, prop) {\n // Calling filter will force the matching logic to run. For any item\n // that requires a getFileType lookup, the overriden getFileType will\n // be called that will cache the result so that when onDidRename fires,\n // it can still be checked even though the item no longer exists on disk\n // in its original location.\n await this.filter(event, prop);\n }\n clearFileTypeCache() {\n this._fsPathFileTypes.clear();\n }\n unregister(id) {\n super.unregister(id);\n if (this.filterSize() === 0 && this._willListener) {\n this._willListener.dispose();\n this._willListener = undefined;\n }\n }\n dispose() {\n super.dispose();\n if (this._willListener) {\n this._willListener.dispose();\n this._willListener = undefined;\n }\n }\n}\nclass DidCreateFilesFeature extends NotificationFileOperationFeature {\n constructor(client) {\n super(client, code.workspace.onDidCreateFiles, proto.DidCreateFilesNotification.type, 'didCreate', 'didCreate', (i) => i, client.code2ProtocolConverter.asDidCreateFilesParams);\n }\n doSend(event, next) {\n const middleware = this._client.middleware.workspace;\n return middleware?.didCreateFiles\n ? middleware.didCreateFiles(event, next)\n : next(event);\n }\n}\nexports.DidCreateFilesFeature = DidCreateFilesFeature;\nclass DidRenameFilesFeature extends CachingNotificationFileOperationFeature {\n constructor(client) {\n super(client, code.workspace.onDidRenameFiles, proto.DidRenameFilesNotification.type, 'didRename', 'didRename', (i) => i.oldUri, client.code2ProtocolConverter.asDidRenameFilesParams);\n }\n register(data) {\n if (!this._willListener) {\n this._willListener = code.workspace.onWillRenameFiles(this.willRename, this);\n }\n super.register(data);\n }\n willRename(e) {\n e.waitUntil(this.cacheFileTypes(e, (i) => i.oldUri));\n }\n doSend(event, next) {\n this.clearFileTypeCache();\n const middleware = this._client.middleware.workspace;\n return middleware?.didRenameFiles\n ? middleware.didRenameFiles(event, next)\n : next(event);\n }\n}\nexports.DidRenameFilesFeature = DidRenameFilesFeature;\nclass DidDeleteFilesFeature extends CachingNotificationFileOperationFeature {\n constructor(client) {\n super(client, code.workspace.onDidDeleteFiles, proto.DidDeleteFilesNotification.type, 'didDelete', 'didDelete', (i) => i, client.code2ProtocolConverter.asDidDeleteFilesParams);\n }\n register(data) {\n if (!this._willListener) {\n this._willListener = code.workspace.onWillDeleteFiles(this.willDelete, this);\n }\n super.register(data);\n }\n willDelete(e) {\n e.waitUntil(this.cacheFileTypes(e, (i) => i));\n }\n doSend(event, next) {\n this.clearFileTypeCache();\n const middleware = this._client.middleware.workspace;\n return middleware?.didDeleteFiles\n ? middleware.didDeleteFiles(event, next)\n : next(event);\n }\n}\nexports.DidDeleteFilesFeature = DidDeleteFilesFeature;\nclass RequestFileOperationFeature extends FileOperationFeature {\n constructor(client, event, requestType, clientCapability, serverCapability, accessUri, createParams) {\n super(client, event, requestType, clientCapability, serverCapability);\n this._requestType = requestType;\n this._accessUri = accessUri;\n this._createParams = createParams;\n }\n async send(originalEvent) {\n const waitUntil = this.waitUntil(originalEvent);\n originalEvent.waitUntil(waitUntil);\n }\n async waitUntil(originalEvent) {\n // Create a copy of the event that has the files filtered to match what the\n // server wants.\n const filteredEvent = await this.filter(originalEvent, this._accessUri);\n if (filteredEvent.files.length) {\n const next = (event) => {\n return this._client.sendRequest(this._requestType, this._createParams(event), event.token)\n .then(this._client.protocol2CodeConverter.asWorkspaceEdit);\n };\n return this.doSend(filteredEvent, next);\n }\n else {\n return undefined;\n }\n }\n}\nclass WillCreateFilesFeature extends RequestFileOperationFeature {\n constructor(client) {\n super(client, code.workspace.onWillCreateFiles, proto.WillCreateFilesRequest.type, 'willCreate', 'willCreate', (i) => i, client.code2ProtocolConverter.asWillCreateFilesParams);\n }\n doSend(event, next) {\n const middleware = this._client.middleware.workspace;\n return middleware?.willCreateFiles\n ? middleware.willCreateFiles(event, next)\n : next(event);\n }\n}\nexports.WillCreateFilesFeature = WillCreateFilesFeature;\nclass WillRenameFilesFeature extends RequestFileOperationFeature {\n constructor(client) {\n super(client, code.workspace.onWillRenameFiles, proto.WillRenameFilesRequest.type, 'willRename', 'willRename', (i) => i.oldUri, client.code2ProtocolConverter.asWillRenameFilesParams);\n }\n doSend(event, next) {\n const middleware = this._client.middleware.workspace;\n return middleware?.willRenameFiles\n ? middleware.willRenameFiles(event, next)\n : next(event);\n }\n}\nexports.WillRenameFilesFeature = WillRenameFilesFeature;\nclass WillDeleteFilesFeature extends RequestFileOperationFeature {\n constructor(client) {\n super(client, code.workspace.onWillDeleteFiles, proto.WillDeleteFilesRequest.type, 'willDelete', 'willDelete', (i) => i, client.code2ProtocolConverter.asWillDeleteFilesParams);\n }\n doSend(event, next) {\n const middleware = this._client.middleware.workspace;\n return middleware?.willDeleteFiles\n ? middleware.willDeleteFiles(event, next)\n : next(event);\n }\n}\nexports.WillDeleteFilesFeature = WillDeleteFilesFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileSystemWatcherFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass FileSystemWatcherFeature {\n constructor(client, notifyFileEvent) {\n this._client = client;\n this._notifyFileEvent = notifyFileEvent;\n this._watchers = new Map();\n }\n getState() {\n return { kind: 'workspace', id: this.registrationType.method, registrations: this._watchers.size > 0 };\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type;\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'didChangeWatchedFiles').dynamicRegistration = true;\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'didChangeWatchedFiles').relativePatternSupport = true;\n }\n initialize(_capabilities, _documentSelector) {\n }\n register(data) {\n if (!Array.isArray(data.registerOptions.watchers)) {\n return;\n }\n const disposables = [];\n for (const watcher of data.registerOptions.watchers) {\n const globPattern = this._client.protocol2CodeConverter.asGlobPattern(watcher.globPattern);\n if (globPattern === undefined) {\n continue;\n }\n let watchCreate = true, watchChange = true, watchDelete = true;\n if (watcher.kind !== undefined && watcher.kind !== null) {\n watchCreate = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Create) !== 0;\n watchChange = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Change) !== 0;\n watchDelete = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Delete) !== 0;\n }\n const fileSystemWatcher = vscode_1.workspace.createFileSystemWatcher(globPattern, !watchCreate, !watchChange, !watchDelete);\n this.hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete, disposables);\n disposables.push(fileSystemWatcher);\n }\n this._watchers.set(data.id, disposables);\n }\n registerRaw(id, fileSystemWatchers) {\n let disposables = [];\n for (let fileSystemWatcher of fileSystemWatchers) {\n this.hookListeners(fileSystemWatcher, true, true, true, disposables);\n }\n this._watchers.set(id, disposables);\n }\n hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete, listeners) {\n if (watchCreate) {\n fileSystemWatcher.onDidCreate((resource) => this._notifyFileEvent({\n uri: this._client.code2ProtocolConverter.asUri(resource),\n type: vscode_languageserver_protocol_1.FileChangeType.Created\n }), null, listeners);\n }\n if (watchChange) {\n fileSystemWatcher.onDidChange((resource) => this._notifyFileEvent({\n uri: this._client.code2ProtocolConverter.asUri(resource),\n type: vscode_languageserver_protocol_1.FileChangeType.Changed\n }), null, listeners);\n }\n if (watchDelete) {\n fileSystemWatcher.onDidDelete((resource) => this._notifyFileEvent({\n uri: this._client.code2ProtocolConverter.asUri(resource),\n type: vscode_languageserver_protocol_1.FileChangeType.Deleted\n }), null, listeners);\n }\n }\n unregister(id) {\n let disposables = this._watchers.get(id);\n if (disposables) {\n for (let disposable of disposables) {\n disposable.dispose();\n }\n }\n }\n dispose() {\n this._watchers.forEach((disposables) => {\n for (let disposable of disposables) {\n disposable.dispose();\n }\n });\n this._watchers.clear();\n }\n}\nexports.FileSystemWatcherFeature = FileSystemWatcherFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FoldingRangeFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass FoldingRangeFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.FoldingRangeRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'foldingRange');\n capability.dynamicRegistration = true;\n capability.rangeLimit = 5000;\n capability.lineFoldingOnly = true;\n capability.foldingRangeKind = { valueSet: [vscode_languageserver_protocol_1.FoldingRangeKind.Comment, vscode_languageserver_protocol_1.FoldingRangeKind.Imports, vscode_languageserver_protocol_1.FoldingRangeKind.Region] };\n capability.foldingRange = { collapsedText: false };\n }\n initialize(capabilities, documentSelector) {\n let [id, options] = this.getRegistration(documentSelector, capabilities.foldingRangeProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideFoldingRanges: (document, context, token) => {\n const client = this._client;\n const provideFoldingRanges = (document, _, token) => {\n const requestParams = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, requestParams, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asFoldingRanges(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideFoldingRanges\n ? middleware.provideFoldingRanges(document, context, token, provideFoldingRanges)\n : provideFoldingRanges(document, context, token);\n }\n };\n return [vscode_1.languages.registerFoldingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n }\n}\nexports.FoldingRangeFeature = FoldingRangeFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentOnTypeFormattingFeature = exports.DocumentRangeFormattingFeature = exports.DocumentFormattingFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nvar FileFormattingOptions;\n(function (FileFormattingOptions) {\n function fromConfiguration(document) {\n const filesConfig = vscode_1.workspace.getConfiguration('files', document);\n return {\n trimTrailingWhitespace: filesConfig.get('trimTrailingWhitespace'),\n trimFinalNewlines: filesConfig.get('trimFinalNewlines'),\n insertFinalNewline: filesConfig.get('insertFinalNewline'),\n };\n }\n FileFormattingOptions.fromConfiguration = fromConfiguration;\n})(FileFormattingOptions || (FileFormattingOptions = {}));\nclass DocumentFormattingFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentFormattingRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'formatting').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentFormattingProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDocumentFormattingEdits: (document, options, token) => {\n const client = this._client;\n const provideDocumentFormattingEdits = (document, options, token) => {\n const params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n };\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asTextEdits(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDocumentFormattingEdits\n ? middleware.provideDocumentFormattingEdits(document, options, token, provideDocumentFormattingEdits)\n : provideDocumentFormattingEdits(document, options, token);\n }\n };\n return [vscode_1.languages.registerDocumentFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n }\n}\nexports.DocumentFormattingFeature = DocumentFormattingFeature;\nclass DocumentRangeFormattingFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'rangeFormatting').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentRangeFormattingProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideDocumentRangeFormattingEdits: (document, range, options, token) => {\n const client = this._client;\n const provideDocumentRangeFormattingEdits = (document, range, options, token) => {\n const params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n range: client.code2ProtocolConverter.asRange(range),\n options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n };\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asTextEdits(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideDocumentRangeFormattingEdits\n ? middleware.provideDocumentRangeFormattingEdits(document, range, options, token, provideDocumentRangeFormattingEdits)\n : provideDocumentRangeFormattingEdits(document, range, options, token);\n }\n };\n return [vscode_1.languages.registerDocumentRangeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n }\n}\nexports.DocumentRangeFormattingFeature = DocumentRangeFormattingFeature;\nclass DocumentOnTypeFormattingFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'onTypeFormatting').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentOnTypeFormattingProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideOnTypeFormattingEdits: (document, position, ch, options, token) => {\n const client = this._client;\n const provideOnTypeFormattingEdits = (document, position, ch, options, token) => {\n let params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n position: client.code2ProtocolConverter.asPosition(position),\n ch: ch,\n options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n };\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asTextEdits(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideOnTypeFormattingEdits\n ? middleware.provideOnTypeFormattingEdits(document, position, ch, options, token, provideOnTypeFormattingEdits)\n : provideOnTypeFormattingEdits(document, position, ch, options, token);\n }\n };\n const moreTriggerCharacter = options.moreTriggerCharacter || [];\n return [vscode_1.languages.registerOnTypeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, options.firstTriggerCharacter, ...moreTriggerCharacter), provider];\n }\n}\nexports.DocumentOnTypeFormattingFeature = DocumentOnTypeFormattingFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HoverFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass HoverFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.HoverRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const hoverCapability = ((0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'hover'));\n hoverCapability.dynamicRegistration = true;\n hoverCapability.contentFormat = [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText];\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.hoverProvider);\n if (!options) {\n return;\n }\n this.register({\n id: UUID.generateUuid(),\n registerOptions: options\n });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideHover: (document, position, token) => {\n const client = this._client;\n const provideHover = (document, position, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.HoverRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asHover(result);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.HoverRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideHover\n ? middleware.provideHover(document, position, token, provideHover)\n : provideHover(document, position, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerHoverProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.HoverFeature = HoverFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplementationFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass ImplementationFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.ImplementationRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let implementationSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'implementation');\n implementationSupport.dynamicRegistration = true;\n implementationSupport.linkSupport = true;\n }\n initialize(capabilities, documentSelector) {\n let [id, options] = this.getRegistration(documentSelector, capabilities.implementationProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideImplementation: (document, position, token) => {\n const client = this._client;\n const provideImplementation = (document, position, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asDefinitionResult(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideImplementation\n ? middleware.provideImplementation(document, position, token, provideImplementation)\n : provideImplementation(document, position, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerImplementationProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.ImplementationFeature = ImplementationFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlayHintsFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass InlayHintsFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.InlayHintRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const inlayHint = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'inlayHint');\n inlayHint.dynamicRegistration = true;\n inlayHint.resolveSupport = {\n properties: ['tooltip', 'textEdits', 'label.tooltip', 'label.location', 'label.command']\n };\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'inlayHint').refreshSupport = true;\n }\n initialize(capabilities, documentSelector) {\n this._client.onRequest(vscode_languageserver_protocol_1.InlayHintRefreshRequest.type, async () => {\n for (const provider of this.getAllProviders()) {\n provider.onDidChangeInlayHints.fire();\n }\n });\n const [id, options] = this.getRegistration(documentSelector, capabilities.inlayHintProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const eventEmitter = new vscode_1.EventEmitter();\n const provider = {\n onDidChangeInlayHints: eventEmitter.event,\n provideInlayHints: (document, viewPort, token) => {\n const client = this._client;\n const provideInlayHints = async (document, viewPort, token) => {\n const requestParams = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n range: client.code2ProtocolConverter.asRange(viewPort)\n };\n try {\n const values = await client.sendRequest(vscode_languageserver_protocol_1.InlayHintRequest.type, requestParams, token);\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asInlayHints(values, token);\n }\n catch (error) {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.InlayHintRequest.type, token, error, null);\n }\n };\n const middleware = client.middleware;\n return middleware.provideInlayHints\n ? middleware.provideInlayHints(document, viewPort, token, provideInlayHints)\n : provideInlayHints(document, viewPort, token);\n }\n };\n provider.resolveInlayHint = options.resolveProvider === true\n ? (hint, token) => {\n const client = this._client;\n const resolveInlayHint = async (item, token) => {\n try {\n const value = await client.sendRequest(vscode_languageserver_protocol_1.InlayHintResolveRequest.type, client.code2ProtocolConverter.asInlayHint(item), token);\n if (token.isCancellationRequested) {\n return null;\n }\n const result = client.protocol2CodeConverter.asInlayHint(value, token);\n return token.isCancellationRequested ? null : result;\n }\n catch (error) {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.InlayHintResolveRequest.type, token, error, null);\n }\n };\n const middleware = client.middleware;\n return middleware.resolveInlayHint\n ? middleware.resolveInlayHint(hint, token, resolveInlayHint)\n : resolveInlayHint(hint, token);\n }\n : undefined;\n return [this.registerProvider(selector, provider), { provider: provider, onDidChangeInlayHints: eventEmitter }];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerInlayHintsProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.InlayHintsFeature = InlayHintsFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineValueFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass InlineValueFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.InlineValueRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'inlineValue').dynamicRegistration = true;\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'inlineValue').refreshSupport = true;\n }\n initialize(capabilities, documentSelector) {\n this._client.onRequest(vscode_languageserver_protocol_1.InlineValueRefreshRequest.type, async () => {\n for (const provider of this.getAllProviders()) {\n provider.onDidChangeInlineValues.fire();\n }\n });\n const [id, options] = this.getRegistration(documentSelector, capabilities.inlineValueProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const eventEmitter = new vscode_1.EventEmitter();\n const provider = {\n onDidChangeInlineValues: eventEmitter.event,\n provideInlineValues: (document, viewPort, context, token) => {\n const client = this._client;\n const provideInlineValues = (document, viewPort, context, token) => {\n const requestParams = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n range: client.code2ProtocolConverter.asRange(viewPort),\n context: client.code2ProtocolConverter.asInlineValueContext(context)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.InlineValueRequest.type, requestParams, token).then((values) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asInlineValues(values, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.InlineValueRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideInlineValues\n ? middleware.provideInlineValues(document, viewPort, context, token, provideInlineValues)\n : provideInlineValues(document, viewPort, context, token);\n }\n };\n return [this.registerProvider(selector, provider), { provider: provider, onDidChangeInlineValues: eventEmitter }];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerInlineValuesProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.InlineValueFeature = InlineValueFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedEditingFeature = void 0;\nconst code = require(\"vscode\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass LinkedEditingFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, proto.LinkedEditingRangeRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const linkedEditingSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'linkedEditingRange');\n linkedEditingSupport.dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n let [id, options] = this.getRegistration(documentSelector, capabilities.linkedEditingRangeProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideLinkedEditingRanges: (document, position, token) => {\n const client = this._client;\n const provideLinkedEditing = (document, position, token) => {\n return client.sendRequest(proto.LinkedEditingRangeRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asLinkedEditingRanges(result, token);\n }, (error) => {\n return client.handleFailedRequest(proto.LinkedEditingRangeRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideLinkedEditingRange\n ? middleware.provideLinkedEditingRange(document, position, token, provideLinkedEditing)\n : provideLinkedEditing(document, position, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return code.languages.registerLinkedEditingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.LinkedEditingFeature = LinkedEditingFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotebookDocumentSyncFeature = void 0;\nconst vscode = require(\"vscode\");\nconst minimatch = require(\"minimatch\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst Is = require(\"./utils/is\");\nfunction ensure(target, key) {\n if (target[key] === void 0) {\n target[key] = {};\n }\n return target[key];\n}\nvar Converter;\n(function (Converter) {\n let c2p;\n (function (c2p) {\n function asVersionedNotebookDocumentIdentifier(notebookDocument, base) {\n return {\n version: notebookDocument.version,\n uri: base.asUri(notebookDocument.uri)\n };\n }\n c2p.asVersionedNotebookDocumentIdentifier = asVersionedNotebookDocumentIdentifier;\n function asNotebookDocument(notebookDocument, cells, base) {\n const result = proto.NotebookDocument.create(base.asUri(notebookDocument.uri), notebookDocument.notebookType, notebookDocument.version, asNotebookCells(cells, base));\n if (Object.keys(notebookDocument.metadata).length > 0) {\n result.metadata = asMetadata(notebookDocument.metadata);\n }\n return result;\n }\n c2p.asNotebookDocument = asNotebookDocument;\n function asNotebookCells(cells, base) {\n return cells.map(cell => asNotebookCell(cell, base));\n }\n c2p.asNotebookCells = asNotebookCells;\n function asMetadata(metadata) {\n const seen = new Set();\n return deepCopy(seen, metadata);\n }\n c2p.asMetadata = asMetadata;\n function asNotebookCell(cell, base) {\n const result = proto.NotebookCell.create(asNotebookCellKind(cell.kind), base.asUri(cell.document.uri));\n if (Object.keys(cell.metadata).length > 0) {\n result.metadata = asMetadata(cell.metadata);\n }\n if (cell.executionSummary !== undefined && (Is.number(cell.executionSummary.executionOrder) && Is.boolean(cell.executionSummary.success))) {\n result.executionSummary = {\n executionOrder: cell.executionSummary.executionOrder,\n success: cell.executionSummary.success\n };\n }\n return result;\n }\n c2p.asNotebookCell = asNotebookCell;\n function asNotebookCellKind(kind) {\n switch (kind) {\n case vscode.NotebookCellKind.Markup:\n return proto.NotebookCellKind.Markup;\n case vscode.NotebookCellKind.Code:\n return proto.NotebookCellKind.Code;\n }\n }\n function deepCopy(seen, value) {\n if (seen.has(value)) {\n throw new Error(`Can't deep copy cyclic structures.`);\n }\n if (Array.isArray(value)) {\n const result = [];\n for (const elem of value) {\n if (elem !== null && typeof elem === 'object' || Array.isArray(elem)) {\n result.push(deepCopy(seen, elem));\n }\n else {\n if (elem instanceof RegExp) {\n throw new Error(`Can't transfer regular expressions to the server`);\n }\n result.push(elem);\n }\n }\n return result;\n }\n else {\n const props = Object.keys(value);\n const result = Object.create(null);\n for (const prop of props) {\n const elem = value[prop];\n if (elem !== null && typeof elem === 'object' || Array.isArray(elem)) {\n result[prop] = deepCopy(seen, elem);\n }\n else {\n if (elem instanceof RegExp) {\n throw new Error(`Can't transfer regular expressions to the server`);\n }\n result[prop] = elem;\n }\n }\n return result;\n }\n }\n function asTextContentChange(event, base) {\n const params = base.asChangeTextDocumentParams(event, event.document.uri, event.document.version);\n return { document: params.textDocument, changes: params.contentChanges };\n }\n c2p.asTextContentChange = asTextContentChange;\n function asNotebookDocumentChangeEvent(event, base) {\n const result = Object.create(null);\n if (event.metadata) {\n result.metadata = Converter.c2p.asMetadata(event.metadata);\n }\n if (event.cells !== undefined) {\n const cells = Object.create(null);\n const changedCells = event.cells;\n if (changedCells.structure) {\n cells.structure = {\n array: {\n start: changedCells.structure.array.start,\n deleteCount: changedCells.structure.array.deleteCount,\n cells: changedCells.structure.array.cells !== undefined ? changedCells.structure.array.cells.map(cell => Converter.c2p.asNotebookCell(cell, base)) : undefined\n },\n didOpen: changedCells.structure.didOpen !== undefined\n ? changedCells.structure.didOpen.map(cell => base.asOpenTextDocumentParams(cell.document).textDocument)\n : undefined,\n didClose: changedCells.structure.didClose !== undefined\n ? changedCells.structure.didClose.map(cell => base.asCloseTextDocumentParams(cell.document).textDocument)\n : undefined\n };\n }\n if (changedCells.data !== undefined) {\n cells.data = changedCells.data.map(cell => Converter.c2p.asNotebookCell(cell, base));\n }\n if (changedCells.textContent !== undefined) {\n cells.textContent = changedCells.textContent.map(event => Converter.c2p.asTextContentChange(event, base));\n }\n if (Object.keys(cells).length > 0) {\n result.cells = cells;\n }\n }\n return result;\n }\n c2p.asNotebookDocumentChangeEvent = asNotebookDocumentChangeEvent;\n })(c2p = Converter.c2p || (Converter.c2p = {}));\n})(Converter || (Converter = {}));\nvar $NotebookCell;\n(function ($NotebookCell) {\n function computeDiff(originalCells, modifiedCells, compareMetadata) {\n const originalLength = originalCells.length;\n const modifiedLength = modifiedCells.length;\n let startIndex = 0;\n while (startIndex < modifiedLength && startIndex < originalLength && equals(originalCells[startIndex], modifiedCells[startIndex], compareMetadata)) {\n startIndex++;\n }\n if (startIndex < modifiedLength && startIndex < originalLength) {\n let originalEndIndex = originalLength - 1;\n let modifiedEndIndex = modifiedLength - 1;\n while (originalEndIndex >= 0 && modifiedEndIndex >= 0 && equals(originalCells[originalEndIndex], modifiedCells[modifiedEndIndex], compareMetadata)) {\n originalEndIndex--;\n modifiedEndIndex--;\n }\n const deleteCount = (originalEndIndex + 1) - startIndex;\n const newCells = startIndex === modifiedEndIndex + 1 ? undefined : modifiedCells.slice(startIndex, modifiedEndIndex + 1);\n return newCells !== undefined ? { start: startIndex, deleteCount, cells: newCells } : { start: startIndex, deleteCount };\n }\n else if (startIndex < modifiedLength) {\n return { start: startIndex, deleteCount: 0, cells: modifiedCells.slice(startIndex) };\n }\n else if (startIndex < originalLength) {\n return { start: startIndex, deleteCount: originalLength - startIndex };\n }\n else {\n // The two arrays are the same.\n return undefined;\n }\n }\n $NotebookCell.computeDiff = computeDiff;\n /**\n * We only sync kind, document, execution and metadata to the server. So we only need to compare those.\n */\n function equals(one, other, compareMetaData = true) {\n if (one.kind !== other.kind || one.document.uri.toString() !== other.document.uri.toString() || one.document.languageId !== other.document.languageId ||\n !equalsExecution(one.executionSummary, other.executionSummary)) {\n return false;\n }\n return !compareMetaData || (compareMetaData && equalsMetadata(one.metadata, other.metadata));\n }\n function equalsExecution(one, other) {\n if (one === other) {\n return true;\n }\n if (one === undefined || other === undefined) {\n return false;\n }\n return one.executionOrder === other.executionOrder && one.success === other.success && equalsTiming(one.timing, other.timing);\n }\n function equalsTiming(one, other) {\n if (one === other) {\n return true;\n }\n if (one === undefined || other === undefined) {\n return false;\n }\n return one.startTime === other.startTime && one.endTime === other.endTime;\n }\n function equalsMetadata(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== 'object') {\n return false;\n }\n const oneArray = Array.isArray(one);\n const otherArray = Array.isArray(other);\n if (oneArray !== otherArray) {\n return false;\n }\n if (oneArray && otherArray) {\n if (one.length !== other.length) {\n return false;\n }\n for (let i = 0; i < one.length; i++) {\n if (!equalsMetadata(one[i], other[i])) {\n return false;\n }\n }\n }\n if (isObjectLiteral(one) && isObjectLiteral(other)) {\n const oneKeys = Object.keys(one);\n const otherKeys = Object.keys(other);\n if (oneKeys.length !== otherKeys.length) {\n return false;\n }\n oneKeys.sort();\n otherKeys.sort();\n if (!equalsMetadata(oneKeys, otherKeys)) {\n return false;\n }\n for (let i = 0; i < oneKeys.length; i++) {\n const prop = oneKeys[i];\n if (!equalsMetadata(one[prop], other[prop])) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n function isObjectLiteral(value) {\n return value !== null && typeof value === 'object';\n }\n $NotebookCell.isObjectLiteral = isObjectLiteral;\n})($NotebookCell || ($NotebookCell = {}));\nvar $NotebookDocumentFilter;\n(function ($NotebookDocumentFilter) {\n function matchNotebook(filter, notebookDocument) {\n if (typeof filter === 'string') {\n return filter === '*' || notebookDocument.notebookType === filter;\n }\n if (filter.notebookType !== undefined && filter.notebookType !== '*' && notebookDocument.notebookType !== filter.notebookType) {\n return false;\n }\n const uri = notebookDocument.uri;\n if (filter.scheme !== undefined && filter.scheme !== '*' && uri.scheme !== filter.scheme) {\n return false;\n }\n if (filter.pattern !== undefined) {\n const matcher = new minimatch.Minimatch(filter.pattern, { noext: true });\n if (!matcher.makeRe()) {\n return false;\n }\n if (!matcher.match(uri.fsPath)) {\n return false;\n }\n }\n return true;\n }\n $NotebookDocumentFilter.matchNotebook = matchNotebook;\n})($NotebookDocumentFilter || ($NotebookDocumentFilter = {}));\nvar $NotebookDocumentSyncOptions;\n(function ($NotebookDocumentSyncOptions) {\n function asDocumentSelector(options) {\n const selector = options.notebookSelector;\n const result = [];\n for (const element of selector) {\n const notebookType = (typeof element.notebook === 'string' ? element.notebook : element.notebook?.notebookType) ?? '*';\n const scheme = (typeof element.notebook === 'string') ? undefined : element.notebook?.scheme;\n const pattern = (typeof element.notebook === 'string') ? undefined : element.notebook?.pattern;\n if (element.cells !== undefined) {\n for (const cell of element.cells) {\n result.push(asDocumentFilter(notebookType, scheme, pattern, cell.language));\n }\n }\n else {\n result.push(asDocumentFilter(notebookType, scheme, pattern, undefined));\n }\n }\n return result;\n }\n $NotebookDocumentSyncOptions.asDocumentSelector = asDocumentSelector;\n function asDocumentFilter(notebookType, scheme, pattern, language) {\n return scheme === undefined && pattern === undefined\n ? { notebook: notebookType, language }\n : { notebook: { notebookType, scheme, pattern }, language };\n }\n})($NotebookDocumentSyncOptions || ($NotebookDocumentSyncOptions = {}));\nvar SyncInfo;\n(function (SyncInfo) {\n function create(cells) {\n return {\n cells,\n uris: new Set(cells.map(cell => cell.document.uri.toString()))\n };\n }\n SyncInfo.create = create;\n})(SyncInfo || (SyncInfo = {}));\nclass NotebookDocumentSyncFeatureProvider {\n constructor(client, options) {\n this.client = client;\n this.options = options;\n this.notebookSyncInfo = new Map();\n this.notebookDidOpen = new Set();\n this.disposables = [];\n this.selector = client.protocol2CodeConverter.asDocumentSelector($NotebookDocumentSyncOptions.asDocumentSelector(options));\n // open\n vscode.workspace.onDidOpenNotebookDocument((notebookDocument) => {\n this.notebookDidOpen.add(notebookDocument.uri.toString());\n this.didOpen(notebookDocument);\n }, undefined, this.disposables);\n for (const notebookDocument of vscode.workspace.notebookDocuments) {\n this.notebookDidOpen.add(notebookDocument.uri.toString());\n this.didOpen(notebookDocument);\n }\n // Notebook document changed.\n vscode.workspace.onDidChangeNotebookDocument(event => this.didChangeNotebookDocument(event), undefined, this.disposables);\n //save\n if (this.options.save === true) {\n vscode.workspace.onDidSaveNotebookDocument(notebookDocument => this.didSave(notebookDocument), undefined, this.disposables);\n }\n // close\n vscode.workspace.onDidCloseNotebookDocument((notebookDocument) => {\n this.didClose(notebookDocument);\n this.notebookDidOpen.delete(notebookDocument.uri.toString());\n }, undefined, this.disposables);\n }\n getState() {\n for (const notebook of vscode.workspace.notebookDocuments) {\n const matchingCells = this.getMatchingCells(notebook);\n if (matchingCells !== undefined) {\n return { kind: 'document', id: '$internal', registrations: true, matches: true };\n }\n }\n return { kind: 'document', id: '$internal', registrations: true, matches: false };\n }\n get mode() {\n return 'notebook';\n }\n handles(textDocument) {\n return vscode.languages.match(this.selector, textDocument) > 0;\n }\n didOpenNotebookCellTextDocument(notebookDocument, cell) {\n if (vscode.languages.match(this.selector, cell.document) === 0) {\n return;\n }\n if (!this.notebookDidOpen.has(notebookDocument.uri.toString())) {\n // We have never received an open notification for the notebook document.\n // VS Code guarantees that we first get cell document open and then\n // notebook open. So simply wait for the notebook open.\n return;\n }\n const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n // In VS Code we receive a notebook open before a cell document open.\n // The document and the cell is synced.\n const cellMatches = this.cellMatches(notebookDocument, cell);\n if (syncInfo !== undefined) {\n const cellIsSynced = syncInfo.uris.has(cell.document.uri.toString());\n if ((cellMatches && cellIsSynced) || (!cellMatches && !cellIsSynced)) {\n // The cell doesn't match and was not synced or it matches and is synced.\n // In both cases nothing to do.\n //\n // Note that if the language mode of a document changes we remove the\n // cell and add it back to update the language mode on the server side.\n return;\n }\n if (cellMatches) {\n // don't use cells from above since there might be more matching cells in the notebook\n // Since we had a matching cell above we will have matching cells now.\n const matchingCells = this.getMatchingCells(notebookDocument);\n if (matchingCells !== undefined) {\n const event = this.asNotebookDocumentChangeEvent(notebookDocument, undefined, syncInfo, matchingCells);\n if (event !== undefined) {\n this.doSendChange(event, matchingCells).catch(() => { });\n }\n }\n }\n }\n else {\n // No sync info. But we have a open event for the notebook document\n // itself. If the cell matches then we need to send an open with\n // exactly that cell.\n if (cellMatches) {\n this.doSendOpen(notebookDocument, [cell]).catch(() => { });\n }\n }\n }\n didChangeNotebookCellTextDocument(notebookDocument, event) {\n // No match with the selector\n if (vscode.languages.match(this.selector, event.document) === 0) {\n return;\n }\n this.doSendChange({\n notebook: notebookDocument,\n cells: { textContent: [event] }\n }, undefined).catch(() => { });\n }\n didCloseNotebookCellTextDocument(notebookDocument, cell) {\n const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n if (syncInfo === undefined) {\n // The notebook document got never synced. So it doesn't matter if a cell\n // document closes.\n return;\n }\n const cellUri = cell.document.uri;\n const index = syncInfo.cells.findIndex((item) => item.document.uri.toString() === cellUri.toString());\n if (index === -1) {\n // The cell never got synced or it got deleted and we now received the document\n // close event.\n return;\n }\n if (index === 0 && syncInfo.cells.length === 1) {\n // The last cell. Close the notebook document in the server.\n this.doSendClose(notebookDocument, syncInfo.cells).catch(() => { });\n }\n else {\n const newCells = syncInfo.cells.slice();\n const deleted = newCells.splice(index, 1);\n this.doSendChange({\n notebook: notebookDocument,\n cells: {\n structure: {\n array: { start: index, deleteCount: 1 },\n didClose: deleted\n }\n }\n }, newCells).catch(() => { });\n }\n }\n dispose() {\n for (const disposable of this.disposables) {\n disposable.dispose();\n }\n }\n didOpen(notebookDocument, matchingCells = this.getMatchingCells(notebookDocument), syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString())) {\n if (syncInfo !== undefined) {\n if (matchingCells !== undefined) {\n const event = this.asNotebookDocumentChangeEvent(notebookDocument, undefined, syncInfo, matchingCells);\n if (event !== undefined) {\n this.doSendChange(event, matchingCells).catch(() => { });\n }\n }\n else {\n this.doSendClose(notebookDocument, []).catch(() => { });\n }\n }\n else {\n // Check if we need to sync the notebook document.\n if (matchingCells === undefined) {\n return;\n }\n this.doSendOpen(notebookDocument, matchingCells).catch(() => { });\n }\n }\n didChangeNotebookDocument(event) {\n const notebookDocument = event.notebook;\n const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n if (syncInfo === undefined) {\n // We have no changes to the cells. Since the notebook wasn't synced\n // it will not be synced now.\n if (event.contentChanges.length === 0) {\n return;\n }\n // Check if we have new matching cells.\n const cells = this.getMatchingCells(notebookDocument);\n // No matching cells and the notebook never synced. So still no need\n // to sync it.\n if (cells === undefined) {\n return;\n }\n // Open the notebook document and ignore the rest of the changes\n // this the notebooks will be synced with the correct settings.\n this.didOpen(notebookDocument, cells, syncInfo);\n }\n else {\n // The notebook is synced. First check if we have no matching\n // cells anymore and if so close the notebook\n const cells = this.getMatchingCells(notebookDocument);\n if (cells === undefined) {\n this.didClose(notebookDocument, syncInfo);\n return;\n }\n const newEvent = this.asNotebookDocumentChangeEvent(event.notebook, event, syncInfo, cells);\n if (newEvent !== undefined) {\n this.doSendChange(newEvent, cells).catch(() => { });\n }\n }\n }\n didSave(notebookDocument) {\n const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n if (syncInfo === undefined) {\n return;\n }\n this.doSendSave(notebookDocument).catch(() => { });\n }\n didClose(notebookDocument, syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString())) {\n if (syncInfo === undefined) {\n return;\n }\n const syncedCells = notebookDocument.getCells().filter(cell => syncInfo.uris.has(cell.document.uri.toString()));\n this.doSendClose(notebookDocument, syncedCells).catch(() => { });\n }\n async sendDidOpenNotebookDocument(notebookDocument) {\n const cells = this.getMatchingCells(notebookDocument);\n if (cells === undefined) {\n return;\n }\n return this.doSendOpen(notebookDocument, cells);\n }\n async doSendOpen(notebookDocument, cells) {\n const send = async (notebookDocument, cells) => {\n const nb = Converter.c2p.asNotebookDocument(notebookDocument, cells, this.client.code2ProtocolConverter);\n const cellDocuments = cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentItem(cell.document));\n try {\n await this.client.sendNotification(proto.DidOpenNotebookDocumentNotification.type, {\n notebookDocument: nb,\n cellTextDocuments: cellDocuments\n });\n }\n catch (error) {\n this.client.error('Sending DidOpenNotebookDocumentNotification failed', error);\n throw error;\n }\n };\n const middleware = this.client.middleware?.notebooks;\n this.notebookSyncInfo.set(notebookDocument.uri.toString(), SyncInfo.create(cells));\n return middleware?.didOpen !== undefined ? middleware.didOpen(notebookDocument, cells, send) : send(notebookDocument, cells);\n }\n async sendDidChangeNotebookDocument(event) {\n return this.doSendChange(event, undefined);\n }\n async doSendChange(event, cells = this.getMatchingCells(event.notebook)) {\n const send = async (event) => {\n try {\n await this.client.sendNotification(proto.DidChangeNotebookDocumentNotification.type, {\n notebookDocument: Converter.c2p.asVersionedNotebookDocumentIdentifier(event.notebook, this.client.code2ProtocolConverter),\n change: Converter.c2p.asNotebookDocumentChangeEvent(event, this.client.code2ProtocolConverter)\n });\n }\n catch (error) {\n this.client.error('Sending DidChangeNotebookDocumentNotification failed', error);\n throw error;\n }\n };\n const middleware = this.client.middleware?.notebooks;\n if (event.cells?.structure !== undefined) {\n this.notebookSyncInfo.set(event.notebook.uri.toString(), SyncInfo.create(cells ?? []));\n }\n return middleware?.didChange !== undefined ? middleware?.didChange(event, send) : send(event);\n }\n async sendDidSaveNotebookDocument(notebookDocument) {\n return this.doSendSave(notebookDocument);\n }\n async doSendSave(notebookDocument) {\n const send = async (notebookDocument) => {\n try {\n await this.client.sendNotification(proto.DidSaveNotebookDocumentNotification.type, {\n notebookDocument: { uri: this.client.code2ProtocolConverter.asUri(notebookDocument.uri) }\n });\n }\n catch (error) {\n this.client.error('Sending DidSaveNotebookDocumentNotification failed', error);\n throw error;\n }\n };\n const middleware = this.client.middleware?.notebooks;\n return middleware?.didSave !== undefined ? middleware.didSave(notebookDocument, send) : send(notebookDocument);\n }\n async sendDidCloseNotebookDocument(notebookDocument) {\n return this.doSendClose(notebookDocument, this.getMatchingCells(notebookDocument) ?? []);\n }\n async doSendClose(notebookDocument, cells) {\n const send = async (notebookDocument, cells) => {\n try {\n await this.client.sendNotification(proto.DidCloseNotebookDocumentNotification.type, {\n notebookDocument: { uri: this.client.code2ProtocolConverter.asUri(notebookDocument.uri) },\n cellTextDocuments: cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentIdentifier(cell.document))\n });\n }\n catch (error) {\n this.client.error('Sending DidCloseNotebookDocumentNotification failed', error);\n throw error;\n }\n };\n const middleware = this.client.middleware?.notebooks;\n this.notebookSyncInfo.delete(notebookDocument.uri.toString());\n return middleware?.didClose !== undefined ? middleware.didClose(notebookDocument, cells, send) : send(notebookDocument, cells);\n }\n asNotebookDocumentChangeEvent(notebook, event, syncInfo, matchingCells) {\n if (event !== undefined && event.notebook !== notebook) {\n throw new Error('Notebook must be identical');\n }\n const result = {\n notebook: notebook\n };\n if (event?.metadata !== undefined) {\n result.metadata = Converter.c2p.asMetadata(event.metadata);\n }\n let matchingCellsSet;\n if (event?.cellChanges !== undefined && event.cellChanges.length > 0) {\n const data = [];\n // Only consider the new matching cells.\n matchingCellsSet = new Set(matchingCells.map(cell => cell.document.uri.toString()));\n for (const cellChange of event.cellChanges) {\n if (matchingCellsSet.has(cellChange.cell.document.uri.toString()) && (cellChange.executionSummary !== undefined || cellChange.metadata !== undefined)) {\n data.push(cellChange.cell);\n }\n }\n if (data.length > 0) {\n result.cells = result.cells ?? {};\n result.cells.data = data;\n }\n }\n if (((event?.contentChanges !== undefined && event.contentChanges.length > 0) || event === undefined) && syncInfo !== undefined && matchingCells !== undefined) {\n // We still have matching cells. Check if the cell changes\n // affect the notebook on the server side.\n const oldCells = syncInfo.cells;\n const newCells = matchingCells;\n // meta data changes are reported using on the cell itself. So we can ignore comparing\n // it which has a positive effect on performance.\n const diff = $NotebookCell.computeDiff(oldCells, newCells, false);\n let addedCells;\n let removedCells;\n if (diff !== undefined) {\n addedCells = diff.cells === undefined\n ? new Map()\n : new Map(diff.cells.map(cell => [cell.document.uri.toString(), cell]));\n removedCells = diff.deleteCount === 0\n ? new Map()\n : new Map(oldCells.slice(diff.start, diff.start + diff.deleteCount).map(cell => [cell.document.uri.toString(), cell]));\n // Remove the onces that got deleted and inserted again.\n for (const key of Array.from(removedCells.keys())) {\n if (addedCells.has(key)) {\n removedCells.delete(key);\n addedCells.delete(key);\n }\n }\n result.cells = result.cells ?? {};\n const didOpen = [];\n const didClose = [];\n if (addedCells.size > 0 || removedCells.size > 0) {\n for (const cell of addedCells.values()) {\n didOpen.push(cell);\n }\n for (const cell of removedCells.values()) {\n didClose.push(cell);\n }\n }\n result.cells.structure = {\n array: diff,\n didOpen,\n didClose\n };\n }\n }\n // The notebook is a property as well.\n return Object.keys(result).length > 1 ? result : undefined;\n }\n getMatchingCells(notebookDocument, cells = notebookDocument.getCells()) {\n if (this.options.notebookSelector === undefined) {\n return undefined;\n }\n for (const item of this.options.notebookSelector) {\n if (item.notebook === undefined || $NotebookDocumentFilter.matchNotebook(item.notebook, notebookDocument)) {\n const filtered = this.filterCells(notebookDocument, cells, item.cells);\n return filtered.length === 0 ? undefined : filtered;\n }\n }\n return undefined;\n }\n cellMatches(notebookDocument, cell) {\n const cells = this.getMatchingCells(notebookDocument, [cell]);\n return cells !== undefined && cells[0] === cell;\n }\n filterCells(notebookDocument, cells, cellSelector) {\n const filtered = cellSelector !== undefined ? cells.filter((cell) => {\n const cellLanguage = cell.document.languageId;\n return cellSelector.some((filter => (filter.language === '*' || cellLanguage === filter.language)));\n }) : cells;\n return typeof this.client.clientOptions.notebookDocumentOptions?.filterCells === 'function'\n ? this.client.clientOptions.notebookDocumentOptions.filterCells(notebookDocument, filtered)\n : filtered;\n }\n}\nclass NotebookDocumentSyncFeature {\n constructor(client) {\n this.client = client;\n this.registrations = new Map();\n this.registrationType = proto.NotebookDocumentSyncRegistrationType.type;\n // We don't receive an event for cells where the document changes its language mode\n // Since we allow servers to filter on the language mode we fire such an event ourselves.\n vscode.workspace.onDidOpenTextDocument((textDocument) => {\n if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n return;\n }\n const [notebookDocument, notebookCell] = this.findNotebookDocumentAndCell(textDocument);\n if (notebookDocument === undefined || notebookCell === undefined) {\n return;\n }\n for (const provider of this.registrations.values()) {\n if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n provider.didOpenNotebookCellTextDocument(notebookDocument, notebookCell);\n }\n }\n });\n vscode.workspace.onDidChangeTextDocument((event) => {\n if (event.contentChanges.length === 0) {\n return;\n }\n const textDocument = event.document;\n if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n return;\n }\n const [notebookDocument,] = this.findNotebookDocumentAndCell(textDocument);\n if (notebookDocument === undefined) {\n return;\n }\n for (const provider of this.registrations.values()) {\n if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n provider.didChangeNotebookCellTextDocument(notebookDocument, event);\n }\n }\n });\n vscode.workspace.onDidCloseTextDocument((textDocument) => {\n if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n return;\n }\n // There are two cases when we receive a close for a text document\n // 1: the cell got removed. This is handled in `onDidChangeNotebookCells`\n // 2: the language mode of a cell changed. This keeps the URI stable so\n // we will still find the cell and the notebook document.\n const [notebookDocument, notebookCell] = this.findNotebookDocumentAndCell(textDocument);\n if (notebookDocument === undefined || notebookCell === undefined) {\n return;\n }\n for (const provider of this.registrations.values()) {\n if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n provider.didCloseNotebookCellTextDocument(notebookDocument, notebookCell);\n }\n }\n });\n }\n getState() {\n if (this.registrations.size === 0) {\n return { kind: 'document', id: this.registrationType.method, registrations: false, matches: false };\n }\n for (const provider of this.registrations.values()) {\n const state = provider.getState();\n if (state.kind === 'document' && state.registrations === true && state.matches === true) {\n return { kind: 'document', id: this.registrationType.method, registrations: true, matches: true };\n }\n }\n return { kind: 'document', id: this.registrationType.method, registrations: true, matches: false };\n }\n fillClientCapabilities(capabilities) {\n const synchronization = ensure(ensure(capabilities, 'notebookDocument'), 'synchronization');\n synchronization.dynamicRegistration = true;\n synchronization.executionSummarySupport = true;\n }\n preInitialize(capabilities) {\n const options = capabilities.notebookDocumentSync;\n if (options === undefined) {\n return;\n }\n this.dedicatedChannel = this.client.protocol2CodeConverter.asDocumentSelector($NotebookDocumentSyncOptions.asDocumentSelector(options));\n }\n initialize(capabilities) {\n const options = capabilities.notebookDocumentSync;\n if (options === undefined) {\n return;\n }\n const id = options.id ?? UUID.generateUuid();\n this.register({ id, registerOptions: options });\n }\n register(data) {\n const provider = new NotebookDocumentSyncFeatureProvider(this.client, data.registerOptions);\n this.registrations.set(data.id, provider);\n }\n unregister(id) {\n const provider = this.registrations.get(id);\n provider && provider.dispose();\n }\n dispose() {\n for (const provider of this.registrations.values()) {\n provider.dispose();\n }\n this.registrations.clear();\n }\n handles(textDocument) {\n if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n return false;\n }\n if (this.dedicatedChannel !== undefined && vscode.languages.match(this.dedicatedChannel, textDocument) > 0) {\n return true;\n }\n for (const provider of this.registrations.values()) {\n if (provider.handles(textDocument)) {\n return true;\n }\n }\n return false;\n }\n getProvider(notebookCell) {\n for (const provider of this.registrations.values()) {\n if (provider.handles(notebookCell.document)) {\n return provider;\n }\n }\n return undefined;\n }\n findNotebookDocumentAndCell(textDocument) {\n const uri = textDocument.uri.toString();\n for (const notebookDocument of vscode.workspace.notebookDocuments) {\n for (const cell of notebookDocument.getCells()) {\n if (cell.document.uri.toString() === uri) {\n return [notebookDocument, cell];\n }\n }\n }\n return [undefined, undefined];\n }\n}\nexports.NotebookDocumentSyncFeature = NotebookDocumentSyncFeature;\nNotebookDocumentSyncFeature.CellScheme = 'vscode-notebook-cell';\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressFeature = void 0;\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst progressPart_1 = require(\"./progressPart\");\nfunction ensure(target, key) {\n if (target[key] === void 0) {\n target[key] = Object.create(null);\n }\n return target[key];\n}\nclass ProgressFeature {\n constructor(_client) {\n this._client = _client;\n this.activeParts = new Set();\n }\n getState() {\n return { kind: 'window', id: vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.method, registrations: this.activeParts.size > 0 };\n }\n fillClientCapabilities(capabilities) {\n ensure(capabilities, 'window').workDoneProgress = true;\n }\n initialize() {\n const client = this._client;\n const deleteHandler = (part) => {\n this.activeParts.delete(part);\n };\n const createHandler = (params) => {\n this.activeParts.add(new progressPart_1.ProgressPart(this._client, params.token, deleteHandler));\n };\n client.onRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, createHandler);\n }\n dispose() {\n for (const part of this.activeParts) {\n part.done();\n }\n this.activeParts.clear();\n }\n}\nexports.ProgressFeature = ProgressFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressPart = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nclass ProgressPart {\n constructor(_client, _token, done) {\n this._client = _client;\n this._token = _token;\n this._reported = 0;\n this._infinite = false;\n this._lspProgressDisposable = this._client.onProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, (value) => {\n switch (value.kind) {\n case 'begin':\n this.begin(value);\n break;\n case 'report':\n this.report(value);\n break;\n case 'end':\n this.done();\n done && done(this);\n break;\n }\n });\n }\n begin(params) {\n this._infinite = params.percentage === undefined;\n // the progress as already been marked as done / canceled. Ignore begin call\n if (this._lspProgressDisposable === undefined) {\n return;\n }\n // Since we don't use commands this will be a silent window progress with a hidden notification.\n void vscode_1.window.withProgress({ location: vscode_1.ProgressLocation.Window, cancellable: params.cancellable, title: params.title }, async (progress, cancellationToken) => {\n // the progress as already been marked as done / canceled. Ignore begin call\n if (this._lspProgressDisposable === undefined) {\n return;\n }\n this._progress = progress;\n this._cancellationToken = cancellationToken;\n this._tokenDisposable = this._cancellationToken.onCancellationRequested(() => {\n this._client.sendNotification(vscode_languageserver_protocol_1.WorkDoneProgressCancelNotification.type, { token: this._token });\n });\n this.report(params);\n return new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n });\n }\n report(params) {\n if (this._infinite && Is.string(params.message)) {\n this._progress !== undefined && this._progress.report({ message: params.message });\n }\n else if (Is.number(params.percentage)) {\n const percentage = Math.max(0, Math.min(params.percentage, 100));\n const delta = Math.max(0, percentage - this._reported);\n this._reported += delta;\n this._progress !== undefined && this._progress.report({ message: params.message, increment: delta });\n }\n }\n cancel() {\n this.cleanup();\n if (this._reject !== undefined) {\n this._reject();\n this._resolve = undefined;\n this._reject = undefined;\n }\n }\n done() {\n this.cleanup();\n if (this._resolve !== undefined) {\n this._resolve();\n this._resolve = undefined;\n this._reject = undefined;\n }\n }\n cleanup() {\n if (this._lspProgressDisposable !== undefined) {\n this._lspProgressDisposable.dispose();\n this._lspProgressDisposable = undefined;\n }\n if (this._tokenDisposable !== undefined) {\n this._tokenDisposable.dispose();\n this._tokenDisposable = undefined;\n }\n this._progress = undefined;\n this._cancellationToken = undefined;\n }\n}\nexports.ProgressPart = ProgressPart;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolCallHierarchyItem extends code.CallHierarchyItem {\n constructor(kind, name, detail, uri, range, selectionRange, data) {\n super(kind, name, detail, uri, range, selectionRange);\n if (data !== undefined) {\n this.data = data;\n }\n }\n}\nexports.default = ProtocolCallHierarchyItem;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst vscode = require(\"vscode\");\nclass ProtocolCodeAction extends vscode.CodeAction {\n constructor(title, data) {\n super(title);\n this.data = data;\n }\n}\nexports.default = ProtocolCodeAction;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolCodeLens extends code.CodeLens {\n constructor(range) {\n super(range);\n }\n}\nexports.default = ProtocolCodeLens;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolCompletionItem extends code.CompletionItem {\n constructor(label) {\n super(label);\n }\n}\nexports.default = ProtocolCompletionItem;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConverter = void 0;\nconst code = require(\"vscode\");\nconst ls = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst async = require(\"./utils/async\");\nconst protocolCompletionItem_1 = require(\"./protocolCompletionItem\");\nconst protocolCodeLens_1 = require(\"./protocolCodeLens\");\nconst protocolDocumentLink_1 = require(\"./protocolDocumentLink\");\nconst protocolCodeAction_1 = require(\"./protocolCodeAction\");\nconst protocolDiagnostic_1 = require(\"./protocolDiagnostic\");\nconst protocolCallHierarchyItem_1 = require(\"./protocolCallHierarchyItem\");\nconst protocolTypeHierarchyItem_1 = require(\"./protocolTypeHierarchyItem\");\nconst protocolWorkspaceSymbol_1 = require(\"./protocolWorkspaceSymbol\");\nconst protocolInlayHint_1 = require(\"./protocolInlayHint\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nvar CodeBlock;\n(function (CodeBlock) {\n function is(value) {\n let candidate = value;\n return candidate && Is.string(candidate.language) && Is.string(candidate.value);\n }\n CodeBlock.is = is;\n})(CodeBlock || (CodeBlock = {}));\nfunction createConverter(uriConverter, trustMarkdown, supportHtml) {\n const nullConverter = (value) => code.Uri.parse(value);\n const _uriConverter = uriConverter || nullConverter;\n function asUri(value) {\n return _uriConverter(value);\n }\n function asDocumentSelector(selector) {\n const result = [];\n for (const filter of selector) {\n if (typeof filter === 'string') {\n result.push(filter);\n }\n else if (vscode_languageserver_protocol_1.NotebookCellTextDocumentFilter.is(filter)) {\n // We first need to check for the notebook cell filter since a TextDocumentFilter would\n // match both (e.g. the notebook is optional).\n if (typeof filter.notebook === 'string') {\n result.push({ notebookType: filter.notebook, language: filter.language });\n }\n else {\n const notebookType = filter.notebook.notebookType ?? '*';\n result.push({ notebookType: notebookType, scheme: filter.notebook.scheme, pattern: filter.notebook.pattern, language: filter.language });\n }\n }\n else if (vscode_languageserver_protocol_1.TextDocumentFilter.is(filter)) {\n result.push({ language: filter.language, scheme: filter.scheme, pattern: filter.pattern });\n }\n }\n return result;\n }\n async function asDiagnostics(diagnostics, token) {\n return async.map(diagnostics, asDiagnostic, token);\n }\n function asDiagnosticsSync(diagnostics) {\n const result = new Array(diagnostics.length);\n for (let i = 0; i < diagnostics.length; i++) {\n result[i] = asDiagnostic(diagnostics[i]);\n }\n return result;\n }\n function asDiagnostic(diagnostic) {\n let result = new protocolDiagnostic_1.ProtocolDiagnostic(asRange(diagnostic.range), diagnostic.message, asDiagnosticSeverity(diagnostic.severity), diagnostic.data);\n if (diagnostic.code !== undefined) {\n if (typeof diagnostic.code === 'string' || typeof diagnostic.code === 'number') {\n if (ls.CodeDescription.is(diagnostic.codeDescription)) {\n result.code = {\n value: diagnostic.code,\n target: asUri(diagnostic.codeDescription.href)\n };\n }\n else {\n result.code = diagnostic.code;\n }\n }\n else if (protocolDiagnostic_1.DiagnosticCode.is(diagnostic.code)) {\n // This is for backwards compatibility of a proposed API.\n // We should remove this at some point.\n result.hasDiagnosticCode = true;\n const diagnosticCode = diagnostic.code;\n result.code = {\n value: diagnosticCode.value,\n target: asUri(diagnosticCode.target)\n };\n }\n }\n if (diagnostic.source) {\n result.source = diagnostic.source;\n }\n if (diagnostic.relatedInformation) {\n result.relatedInformation = asRelatedInformation(diagnostic.relatedInformation);\n }\n if (Array.isArray(diagnostic.tags)) {\n result.tags = asDiagnosticTags(diagnostic.tags);\n }\n return result;\n }\n function asRelatedInformation(relatedInformation) {\n const result = new Array(relatedInformation.length);\n for (let i = 0; i < relatedInformation.length; i++) {\n const info = relatedInformation[i];\n result[i] = new code.DiagnosticRelatedInformation(asLocation(info.location), info.message);\n }\n return result;\n }\n function asDiagnosticTags(tags) {\n if (!tags) {\n return undefined;\n }\n let result = [];\n for (let tag of tags) {\n let converted = asDiagnosticTag(tag);\n if (converted !== undefined) {\n result.push(converted);\n }\n }\n return result.length > 0 ? result : undefined;\n }\n function asDiagnosticTag(tag) {\n switch (tag) {\n case ls.DiagnosticTag.Unnecessary:\n return code.DiagnosticTag.Unnecessary;\n case ls.DiagnosticTag.Deprecated:\n return code.DiagnosticTag.Deprecated;\n default:\n return undefined;\n }\n }\n function asPosition(value) {\n return value ? new code.Position(value.line, value.character) : undefined;\n }\n function asRange(value) {\n return value ? new code.Range(value.start.line, value.start.character, value.end.line, value.end.character) : undefined;\n }\n async function asRanges(items, token) {\n return async.map(items, (range) => {\n return new code.Range(range.start.line, range.start.character, range.end.line, range.end.character);\n }, token);\n }\n function asDiagnosticSeverity(value) {\n if (value === undefined || value === null) {\n return code.DiagnosticSeverity.Error;\n }\n switch (value) {\n case ls.DiagnosticSeverity.Error:\n return code.DiagnosticSeverity.Error;\n case ls.DiagnosticSeverity.Warning:\n return code.DiagnosticSeverity.Warning;\n case ls.DiagnosticSeverity.Information:\n return code.DiagnosticSeverity.Information;\n case ls.DiagnosticSeverity.Hint:\n return code.DiagnosticSeverity.Hint;\n }\n return code.DiagnosticSeverity.Error;\n }\n function asHoverContent(value) {\n if (Is.string(value)) {\n return asMarkdownString(value);\n }\n else if (CodeBlock.is(value)) {\n let result = asMarkdownString();\n return result.appendCodeblock(value.value, value.language);\n }\n else if (Array.isArray(value)) {\n let result = [];\n for (let element of value) {\n let item = asMarkdownString();\n if (CodeBlock.is(element)) {\n item.appendCodeblock(element.value, element.language);\n }\n else {\n item.appendMarkdown(element);\n }\n result.push(item);\n }\n return result;\n }\n else {\n return asMarkdownString(value);\n }\n }\n function asDocumentation(value) {\n if (Is.string(value)) {\n return value;\n }\n else {\n switch (value.kind) {\n case ls.MarkupKind.Markdown:\n return asMarkdownString(value.value);\n case ls.MarkupKind.PlainText:\n return value.value;\n default:\n return `Unsupported Markup content received. Kind is: ${value.kind}`;\n }\n }\n }\n function asMarkdownString(value) {\n let result;\n if (value === undefined || typeof value === 'string') {\n result = new code.MarkdownString(value);\n }\n else {\n switch (value.kind) {\n case ls.MarkupKind.Markdown:\n result = new code.MarkdownString(value.value);\n break;\n case ls.MarkupKind.PlainText:\n result = new code.MarkdownString();\n result.appendText(value.value);\n break;\n default:\n result = new code.MarkdownString();\n result.appendText(`Unsupported Markup content received. Kind is: ${value.kind}`);\n break;\n }\n }\n result.isTrusted = trustMarkdown;\n result.supportHtml = supportHtml;\n return result;\n }\n function asHover(hover) {\n if (!hover) {\n return undefined;\n }\n return new code.Hover(asHoverContent(hover.contents), asRange(hover.range));\n }\n async function asCompletionResult(value, allCommitCharacters, token) {\n if (!value) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return async.map(value, (item) => asCompletionItem(item, allCommitCharacters), token);\n }\n const list = value;\n const { defaultRange, commitCharacters } = getCompletionItemDefaults(list, allCommitCharacters);\n const converted = await async.map(list.items, (item) => {\n return asCompletionItem(item, commitCharacters, defaultRange, list.itemDefaults?.insertTextMode, list.itemDefaults?.insertTextFormat, list.itemDefaults?.data);\n }, token);\n return new code.CompletionList(converted, list.isIncomplete);\n }\n function getCompletionItemDefaults(list, allCommitCharacters) {\n const rangeDefaults = list.itemDefaults?.editRange;\n const commitCharacters = list.itemDefaults?.commitCharacters ?? allCommitCharacters;\n return ls.Range.is(rangeDefaults)\n ? { defaultRange: asRange(rangeDefaults), commitCharacters }\n : rangeDefaults !== undefined\n ? { defaultRange: { inserting: asRange(rangeDefaults.insert), replacing: asRange(rangeDefaults.replace) }, commitCharacters }\n : { defaultRange: undefined, commitCharacters };\n }\n function asCompletionItemKind(value) {\n // Protocol item kind is 1 based, codes item kind is zero based.\n if (ls.CompletionItemKind.Text <= value && value <= ls.CompletionItemKind.TypeParameter) {\n return [value - 1, undefined];\n }\n return [code.CompletionItemKind.Text, value];\n }\n function asCompletionItemTag(tag) {\n switch (tag) {\n case ls.CompletionItemTag.Deprecated:\n return code.CompletionItemTag.Deprecated;\n }\n return undefined;\n }\n function asCompletionItemTags(tags) {\n if (tags === undefined || tags === null) {\n return [];\n }\n const result = [];\n for (const tag of tags) {\n const converted = asCompletionItemTag(tag);\n if (converted !== undefined) {\n result.push(converted);\n }\n }\n return result;\n }\n function asCompletionItem(item, defaultCommitCharacters, defaultRange, defaultInsertTextMode, defaultInsertTextFormat, defaultData) {\n const tags = asCompletionItemTags(item.tags);\n const label = asCompletionItemLabel(item);\n const result = new protocolCompletionItem_1.default(label);\n if (item.detail) {\n result.detail = item.detail;\n }\n if (item.documentation) {\n result.documentation = asDocumentation(item.documentation);\n result.documentationFormat = Is.string(item.documentation) ? '$string' : item.documentation.kind;\n }\n if (item.filterText) {\n result.filterText = item.filterText;\n }\n const insertText = asCompletionInsertText(item, defaultRange, defaultInsertTextFormat);\n if (insertText) {\n result.insertText = insertText.text;\n result.range = insertText.range;\n result.fromEdit = insertText.fromEdit;\n }\n if (Is.number(item.kind)) {\n let [itemKind, original] = asCompletionItemKind(item.kind);\n result.kind = itemKind;\n if (original) {\n result.originalItemKind = original;\n }\n }\n if (item.sortText) {\n result.sortText = item.sortText;\n }\n if (item.additionalTextEdits) {\n result.additionalTextEdits = asTextEditsSync(item.additionalTextEdits);\n }\n const commitCharacters = item.commitCharacters !== undefined\n ? Is.stringArray(item.commitCharacters) ? item.commitCharacters : undefined\n : defaultCommitCharacters;\n if (commitCharacters) {\n result.commitCharacters = commitCharacters.slice();\n }\n if (item.command) {\n result.command = asCommand(item.command);\n }\n if (item.deprecated === true || item.deprecated === false) {\n result.deprecated = item.deprecated;\n if (item.deprecated === true) {\n tags.push(code.CompletionItemTag.Deprecated);\n }\n }\n if (item.preselect === true || item.preselect === false) {\n result.preselect = item.preselect;\n }\n const data = item.data ?? defaultData;\n if (data !== undefined) {\n result.data = data;\n }\n if (tags.length > 0) {\n result.tags = tags;\n }\n const insertTextMode = item.insertTextMode ?? defaultInsertTextMode;\n if (insertTextMode !== undefined) {\n result.insertTextMode = insertTextMode;\n if (insertTextMode === ls.InsertTextMode.asIs) {\n result.keepWhitespace = true;\n }\n }\n return result;\n }\n function asCompletionItemLabel(item) {\n if (ls.CompletionItemLabelDetails.is(item.labelDetails)) {\n return {\n label: item.label,\n detail: item.labelDetails.detail,\n description: item.labelDetails.description\n };\n }\n else {\n return item.label;\n }\n }\n function asCompletionInsertText(item, defaultRange, defaultInsertTextFormat) {\n const insertTextFormat = item.insertTextFormat ?? defaultInsertTextFormat;\n if (item.textEdit !== undefined || defaultRange !== undefined) {\n const [range, newText] = item.textEdit !== undefined\n ? getCompletionRangeAndText(item.textEdit)\n : [defaultRange, item.textEditText ?? item.label];\n if (insertTextFormat === ls.InsertTextFormat.Snippet) {\n return { text: new code.SnippetString(newText), range: range, fromEdit: true };\n }\n else {\n return { text: newText, range: range, fromEdit: true };\n }\n }\n else if (item.insertText) {\n if (insertTextFormat === ls.InsertTextFormat.Snippet) {\n return { text: new code.SnippetString(item.insertText), fromEdit: false };\n }\n else {\n return { text: item.insertText, fromEdit: false };\n }\n }\n else {\n return undefined;\n }\n }\n function getCompletionRangeAndText(value) {\n if (ls.InsertReplaceEdit.is(value)) {\n return [{ inserting: asRange(value.insert), replacing: asRange(value.replace) }, value.newText];\n }\n else {\n return [asRange(value.range), value.newText];\n }\n }\n function asTextEdit(edit) {\n if (!edit) {\n return undefined;\n }\n return new code.TextEdit(asRange(edit.range), edit.newText);\n }\n async function asTextEdits(items, token) {\n if (!items) {\n return undefined;\n }\n return async.map(items, asTextEdit, token);\n }\n function asTextEditsSync(items) {\n if (!items) {\n return undefined;\n }\n const result = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n result[i] = asTextEdit(items[i]);\n }\n return result;\n }\n async function asSignatureHelp(item, token) {\n if (!item) {\n return undefined;\n }\n let result = new code.SignatureHelp();\n if (Is.number(item.activeSignature)) {\n result.activeSignature = item.activeSignature;\n }\n else {\n // activeSignature was optional in the past\n result.activeSignature = 0;\n }\n if (Is.number(item.activeParameter)) {\n result.activeParameter = item.activeParameter;\n }\n else {\n // activeParameter was optional in the past\n result.activeParameter = 0;\n }\n if (item.signatures) {\n result.signatures = await asSignatureInformations(item.signatures, token);\n }\n return result;\n }\n async function asSignatureInformations(items, token) {\n return async.mapAsync(items, asSignatureInformation, token);\n }\n async function asSignatureInformation(item, token) {\n let result = new code.SignatureInformation(item.label);\n if (item.documentation !== undefined) {\n result.documentation = asDocumentation(item.documentation);\n }\n if (item.parameters !== undefined) {\n result.parameters = await asParameterInformations(item.parameters, token);\n }\n if (item.activeParameter !== undefined) {\n result.activeParameter = item.activeParameter;\n }\n {\n return result;\n }\n }\n function asParameterInformations(items, token) {\n return async.map(items, asParameterInformation, token);\n }\n function asParameterInformation(item) {\n let result = new code.ParameterInformation(item.label);\n if (item.documentation) {\n result.documentation = asDocumentation(item.documentation);\n }\n return result;\n }\n function asLocation(item) {\n return item ? new code.Location(_uriConverter(item.uri), asRange(item.range)) : undefined;\n }\n async function asDeclarationResult(item, token) {\n if (!item) {\n return undefined;\n }\n return asLocationResult(item, token);\n }\n async function asDefinitionResult(item, token) {\n if (!item) {\n return undefined;\n }\n return asLocationResult(item, token);\n }\n function asLocationLink(item) {\n if (!item) {\n return undefined;\n }\n let result = {\n targetUri: _uriConverter(item.targetUri),\n targetRange: asRange(item.targetRange),\n originSelectionRange: asRange(item.originSelectionRange),\n targetSelectionRange: asRange(item.targetSelectionRange)\n };\n if (!result.targetSelectionRange) {\n throw new Error(`targetSelectionRange must not be undefined or null`);\n }\n return result;\n }\n async function asLocationResult(item, token) {\n if (!item) {\n return undefined;\n }\n if (Is.array(item)) {\n if (item.length === 0) {\n return [];\n }\n else if (ls.LocationLink.is(item[0])) {\n const links = item;\n return async.map(links, asLocationLink, token);\n }\n else {\n const locations = item;\n return async.map(locations, asLocation, token);\n }\n }\n else if (ls.LocationLink.is(item)) {\n return [asLocationLink(item)];\n }\n else {\n return asLocation(item);\n }\n }\n async function asReferences(values, token) {\n if (!values) {\n return undefined;\n }\n return async.map(values, asLocation, token);\n }\n async function asDocumentHighlights(values, token) {\n if (!values) {\n return undefined;\n }\n return async.map(values, asDocumentHighlight, token);\n }\n function asDocumentHighlight(item) {\n let result = new code.DocumentHighlight(asRange(item.range));\n if (Is.number(item.kind)) {\n result.kind = asDocumentHighlightKind(item.kind);\n }\n return result;\n }\n function asDocumentHighlightKind(item) {\n switch (item) {\n case ls.DocumentHighlightKind.Text:\n return code.DocumentHighlightKind.Text;\n case ls.DocumentHighlightKind.Read:\n return code.DocumentHighlightKind.Read;\n case ls.DocumentHighlightKind.Write:\n return code.DocumentHighlightKind.Write;\n }\n return code.DocumentHighlightKind.Text;\n }\n async function asSymbolInformations(values, token) {\n if (!values) {\n return undefined;\n }\n return async.map(values, asSymbolInformation, token);\n }\n function asSymbolKind(item) {\n if (item <= ls.SymbolKind.TypeParameter) {\n // Symbol kind is one based in the protocol and zero based in code.\n return item - 1;\n }\n return code.SymbolKind.Property;\n }\n function asSymbolTag(value) {\n switch (value) {\n case ls.SymbolTag.Deprecated:\n return code.SymbolTag.Deprecated;\n default:\n return undefined;\n }\n }\n function asSymbolTags(items) {\n if (items === undefined || items === null) {\n return undefined;\n }\n const result = [];\n for (const item of items) {\n const converted = asSymbolTag(item);\n if (converted !== undefined) {\n result.push(converted);\n }\n }\n return result.length === 0 ? undefined : result;\n }\n function asSymbolInformation(item) {\n const data = item.data;\n const location = item.location;\n const result = location.range === undefined || data !== undefined\n ? new protocolWorkspaceSymbol_1.default(item.name, asSymbolKind(item.kind), item.containerName ?? '', location.range === undefined ? _uriConverter(location.uri) : new code.Location(_uriConverter(item.location.uri), asRange(location.range)), data)\n : new code.SymbolInformation(item.name, asSymbolKind(item.kind), item.containerName ?? '', new code.Location(_uriConverter(item.location.uri), asRange(location.range)));\n fillTags(result, item);\n return result;\n }\n async function asDocumentSymbols(values, token) {\n if (values === undefined || values === null) {\n return undefined;\n }\n return async.map(values, asDocumentSymbol, token);\n }\n function asDocumentSymbol(value) {\n let result = new code.DocumentSymbol(value.name, value.detail || '', asSymbolKind(value.kind), asRange(value.range), asRange(value.selectionRange));\n fillTags(result, value);\n if (value.children !== undefined && value.children.length > 0) {\n let children = [];\n for (let child of value.children) {\n children.push(asDocumentSymbol(child));\n }\n result.children = children;\n }\n return result;\n }\n function fillTags(result, value) {\n result.tags = asSymbolTags(value.tags);\n if (value.deprecated) {\n if (!result.tags) {\n result.tags = [code.SymbolTag.Deprecated];\n }\n else {\n if (!result.tags.includes(code.SymbolTag.Deprecated)) {\n result.tags = result.tags.concat(code.SymbolTag.Deprecated);\n }\n }\n }\n }\n function asCommand(item) {\n let result = { title: item.title, command: item.command };\n if (item.arguments) {\n result.arguments = item.arguments;\n }\n return result;\n }\n async function asCommands(items, token) {\n if (!items) {\n return undefined;\n }\n return async.map(items, asCommand, token);\n }\n const kindMapping = new Map();\n kindMapping.set(ls.CodeActionKind.Empty, code.CodeActionKind.Empty);\n kindMapping.set(ls.CodeActionKind.QuickFix, code.CodeActionKind.QuickFix);\n kindMapping.set(ls.CodeActionKind.Refactor, code.CodeActionKind.Refactor);\n kindMapping.set(ls.CodeActionKind.RefactorExtract, code.CodeActionKind.RefactorExtract);\n kindMapping.set(ls.CodeActionKind.RefactorInline, code.CodeActionKind.RefactorInline);\n kindMapping.set(ls.CodeActionKind.RefactorRewrite, code.CodeActionKind.RefactorRewrite);\n kindMapping.set(ls.CodeActionKind.Source, code.CodeActionKind.Source);\n kindMapping.set(ls.CodeActionKind.SourceOrganizeImports, code.CodeActionKind.SourceOrganizeImports);\n function asCodeActionKind(item) {\n if (item === undefined || item === null) {\n return undefined;\n }\n let result = kindMapping.get(item);\n if (result) {\n return result;\n }\n let parts = item.split('.');\n result = code.CodeActionKind.Empty;\n for (let part of parts) {\n result = result.append(part);\n }\n return result;\n }\n function asCodeActionKinds(items) {\n if (items === undefined || items === null) {\n return undefined;\n }\n return items.map(kind => asCodeActionKind(kind));\n }\n async function asCodeAction(item, token) {\n if (item === undefined || item === null) {\n return undefined;\n }\n let result = new protocolCodeAction_1.default(item.title, item.data);\n if (item.kind !== undefined) {\n result.kind = asCodeActionKind(item.kind);\n }\n if (item.diagnostics !== undefined) {\n result.diagnostics = asDiagnosticsSync(item.diagnostics);\n }\n if (item.edit !== undefined) {\n result.edit = await asWorkspaceEdit(item.edit, token);\n }\n if (item.command !== undefined) {\n result.command = asCommand(item.command);\n }\n if (item.isPreferred !== undefined) {\n result.isPreferred = item.isPreferred;\n }\n if (item.disabled !== undefined) {\n result.disabled = { reason: item.disabled.reason };\n }\n return result;\n }\n function asCodeActionResult(items, token) {\n return async.mapAsync(items, async (item) => {\n if (ls.Command.is(item)) {\n return asCommand(item);\n }\n else {\n return asCodeAction(item, token);\n }\n }, token);\n }\n function asCodeLens(item) {\n if (!item) {\n return undefined;\n }\n let result = new protocolCodeLens_1.default(asRange(item.range));\n if (item.command) {\n result.command = asCommand(item.command);\n }\n if (item.data !== undefined && item.data !== null) {\n result.data = item.data;\n }\n return result;\n }\n async function asCodeLenses(items, token) {\n if (!items) {\n return undefined;\n }\n return async.map(items, asCodeLens, token);\n }\n async function asWorkspaceEdit(item, token) {\n if (!item) {\n return undefined;\n }\n const sharedMetadata = new Map();\n if (item.changeAnnotations !== undefined) {\n const changeAnnotations = item.changeAnnotations;\n await async.forEach(Object.keys(changeAnnotations), (key) => {\n const metaData = asWorkspaceEditEntryMetadata(changeAnnotations[key]);\n sharedMetadata.set(key, metaData);\n }, token);\n }\n const asMetadata = (annotation) => {\n if (annotation === undefined) {\n return undefined;\n }\n else {\n return sharedMetadata.get(annotation);\n }\n };\n const result = new code.WorkspaceEdit();\n if (item.documentChanges) {\n const documentChanges = item.documentChanges;\n await async.forEach(documentChanges, (change) => {\n if (ls.CreateFile.is(change)) {\n result.createFile(_uriConverter(change.uri), change.options, asMetadata(change.annotationId));\n }\n else if (ls.RenameFile.is(change)) {\n result.renameFile(_uriConverter(change.oldUri), _uriConverter(change.newUri), change.options, asMetadata(change.annotationId));\n }\n else if (ls.DeleteFile.is(change)) {\n result.deleteFile(_uriConverter(change.uri), change.options, asMetadata(change.annotationId));\n }\n else if (ls.TextDocumentEdit.is(change)) {\n const uri = _uriConverter(change.textDocument.uri);\n for (const edit of change.edits) {\n if (ls.AnnotatedTextEdit.is(edit)) {\n result.replace(uri, asRange(edit.range), edit.newText, asMetadata(edit.annotationId));\n }\n else {\n result.replace(uri, asRange(edit.range), edit.newText);\n }\n }\n }\n else {\n throw new Error(`Unknown workspace edit change received:\\n${JSON.stringify(change, undefined, 4)}`);\n }\n }, token);\n }\n else if (item.changes) {\n const changes = item.changes;\n await async.forEach(Object.keys(changes), (key) => {\n result.set(_uriConverter(key), asTextEditsSync(changes[key]));\n }, token);\n }\n return result;\n }\n function asWorkspaceEditEntryMetadata(annotation) {\n if (annotation === undefined) {\n return undefined;\n }\n return { label: annotation.label, needsConfirmation: !!annotation.needsConfirmation, description: annotation.description };\n }\n function asDocumentLink(item) {\n let range = asRange(item.range);\n let target = item.target ? asUri(item.target) : undefined;\n // target must be optional in DocumentLink\n let link = new protocolDocumentLink_1.default(range, target);\n if (item.tooltip !== undefined) {\n link.tooltip = item.tooltip;\n }\n if (item.data !== undefined && item.data !== null) {\n link.data = item.data;\n }\n return link;\n }\n async function asDocumentLinks(items, token) {\n if (!items) {\n return undefined;\n }\n return async.map(items, asDocumentLink, token);\n }\n function asColor(color) {\n return new code.Color(color.red, color.green, color.blue, color.alpha);\n }\n function asColorInformation(ci) {\n return new code.ColorInformation(asRange(ci.range), asColor(ci.color));\n }\n async function asColorInformations(colorInformation, token) {\n if (!colorInformation) {\n return undefined;\n }\n return async.map(colorInformation, asColorInformation, token);\n }\n function asColorPresentation(cp) {\n let presentation = new code.ColorPresentation(cp.label);\n presentation.additionalTextEdits = asTextEditsSync(cp.additionalTextEdits);\n if (cp.textEdit) {\n presentation.textEdit = asTextEdit(cp.textEdit);\n }\n return presentation;\n }\n async function asColorPresentations(colorPresentations, token) {\n if (!colorPresentations) {\n return undefined;\n }\n return async.map(colorPresentations, asColorPresentation, token);\n }\n function asFoldingRangeKind(kind) {\n if (kind) {\n switch (kind) {\n case ls.FoldingRangeKind.Comment:\n return code.FoldingRangeKind.Comment;\n case ls.FoldingRangeKind.Imports:\n return code.FoldingRangeKind.Imports;\n case ls.FoldingRangeKind.Region:\n return code.FoldingRangeKind.Region;\n }\n }\n return undefined;\n }\n function asFoldingRange(r) {\n return new code.FoldingRange(r.startLine, r.endLine, asFoldingRangeKind(r.kind));\n }\n async function asFoldingRanges(foldingRanges, token) {\n if (!foldingRanges) {\n return undefined;\n }\n return async.map(foldingRanges, asFoldingRange, token);\n }\n function asSelectionRange(selectionRange) {\n return new code.SelectionRange(asRange(selectionRange.range), selectionRange.parent ? asSelectionRange(selectionRange.parent) : undefined);\n }\n async function asSelectionRanges(selectionRanges, token) {\n if (!Array.isArray(selectionRanges)) {\n return [];\n }\n return async.map(selectionRanges, asSelectionRange, token);\n }\n function asInlineValue(inlineValue) {\n if (ls.InlineValueText.is(inlineValue)) {\n return new code.InlineValueText(asRange(inlineValue.range), inlineValue.text);\n }\n else if (ls.InlineValueVariableLookup.is(inlineValue)) {\n return new code.InlineValueVariableLookup(asRange(inlineValue.range), inlineValue.variableName, inlineValue.caseSensitiveLookup);\n }\n else {\n return new code.InlineValueEvaluatableExpression(asRange(inlineValue.range), inlineValue.expression);\n }\n }\n async function asInlineValues(inlineValues, token) {\n if (!Array.isArray(inlineValues)) {\n return [];\n }\n return async.map(inlineValues, asInlineValue, token);\n }\n async function asInlayHint(value, token) {\n const label = typeof value.label === 'string'\n ? value.label\n : await async.map(value.label, asInlayHintLabelPart, token);\n const result = new protocolInlayHint_1.default(asPosition(value.position), label);\n if (value.kind !== undefined) {\n result.kind = value.kind;\n }\n if (value.textEdits !== undefined) {\n result.textEdits = await asTextEdits(value.textEdits, token);\n }\n if (value.tooltip !== undefined) {\n result.tooltip = asTooltip(value.tooltip);\n }\n if (value.paddingLeft !== undefined) {\n result.paddingLeft = value.paddingLeft;\n }\n if (value.paddingRight !== undefined) {\n result.paddingRight = value.paddingRight;\n }\n if (value.data !== undefined) {\n result.data = value.data;\n }\n return result;\n }\n function asInlayHintLabelPart(part) {\n const result = new code.InlayHintLabelPart(part.value);\n if (part.location !== undefined) {\n result.location = asLocation(part.location);\n }\n if (part.tooltip !== undefined) {\n result.tooltip = asTooltip(part.tooltip);\n }\n if (part.command !== undefined) {\n result.command = asCommand(part.command);\n }\n return result;\n }\n function asTooltip(value) {\n if (typeof value === 'string') {\n return value;\n }\n return asMarkdownString(value);\n }\n async function asInlayHints(values, token) {\n if (!Array.isArray(values)) {\n return undefined;\n }\n return async.mapAsync(values, asInlayHint, token);\n }\n function asCallHierarchyItem(item) {\n if (item === null) {\n return undefined;\n }\n const result = new protocolCallHierarchyItem_1.default(asSymbolKind(item.kind), item.name, item.detail || '', asUri(item.uri), asRange(item.range), asRange(item.selectionRange), item.data);\n if (item.tags !== undefined) {\n result.tags = asSymbolTags(item.tags);\n }\n return result;\n }\n async function asCallHierarchyItems(items, token) {\n if (items === null) {\n return undefined;\n }\n return async.map(items, asCallHierarchyItem, token);\n }\n async function asCallHierarchyIncomingCall(item, token) {\n return new code.CallHierarchyIncomingCall(asCallHierarchyItem(item.from), await asRanges(item.fromRanges, token));\n }\n async function asCallHierarchyIncomingCalls(items, token) {\n if (items === null) {\n return undefined;\n }\n return async.mapAsync(items, asCallHierarchyIncomingCall, token);\n }\n async function asCallHierarchyOutgoingCall(item, token) {\n return new code.CallHierarchyOutgoingCall(asCallHierarchyItem(item.to), await asRanges(item.fromRanges, token));\n }\n async function asCallHierarchyOutgoingCalls(items, token) {\n if (items === null) {\n return undefined;\n }\n return async.mapAsync(items, asCallHierarchyOutgoingCall, token);\n }\n async function asSemanticTokens(value, _token) {\n if (value === undefined || value === null) {\n return undefined;\n }\n return new code.SemanticTokens(new Uint32Array(value.data), value.resultId);\n }\n function asSemanticTokensEdit(value) {\n return new code.SemanticTokensEdit(value.start, value.deleteCount, value.data !== undefined ? new Uint32Array(value.data) : undefined);\n }\n async function asSemanticTokensEdits(value, _token) {\n if (value === undefined || value === null) {\n return undefined;\n }\n return new code.SemanticTokensEdits(value.edits.map(asSemanticTokensEdit), value.resultId);\n }\n function asSemanticTokensLegend(value) {\n return value;\n }\n async function asLinkedEditingRanges(value, token) {\n if (value === null || value === undefined) {\n return undefined;\n }\n return new code.LinkedEditingRanges(await asRanges(value.ranges, token), asRegularExpression(value.wordPattern));\n }\n function asRegularExpression(value) {\n if (value === null || value === undefined) {\n return undefined;\n }\n return new RegExp(value);\n }\n function asTypeHierarchyItem(item) {\n if (item === null) {\n return undefined;\n }\n let result = new protocolTypeHierarchyItem_1.default(asSymbolKind(item.kind), item.name, item.detail || '', asUri(item.uri), asRange(item.range), asRange(item.selectionRange), item.data);\n if (item.tags !== undefined) {\n result.tags = asSymbolTags(item.tags);\n }\n return result;\n }\n async function asTypeHierarchyItems(items, token) {\n if (items === null) {\n return undefined;\n }\n return async.map(items, asTypeHierarchyItem, token);\n }\n function asGlobPattern(pattern) {\n if (Is.string(pattern)) {\n return pattern;\n }\n if (ls.RelativePattern.is(pattern)) {\n if (ls.URI.is(pattern.baseUri)) {\n return new code.RelativePattern(asUri(pattern.baseUri), pattern.pattern);\n }\n else if (ls.WorkspaceFolder.is(pattern.baseUri)) {\n const workspaceFolder = code.workspace.getWorkspaceFolder(asUri(pattern.baseUri.uri));\n return workspaceFolder !== undefined ? new code.RelativePattern(workspaceFolder, pattern.pattern) : undefined;\n }\n }\n return undefined;\n }\n return {\n asUri,\n asDocumentSelector,\n asDiagnostics,\n asDiagnostic,\n asRange,\n asRanges,\n asPosition,\n asDiagnosticSeverity,\n asDiagnosticTag,\n asHover,\n asCompletionResult,\n asCompletionItem,\n asTextEdit,\n asTextEdits,\n asSignatureHelp,\n asSignatureInformations,\n asSignatureInformation,\n asParameterInformations,\n asParameterInformation,\n asDeclarationResult,\n asDefinitionResult,\n asLocation,\n asReferences,\n asDocumentHighlights,\n asDocumentHighlight,\n asDocumentHighlightKind,\n asSymbolKind,\n asSymbolTag,\n asSymbolTags,\n asSymbolInformations,\n asSymbolInformation,\n asDocumentSymbols,\n asDocumentSymbol,\n asCommand,\n asCommands,\n asCodeAction,\n asCodeActionKind,\n asCodeActionKinds,\n asCodeActionResult,\n asCodeLens,\n asCodeLenses,\n asWorkspaceEdit,\n asDocumentLink,\n asDocumentLinks,\n asFoldingRangeKind,\n asFoldingRange,\n asFoldingRanges,\n asColor,\n asColorInformation,\n asColorInformations,\n asColorPresentation,\n asColorPresentations,\n asSelectionRange,\n asSelectionRanges,\n asInlineValue,\n asInlineValues,\n asInlayHint,\n asInlayHints,\n asSemanticTokensLegend,\n asSemanticTokens,\n asSemanticTokensEdit,\n asSemanticTokensEdits,\n asCallHierarchyItem,\n asCallHierarchyItems,\n asCallHierarchyIncomingCall,\n asCallHierarchyIncomingCalls,\n asCallHierarchyOutgoingCall,\n asCallHierarchyOutgoingCalls,\n asLinkedEditingRanges: asLinkedEditingRanges,\n asTypeHierarchyItem,\n asTypeHierarchyItems,\n asGlobPattern\n };\n}\nexports.createConverter = createConverter;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolDiagnostic = exports.DiagnosticCode = void 0;\nconst vscode = require(\"vscode\");\nconst Is = require(\"./utils/is\");\nvar DiagnosticCode;\n(function (DiagnosticCode) {\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null && (Is.number(candidate.value) || Is.string(candidate.value)) && Is.string(candidate.target);\n }\n DiagnosticCode.is = is;\n})(DiagnosticCode = exports.DiagnosticCode || (exports.DiagnosticCode = {}));\nclass ProtocolDiagnostic extends vscode.Diagnostic {\n constructor(range, message, severity, data) {\n super(range, message, severity);\n this.data = data;\n this.hasDiagnosticCode = false;\n }\n}\nexports.ProtocolDiagnostic = ProtocolDiagnostic;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolDocumentLink extends code.DocumentLink {\n constructor(range, target) {\n super(range, target);\n }\n}\nexports.default = ProtocolDocumentLink;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolInlayHint extends code.InlayHint {\n constructor(position, label, kind) {\n super(position, label, kind);\n }\n}\nexports.default = ProtocolInlayHint;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolTypeHierarchyItem extends code.TypeHierarchyItem {\n constructor(kind, name, detail, uri, range, selectionRange, data) {\n super(kind, name, detail, uri, range, selectionRange);\n if (data !== undefined) {\n this.data = data;\n }\n }\n}\nexports.default = ProtocolTypeHierarchyItem;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass WorkspaceSymbol extends code.SymbolInformation {\n constructor(name, kind, containerName, locationOrUri, data) {\n const hasRange = !(locationOrUri instanceof code.Uri);\n super(name, kind, containerName, hasRange ? locationOrUri : new code.Location(locationOrUri, new code.Range(0, 0, 0, 0)));\n this.hasRange = hasRange;\n if (data !== undefined) {\n this.data = data;\n }\n }\n}\nexports.default = WorkspaceSymbol;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReferencesFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass ReferencesFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.ReferencesRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'references').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.referencesProvider);\n if (!options) {\n return;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideReferences: (document, position, options, token) => {\n const client = this._client;\n const _providerReferences = (document, position, options, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, client.code2ProtocolConverter.asReferenceParams(document, position, options), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asReferences(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideReferences\n ? middleware.provideReferences(document, position, options, token, _providerReferences)\n : _providerReferences(document, position, options, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerReferenceProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.ReferencesFeature = ReferencesFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RenameFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst Is = require(\"./utils/is\");\nconst features_1 = require(\"./features\");\nclass RenameFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.RenameRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let rename = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'rename');\n rename.dynamicRegistration = true;\n rename.prepareSupport = true;\n rename.prepareSupportDefaultBehavior = vscode_languageserver_protocol_1.PrepareSupportDefaultBehavior.Identifier;\n rename.honorsChangeAnnotations = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.renameProvider);\n if (!options) {\n return;\n }\n if (Is.boolean(capabilities.renameProvider)) {\n options.prepareProvider = false;\n }\n this.register({ id: UUID.generateUuid(), registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideRenameEdits: (document, position, newName, token) => {\n const client = this._client;\n const provideRenameEdits = (document, position, newName, token) => {\n let params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n position: client.code2ProtocolConverter.asPosition(position),\n newName: newName\n };\n return client.sendRequest(vscode_languageserver_protocol_1.RenameRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asWorkspaceEdit(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.RenameRequest.type, token, error, null, false);\n });\n };\n const middleware = client.middleware;\n return middleware.provideRenameEdits\n ? middleware.provideRenameEdits(document, position, newName, token, provideRenameEdits)\n : provideRenameEdits(document, position, newName, token);\n },\n prepareRename: options.prepareProvider\n ? (document, position, token) => {\n const client = this._client;\n const prepareRename = (document, position, token) => {\n let params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n position: client.code2ProtocolConverter.asPosition(position),\n };\n return client.sendRequest(vscode_languageserver_protocol_1.PrepareRenameRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n if (vscode_languageserver_protocol_1.Range.is(result)) {\n return client.protocol2CodeConverter.asRange(result);\n }\n else if (this.isDefaultBehavior(result)) {\n return result.defaultBehavior === true\n ? null\n : Promise.reject(new Error(`The element can't be renamed.`));\n }\n else if (result && vscode_languageserver_protocol_1.Range.is(result.range)) {\n return {\n range: client.protocol2CodeConverter.asRange(result.range),\n placeholder: result.placeholder\n };\n }\n // To cancel the rename vscode API expects a rejected promise.\n return Promise.reject(new Error(`The element can't be renamed.`));\n }, (error) => {\n if (typeof error.message === 'string') {\n throw new Error(error.message);\n }\n else {\n throw new Error(`The element can't be renamed.`);\n }\n });\n };\n const middleware = client.middleware;\n return middleware.prepareRename\n ? middleware.prepareRename(document, position, token, prepareRename)\n : prepareRename(document, position, token);\n }\n : undefined\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerRenameProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n isDefaultBehavior(value) {\n const candidate = value;\n return candidate && Is.boolean(candidate.defaultBehavior);\n }\n}\nexports.RenameFeature = RenameFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectionRangeFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass SelectionRangeFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.SelectionRangeRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'selectionRange');\n capability.dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const [id, options] = this.getRegistration(documentSelector, capabilities.selectionRangeProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideSelectionRanges: (document, positions, token) => {\n const client = this._client;\n const provideSelectionRanges = async (document, positions, token) => {\n const requestParams = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n positions: await client.code2ProtocolConverter.asPositions(positions, token)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, requestParams, token).then((ranges) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asSelectionRanges(ranges, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideSelectionRanges\n ? middleware.provideSelectionRanges(document, positions, token, provideSelectionRanges)\n : provideSelectionRanges(document, positions, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerSelectionRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.SelectionRangeFeature = SelectionRangeFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SemanticTokensFeature = void 0;\nconst vscode = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst Is = require(\"./utils/is\");\nclass SemanticTokensFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.SemanticTokensRegistrationType.type);\n }\n fillClientCapabilities(capabilities) {\n const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'semanticTokens');\n capability.dynamicRegistration = true;\n capability.tokenTypes = [\n vscode_languageserver_protocol_1.SemanticTokenTypes.namespace,\n vscode_languageserver_protocol_1.SemanticTokenTypes.type,\n vscode_languageserver_protocol_1.SemanticTokenTypes.class,\n vscode_languageserver_protocol_1.SemanticTokenTypes.enum,\n vscode_languageserver_protocol_1.SemanticTokenTypes.interface,\n vscode_languageserver_protocol_1.SemanticTokenTypes.struct,\n vscode_languageserver_protocol_1.SemanticTokenTypes.typeParameter,\n vscode_languageserver_protocol_1.SemanticTokenTypes.parameter,\n vscode_languageserver_protocol_1.SemanticTokenTypes.variable,\n vscode_languageserver_protocol_1.SemanticTokenTypes.property,\n vscode_languageserver_protocol_1.SemanticTokenTypes.enumMember,\n vscode_languageserver_protocol_1.SemanticTokenTypes.event,\n vscode_languageserver_protocol_1.SemanticTokenTypes.function,\n vscode_languageserver_protocol_1.SemanticTokenTypes.method,\n vscode_languageserver_protocol_1.SemanticTokenTypes.macro,\n vscode_languageserver_protocol_1.SemanticTokenTypes.keyword,\n vscode_languageserver_protocol_1.SemanticTokenTypes.modifier,\n vscode_languageserver_protocol_1.SemanticTokenTypes.comment,\n vscode_languageserver_protocol_1.SemanticTokenTypes.string,\n vscode_languageserver_protocol_1.SemanticTokenTypes.number,\n vscode_languageserver_protocol_1.SemanticTokenTypes.regexp,\n vscode_languageserver_protocol_1.SemanticTokenTypes.operator,\n vscode_languageserver_protocol_1.SemanticTokenTypes.decorator\n ];\n capability.tokenModifiers = [\n vscode_languageserver_protocol_1.SemanticTokenModifiers.declaration,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.definition,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.readonly,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.static,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.deprecated,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.abstract,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.async,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.modification,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.documentation,\n vscode_languageserver_protocol_1.SemanticTokenModifiers.defaultLibrary\n ];\n capability.formats = [vscode_languageserver_protocol_1.TokenFormat.Relative];\n capability.requests = {\n range: true,\n full: {\n delta: true\n }\n };\n capability.multilineTokenSupport = false;\n capability.overlappingTokenSupport = false;\n capability.serverCancelSupport = true;\n capability.augmentsSyntaxTokens = true;\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'semanticTokens').refreshSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.SemanticTokensRefreshRequest.type, async () => {\n for (const provider of this.getAllProviders()) {\n provider.onDidChangeSemanticTokensEmitter.fire();\n }\n });\n const [id, options] = this.getRegistration(documentSelector, capabilities.semanticTokensProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const fullProvider = Is.boolean(options.full) ? options.full : options.full !== undefined;\n const hasEditProvider = options.full !== undefined && typeof options.full !== 'boolean' && options.full.delta === true;\n const eventEmitter = new vscode.EventEmitter();\n const documentProvider = fullProvider\n ? {\n onDidChangeSemanticTokens: eventEmitter.event,\n provideDocumentSemanticTokens: (document, token) => {\n const client = this._client;\n const middleware = client.middleware;\n const provideDocumentSemanticTokens = (document, token) => {\n const params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.SemanticTokensRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asSemanticTokens(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.SemanticTokensRequest.type, token, error, null);\n });\n };\n return middleware.provideDocumentSemanticTokens\n ? middleware.provideDocumentSemanticTokens(document, token, provideDocumentSemanticTokens)\n : provideDocumentSemanticTokens(document, token);\n },\n provideDocumentSemanticTokensEdits: hasEditProvider\n ? (document, previousResultId, token) => {\n const client = this._client;\n const middleware = client.middleware;\n const provideDocumentSemanticTokensEdits = (document, previousResultId, token) => {\n const params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n previousResultId\n };\n return client.sendRequest(vscode_languageserver_protocol_1.SemanticTokensDeltaRequest.type, params, token).then(async (result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n if (vscode_languageserver_protocol_1.SemanticTokens.is(result)) {\n return await client.protocol2CodeConverter.asSemanticTokens(result, token);\n }\n else {\n return await client.protocol2CodeConverter.asSemanticTokensEdits(result, token);\n }\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.SemanticTokensDeltaRequest.type, token, error, null);\n });\n };\n return middleware.provideDocumentSemanticTokensEdits\n ? middleware.provideDocumentSemanticTokensEdits(document, previousResultId, token, provideDocumentSemanticTokensEdits)\n : provideDocumentSemanticTokensEdits(document, previousResultId, token);\n }\n : undefined\n }\n : undefined;\n const hasRangeProvider = options.range === true;\n const rangeProvider = hasRangeProvider\n ? {\n provideDocumentRangeSemanticTokens: (document, range, token) => {\n const client = this._client;\n const middleware = client.middleware;\n const provideDocumentRangeSemanticTokens = (document, range, token) => {\n const params = {\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n range: client.code2ProtocolConverter.asRange(range)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.SemanticTokensRangeRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asSemanticTokens(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.SemanticTokensRangeRequest.type, token, error, null);\n });\n };\n return middleware.provideDocumentRangeSemanticTokens\n ? middleware.provideDocumentRangeSemanticTokens(document, range, token, provideDocumentRangeSemanticTokens)\n : provideDocumentRangeSemanticTokens(document, range, token);\n }\n }\n : undefined;\n const disposables = [];\n const client = this._client;\n const legend = client.protocol2CodeConverter.asSemanticTokensLegend(options.legend);\n const documentSelector = client.protocol2CodeConverter.asDocumentSelector(selector);\n if (documentProvider !== undefined) {\n disposables.push(vscode.languages.registerDocumentSemanticTokensProvider(documentSelector, documentProvider, legend));\n }\n if (rangeProvider !== undefined) {\n disposables.push(vscode.languages.registerDocumentRangeSemanticTokensProvider(documentSelector, rangeProvider, legend));\n }\n return [new vscode.Disposable(() => disposables.forEach(item => item.dispose())), { range: rangeProvider, full: documentProvider, onDidChangeSemanticTokensEmitter: eventEmitter }];\n }\n}\nexports.SemanticTokensFeature = SemanticTokensFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignatureHelpFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass SignatureHelpFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.SignatureHelpRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let config = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'signatureHelp');\n config.dynamicRegistration = true;\n config.signatureInformation = { documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText] };\n config.signatureInformation.parameterInformation = { labelOffsetSupport: true };\n config.signatureInformation.activeParameterSupport = true;\n config.contextSupport = true;\n }\n initialize(capabilities, documentSelector) {\n const options = this.getRegistrationOptions(documentSelector, capabilities.signatureHelpProvider);\n if (!options) {\n return;\n }\n this.register({\n id: UUID.generateUuid(),\n registerOptions: options\n });\n }\n registerLanguageProvider(options) {\n const provider = {\n provideSignatureHelp: (document, position, token, context) => {\n const client = this._client;\n const providerSignatureHelp = (document, position, context, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, client.code2ProtocolConverter.asSignatureHelpParams(document, position, context), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asSignatureHelp(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideSignatureHelp\n ? middleware.provideSignatureHelp(document, position, context, token, providerSignatureHelp)\n : providerSignatureHelp(document, position, context, token);\n }\n };\n return [this.registerProvider(options, provider), provider];\n }\n registerProvider(options, provider) {\n const selector = this._client.protocol2CodeConverter.asDocumentSelector(options.documentSelector);\n if (options.retriggerCharacters === undefined) {\n const triggerCharacters = options.triggerCharacters || [];\n return vscode_1.languages.registerSignatureHelpProvider(selector, provider, ...triggerCharacters);\n }\n else {\n const metaData = {\n triggerCharacters: options.triggerCharacters || [],\n retriggerCharacters: options.retriggerCharacters || []\n };\n return vscode_1.languages.registerSignatureHelpProvider(selector, provider, metaData);\n }\n }\n}\nexports.SignatureHelpFeature = SignatureHelpFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidSaveTextDocumentFeature = exports.WillSaveWaitUntilFeature = exports.WillSaveFeature = exports.DidChangeTextDocumentFeature = exports.DidCloseTextDocumentFeature = exports.DidOpenTextDocumentFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DidOpenTextDocumentFeature extends features_1.TextDocumentEventFeature {\n constructor(client, syncedDocuments) {\n super(client, vscode_1.workspace.onDidOpenTextDocument, vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, () => client.middleware.didOpen, (textDocument) => client.code2ProtocolConverter.asOpenTextDocumentParams(textDocument), (data) => data, features_1.TextDocumentEventFeature.textDocumentFilter);\n this._syncedDocuments = syncedDocuments;\n }\n get openDocuments() {\n return this._syncedDocuments.values();\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) {\n this.register({ id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } });\n }\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type;\n }\n register(data) {\n super.register(data);\n if (!data.registerOptions.documentSelector) {\n return;\n }\n const documentSelector = this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector);\n vscode_1.workspace.textDocuments.forEach((textDocument) => {\n const uri = textDocument.uri.toString();\n if (this._syncedDocuments.has(uri)) {\n return;\n }\n if (vscode_1.languages.match(documentSelector, textDocument) > 0 && !this._client.hasDedicatedTextSynchronizationFeature(textDocument)) {\n const middleware = this._client.middleware;\n const didOpen = (textDocument) => {\n return this._client.sendNotification(this._type, this._createParams(textDocument));\n };\n (middleware.didOpen ? middleware.didOpen(textDocument, didOpen) : didOpen(textDocument)).catch((error) => {\n this._client.error(`Sending document notification ${this._type.method} failed`, error);\n });\n this._syncedDocuments.set(uri, textDocument);\n }\n });\n }\n getTextDocument(data) {\n return data;\n }\n notificationSent(textDocument, type, params) {\n this._syncedDocuments.set(textDocument.uri.toString(), textDocument);\n super.notificationSent(textDocument, type, params);\n }\n}\nexports.DidOpenTextDocumentFeature = DidOpenTextDocumentFeature;\nclass DidCloseTextDocumentFeature extends features_1.TextDocumentEventFeature {\n constructor(client, syncedDocuments, pendingTextDocumentChanges) {\n super(client, vscode_1.workspace.onDidCloseTextDocument, vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, () => client.middleware.didClose, (textDocument) => client.code2ProtocolConverter.asCloseTextDocumentParams(textDocument), (data) => data, features_1.TextDocumentEventFeature.textDocumentFilter);\n this._syncedDocuments = syncedDocuments;\n this._pendingTextDocumentChanges = pendingTextDocumentChanges;\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type;\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) {\n this.register({ id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } });\n }\n }\n async callback(data) {\n await super.callback(data);\n this._pendingTextDocumentChanges.delete(data.uri.toString());\n }\n getTextDocument(data) {\n return data;\n }\n notificationSent(textDocument, type, params) {\n this._syncedDocuments.delete(textDocument.uri.toString());\n super.notificationSent(textDocument, type, params);\n }\n unregister(id) {\n const selector = this._selectors.get(id);\n // The super call removed the selector from the map\n // of selectors.\n super.unregister(id);\n const selectors = this._selectors.values();\n this._syncedDocuments.forEach((textDocument) => {\n if (vscode_1.languages.match(selector, textDocument) > 0 && !this._selectorFilter(selectors, textDocument) && !this._client.hasDedicatedTextSynchronizationFeature(textDocument)) {\n let middleware = this._client.middleware;\n let didClose = (textDocument) => {\n return this._client.sendNotification(this._type, this._createParams(textDocument));\n };\n this._syncedDocuments.delete(textDocument.uri.toString());\n (middleware.didClose ? middleware.didClose(textDocument, didClose) : didClose(textDocument)).catch((error) => {\n this._client.error(`Sending document notification ${this._type.method} failed`, error);\n });\n }\n });\n }\n}\nexports.DidCloseTextDocumentFeature = DidCloseTextDocumentFeature;\nclass DidChangeTextDocumentFeature extends features_1.DynamicDocumentFeature {\n constructor(client, pendingTextDocumentChanges) {\n super(client);\n this._changeData = new Map();\n this._onNotificationSent = new vscode_1.EventEmitter();\n this._onPendingChangeAdded = new vscode_1.EventEmitter();\n this._pendingTextDocumentChanges = pendingTextDocumentChanges;\n this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n }\n get onNotificationSent() {\n return this._onNotificationSent.event;\n }\n get onPendingChangeAdded() {\n return this._onPendingChangeAdded.event;\n }\n get syncKind() {\n return this._syncKind;\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type;\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.change !== undefined && textDocumentSyncOptions.change !== vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\n this.register({\n id: UUID.generateUuid(),\n registerOptions: Object.assign({}, { documentSelector: documentSelector }, { syncKind: textDocumentSyncOptions.change })\n });\n }\n }\n register(data) {\n if (!data.registerOptions.documentSelector) {\n return;\n }\n if (!this._listener) {\n this._listener = vscode_1.workspace.onDidChangeTextDocument(this.callback, this);\n }\n this._changeData.set(data.id, {\n syncKind: data.registerOptions.syncKind,\n documentSelector: this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector),\n });\n this.updateSyncKind(data.registerOptions.syncKind);\n }\n *getDocumentSelectors() {\n for (const data of this._changeData.values()) {\n yield data.documentSelector;\n }\n }\n async callback(event) {\n // Text document changes are send for dirty changes as well. We don't\n // have dirty / un-dirty events in the LSP so we ignore content changes\n // with length zero.\n if (event.contentChanges.length === 0) {\n return;\n }\n // We need to capture the URI and version here since they might change on the text document\n // until we reach did `didChange` call since the middleware support async execution.\n const uri = event.document.uri;\n const version = event.document.version;\n const promises = [];\n for (const changeData of this._changeData.values()) {\n if (vscode_1.languages.match(changeData.documentSelector, event.document) > 0 && !this._client.hasDedicatedTextSynchronizationFeature(event.document)) {\n const middleware = this._client.middleware;\n if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental) {\n const didChange = async (event) => {\n const params = this._client.code2ProtocolConverter.asChangeTextDocumentParams(event, uri, version);\n await this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n this.notificationSent(event.document, vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n };\n promises.push(middleware.didChange ? middleware.didChange(event, event => didChange(event)) : didChange(event));\n }\n else if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n const didChange = async (event) => {\n const eventUri = event.document.uri.toString();\n this._pendingTextDocumentChanges.set(eventUri, event.document);\n this._onPendingChangeAdded.fire();\n };\n promises.push(middleware.didChange ? middleware.didChange(event, event => didChange(event)) : didChange(event));\n }\n }\n }\n return Promise.all(promises).then(undefined, (error) => {\n this._client.error(`Sending document notification ${vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type.method} failed`, error);\n throw error;\n });\n }\n notificationSent(textDocument, type, params) {\n this._onNotificationSent.fire({ textDocument, type, params });\n }\n unregister(id) {\n this._changeData.delete(id);\n if (this._changeData.size === 0) {\n if (this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n }\n else {\n this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n for (const changeData of this._changeData.values()) {\n this.updateSyncKind(changeData.syncKind);\n if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n break;\n }\n }\n }\n }\n dispose() {\n this._pendingTextDocumentChanges.clear();\n this._changeData.clear();\n this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n if (this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n getPendingDocumentChanges(excludes) {\n if (this._pendingTextDocumentChanges.size === 0) {\n return [];\n }\n let result;\n if (excludes.size === 0) {\n result = Array.from(this._pendingTextDocumentChanges.values());\n this._pendingTextDocumentChanges.clear();\n }\n else {\n result = [];\n for (const entry of this._pendingTextDocumentChanges) {\n if (!excludes.has(entry[0])) {\n result.push(entry[1]);\n this._pendingTextDocumentChanges.delete(entry[0]);\n }\n }\n }\n return result;\n }\n getProvider(document) {\n for (const changeData of this._changeData.values()) {\n if (vscode_1.languages.match(changeData.documentSelector, document) > 0) {\n return {\n send: (event) => {\n return this.callback(event);\n }\n };\n }\n }\n return undefined;\n }\n updateSyncKind(syncKind) {\n if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n return;\n }\n switch (syncKind) {\n case vscode_languageserver_protocol_1.TextDocumentSyncKind.Full:\n this._syncKind = syncKind;\n break;\n case vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental:\n if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\n this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental;\n }\n break;\n }\n }\n}\nexports.DidChangeTextDocumentFeature = DidChangeTextDocumentFeature;\nclass WillSaveFeature extends features_1.TextDocumentEventFeature {\n constructor(client) {\n super(client, vscode_1.workspace.onWillSaveTextDocument, vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type, () => client.middleware.willSave, (willSaveEvent) => client.code2ProtocolConverter.asWillSaveTextDocumentParams(willSaveEvent), (event) => event.document, (selectors, willSaveEvent) => features_1.TextDocumentEventFeature.textDocumentFilter(selectors, willSaveEvent.document));\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type;\n }\n fillClientCapabilities(capabilities) {\n let value = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization');\n value.willSave = true;\n }\n initialize(capabilities, documentSelector) {\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSave) {\n this.register({\n id: UUID.generateUuid(),\n registerOptions: { documentSelector: documentSelector }\n });\n }\n }\n getTextDocument(data) {\n return data.document;\n }\n}\nexports.WillSaveFeature = WillSaveFeature;\nclass WillSaveWaitUntilFeature extends features_1.DynamicDocumentFeature {\n constructor(client) {\n super(client);\n this._selectors = new Map();\n }\n getDocumentSelectors() {\n return this._selectors.values();\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type;\n }\n fillClientCapabilities(capabilities) {\n let value = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization');\n value.willSaveWaitUntil = true;\n }\n initialize(capabilities, documentSelector) {\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSaveWaitUntil) {\n this.register({\n id: UUID.generateUuid(),\n registerOptions: { documentSelector: documentSelector }\n });\n }\n }\n register(data) {\n if (!data.registerOptions.documentSelector) {\n return;\n }\n if (!this._listener) {\n this._listener = vscode_1.workspace.onWillSaveTextDocument(this.callback, this);\n }\n this._selectors.set(data.id, this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector));\n }\n callback(event) {\n if (features_1.TextDocumentEventFeature.textDocumentFilter(this._selectors.values(), event.document) && !this._client.hasDedicatedTextSynchronizationFeature(event.document)) {\n let middleware = this._client.middleware;\n let willSaveWaitUntil = (event) => {\n return this._client.sendRequest(vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type, this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(event)).then(async (edits) => {\n let vEdits = await this._client.protocol2CodeConverter.asTextEdits(edits);\n return vEdits === undefined ? [] : vEdits;\n });\n };\n event.waitUntil(middleware.willSaveWaitUntil\n ? middleware.willSaveWaitUntil(event, willSaveWaitUntil)\n : willSaveWaitUntil(event));\n }\n }\n unregister(id) {\n this._selectors.delete(id);\n if (this._selectors.size === 0 && this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n dispose() {\n this._selectors.clear();\n if (this._listener) {\n this._listener.dispose();\n this._listener = undefined;\n }\n }\n}\nexports.WillSaveWaitUntilFeature = WillSaveWaitUntilFeature;\nclass DidSaveTextDocumentFeature extends features_1.TextDocumentEventFeature {\n constructor(client) {\n super(client, vscode_1.workspace.onDidSaveTextDocument, vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type, () => client.middleware.didSave, (textDocument) => client.code2ProtocolConverter.asSaveTextDocumentParams(textDocument, this._includeText), (data) => data, features_1.TextDocumentEventFeature.textDocumentFilter);\n this._includeText = false;\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type;\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').didSave = true;\n }\n initialize(capabilities, documentSelector) {\n const textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.save) {\n const saveOptions = typeof textDocumentSyncOptions.save === 'boolean'\n ? { includeText: false }\n : { includeText: !!textDocumentSyncOptions.save.includeText };\n this.register({\n id: UUID.generateUuid(),\n registerOptions: Object.assign({}, { documentSelector: documentSelector }, saveOptions)\n });\n }\n }\n register(data) {\n this._includeText = !!data.registerOptions.includeText;\n super.register(data);\n }\n getTextDocument(data) {\n return data;\n }\n}\nexports.DidSaveTextDocumentFeature = DidSaveTextDocumentFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDefinitionFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass TypeDefinitionFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.TypeDefinitionRequest.type);\n }\n fillClientCapabilities(capabilities) {\n (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'typeDefinition').dynamicRegistration = true;\n let typeDefinitionSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'typeDefinition');\n typeDefinitionSupport.dynamicRegistration = true;\n typeDefinitionSupport.linkSupport = true;\n }\n initialize(capabilities, documentSelector) {\n let [id, options] = this.getRegistration(documentSelector, capabilities.typeDefinitionProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const selector = options.documentSelector;\n const provider = {\n provideTypeDefinition: (document, position, token) => {\n const client = this._client;\n const provideTypeDefinition = (document, position, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asDefinitionResult(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideTypeDefinition\n ? middleware.provideTypeDefinition(document, position, token, provideTypeDefinition)\n : provideTypeDefinition(document, position, token);\n }\n };\n return [this.registerProvider(selector, provider), provider];\n }\n registerProvider(selector, provider) {\n return vscode_1.languages.registerTypeDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n }\n}\nexports.TypeDefinitionFeature = TypeDefinitionFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHierarchyFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass TypeHierarchyProvider {\n constructor(client) {\n this.client = client;\n this.middleware = client.middleware;\n }\n prepareTypeHierarchy(document, position, token) {\n const client = this.client;\n const middleware = this.middleware;\n const prepareTypeHierarchy = (document, position, token) => {\n const params = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position);\n return client.sendRequest(vscode_languageserver_protocol_1.TypeHierarchyPrepareRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asTypeHierarchyItems(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeHierarchyPrepareRequest.type, token, error, null);\n });\n };\n return middleware.prepareTypeHierarchy\n ? middleware.prepareTypeHierarchy(document, position, token, prepareTypeHierarchy)\n : prepareTypeHierarchy(document, position, token);\n }\n provideTypeHierarchySupertypes(item, token) {\n const client = this.client;\n const middleware = this.middleware;\n const provideTypeHierarchySupertypes = (item, token) => {\n const params = {\n item: client.code2ProtocolConverter.asTypeHierarchyItem(item)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.TypeHierarchySupertypesRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asTypeHierarchyItems(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeHierarchySupertypesRequest.type, token, error, null);\n });\n };\n return middleware.provideTypeHierarchySupertypes\n ? middleware.provideTypeHierarchySupertypes(item, token, provideTypeHierarchySupertypes)\n : provideTypeHierarchySupertypes(item, token);\n }\n provideTypeHierarchySubtypes(item, token) {\n const client = this.client;\n const middleware = this.middleware;\n const provideTypeHierarchySubtypes = (item, token) => {\n const params = {\n item: client.code2ProtocolConverter.asTypeHierarchyItem(item)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.TypeHierarchySubtypesRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asTypeHierarchyItems(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeHierarchySubtypesRequest.type, token, error, null);\n });\n };\n return middleware.provideTypeHierarchySubtypes\n ? middleware.provideTypeHierarchySubtypes(item, token, provideTypeHierarchySubtypes)\n : provideTypeHierarchySubtypes(item, token);\n }\n}\nclass TypeHierarchyFeature extends features_1.TextDocumentLanguageFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.TypeHierarchyPrepareRequest.type);\n }\n fillClientCapabilities(capabilities) {\n const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'typeHierarchy');\n capability.dynamicRegistration = true;\n }\n initialize(capabilities, documentSelector) {\n const [id, options] = this.getRegistration(documentSelector, capabilities.typeHierarchyProvider);\n if (!id || !options) {\n return;\n }\n this.register({ id: id, registerOptions: options });\n }\n registerLanguageProvider(options) {\n const client = this._client;\n const provider = new TypeHierarchyProvider(client);\n return [vscode_1.languages.registerTypeHierarchyProvider(client.protocol2CodeConverter.asDocumentSelector(options.documentSelector), provider), provider];\n }\n}\nexports.TypeHierarchyFeature = TypeHierarchyFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEach = exports.mapAsync = exports.map = exports.clearTestMode = exports.setTestMode = exports.Semaphore = exports.Delayer = void 0;\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nclass Delayer {\n constructor(defaultDelay) {\n this.defaultDelay = defaultDelay;\n this.timeout = undefined;\n this.completionPromise = undefined;\n this.onSuccess = undefined;\n this.task = undefined;\n }\n trigger(task, delay = this.defaultDelay) {\n this.task = task;\n if (delay >= 0) {\n this.cancelTimeout();\n }\n if (!this.completionPromise) {\n this.completionPromise = new Promise((resolve) => {\n this.onSuccess = resolve;\n }).then(() => {\n this.completionPromise = undefined;\n this.onSuccess = undefined;\n var result = this.task();\n this.task = undefined;\n return result;\n });\n }\n if (delay >= 0 || this.timeout === void 0) {\n this.timeout = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n this.timeout = undefined;\n this.onSuccess(undefined);\n }, delay >= 0 ? delay : this.defaultDelay);\n }\n return this.completionPromise;\n }\n forceDelivery() {\n if (!this.completionPromise) {\n return undefined;\n }\n this.cancelTimeout();\n let result = this.task();\n this.completionPromise = undefined;\n this.onSuccess = undefined;\n this.task = undefined;\n return result;\n }\n isTriggered() {\n return this.timeout !== undefined;\n }\n cancel() {\n this.cancelTimeout();\n this.completionPromise = undefined;\n }\n cancelTimeout() {\n if (this.timeout !== undefined) {\n this.timeout.dispose();\n this.timeout = undefined;\n }\n }\n}\nexports.Delayer = Delayer;\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\nlet $test = false;\nfunction setTestMode() {\n $test = true;\n}\nexports.setTestMode = setTestMode;\nfunction clearTestMode() {\n $test = false;\n}\nexports.clearTestMode = clearTestMode;\nconst defaultYieldTimeout = 15 /*ms*/;\nclass Timer {\n constructor(yieldAfter = defaultYieldTimeout) {\n this.yieldAfter = $test === true ? Math.max(yieldAfter, 2) : Math.max(yieldAfter, defaultYieldTimeout);\n this.startTime = Date.now();\n this.counter = 0;\n this.total = 0;\n // start with a counter interval of 1.\n this.counterInterval = 1;\n }\n start() {\n this.counter = 0;\n this.total = 0;\n this.counterInterval = 1;\n this.startTime = Date.now();\n }\n shouldYield() {\n if (++this.counter >= this.counterInterval) {\n const timeTaken = Date.now() - this.startTime;\n const timeLeft = Math.max(0, this.yieldAfter - timeTaken);\n this.total += this.counter;\n this.counter = 0;\n if (timeTaken >= this.yieldAfter || timeLeft <= 1) {\n // Yield also if time left <= 1 since we compute the counter\n // for max < 2 ms.\n // Start with interval 1 again. We could do some calculation\n // with using 80% of the last counter however other things (GC)\n // affect the timing heavily since we have small timings (1 - 15ms).\n this.counterInterval = 1;\n this.total = 0;\n return true;\n }\n else {\n // Only increase the counter until we have spent <= 2 ms. Increasing\n // the counter further is very fragile since timing is influenced\n // by other things and can increase the counter too much. This will result\n // that we yield in average after [14 - 16]ms.\n switch (timeTaken) {\n case 0:\n case 1:\n this.counterInterval = this.total * 2;\n break;\n }\n }\n }\n return false;\n }\n}\nasync function map(items, func, token, options) {\n if (items.length === 0) {\n return [];\n }\n const result = new Array(items.length);\n const timer = new Timer(options?.yieldAfter);\n function convertBatch(start) {\n timer.start();\n for (let i = start; i < items.length; i++) {\n result[i] = func(items[i]);\n if (timer.shouldYield()) {\n options?.yieldCallback && options.yieldCallback();\n return i + 1;\n }\n }\n return -1;\n }\n // Convert the first batch sync on the same frame.\n let index = convertBatch(0);\n while (index !== -1) {\n if (token !== undefined && token.isCancellationRequested) {\n break;\n }\n index = await new Promise((resolve) => {\n (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => {\n resolve(convertBatch(index));\n });\n });\n }\n return result;\n}\nexports.map = map;\nasync function mapAsync(items, func, token, options) {\n if (items.length === 0) {\n return [];\n }\n const result = new Array(items.length);\n const timer = new Timer(options?.yieldAfter);\n async function convertBatch(start) {\n timer.start();\n for (let i = start; i < items.length; i++) {\n result[i] = await func(items[i], token);\n if (timer.shouldYield()) {\n options?.yieldCallback && options.yieldCallback();\n return i + 1;\n }\n }\n return -1;\n }\n let index = await convertBatch(0);\n while (index !== -1) {\n if (token !== undefined && token.isCancellationRequested) {\n break;\n }\n index = await new Promise((resolve) => {\n (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => {\n resolve(convertBatch(index));\n });\n });\n }\n return result;\n}\nexports.mapAsync = mapAsync;\nasync function forEach(items, func, token, options) {\n if (items.length === 0) {\n return;\n }\n const timer = new Timer(options?.yieldAfter);\n function runBatch(start) {\n timer.start();\n for (let i = start; i < items.length; i++) {\n func(items[i]);\n if (timer.shouldYield()) {\n options?.yieldCallback && options.yieldCallback();\n return i + 1;\n }\n }\n return -1;\n }\n // Convert the first batch sync on the same frame.\n let index = runBatch(0);\n while (index !== -1) {\n if (token !== undefined && token.isCancellationRequested) {\n break;\n }\n index = await new Promise((resolve) => {\n (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => {\n resolve(runBatch(index));\n });\n });\n }\n}\nexports.forEach = forEach;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.asPromise = exports.thenable = exports.typedArray = exports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\nfunction typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n}\nexports.typedArray = typedArray;\nfunction thenable(value) {\n return value && func(value.then);\n}\nexports.thenable = thenable;\nfunction asPromise(value) {\n if (value instanceof Promise) {\n return value;\n }\n else if (thenable(value)) {\n return new Promise((resolve, reject) => {\n value.then((resolved) => resolve(resolved), (error) => reject(error));\n });\n }\n else {\n return Promise.resolve(value);\n }\n}\nexports.asPromise = asPromise;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateUuid = exports.parse = exports.isUUID = exports.v4 = exports.empty = void 0;\nclass ValueUUID {\n constructor(_value) {\n this._value = _value;\n // empty\n }\n asHex() {\n return this._value;\n }\n equals(other) {\n return this.asHex() === other.asHex();\n }\n}\nclass V4UUID extends ValueUUID {\n constructor() {\n super([\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n '-',\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n '-',\n '4',\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n '-',\n V4UUID._oneOf(V4UUID._timeHighBits),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n '-',\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n V4UUID._randomHex(),\n ].join(''));\n }\n static _oneOf(array) {\n return array[Math.floor(array.length * Math.random())];\n }\n static _randomHex() {\n return V4UUID._oneOf(V4UUID._chars);\n }\n}\nV4UUID._chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\nV4UUID._timeHighBits = ['8', '9', 'a', 'b'];\n/**\n * An empty UUID that contains only zeros.\n */\nexports.empty = new ValueUUID('00000000-0000-0000-0000-000000000000');\nfunction v4() {\n return new V4UUID();\n}\nexports.v4 = v4;\nconst _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nfunction isUUID(value) {\n return _UUIDPattern.test(value);\n}\nexports.isUUID = isUUID;\n/**\n * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.\n * @param value A uuid string.\n */\nfunction parse(value) {\n if (!isUUID(value)) {\n throw new Error('invalid uuid');\n }\n return new ValueUUID(value);\n}\nexports.parse = parse;\nfunction generateUuid() {\n return v4().asHex();\n}\nexports.generateUuid = generateUuid;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceFoldersFeature = exports.arrayDiff = void 0;\nconst UUID = require(\"./utils/uuid\");\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nfunction access(target, key) {\n if (target === undefined || target === null) {\n return undefined;\n }\n return target[key];\n}\nfunction arrayDiff(left, right) {\n return left.filter(element => right.indexOf(element) < 0);\n}\nexports.arrayDiff = arrayDiff;\nclass WorkspaceFoldersFeature {\n constructor(client) {\n this._client = client;\n this._listeners = new Map();\n }\n getState() {\n return { kind: 'workspace', id: this.registrationType.method, registrations: this._listeners.size > 0 };\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type;\n }\n fillInitializeParams(params) {\n const folders = vscode_1.workspace.workspaceFolders;\n this.initializeWithFolders(folders);\n if (folders === void 0) {\n params.workspaceFolders = null;\n }\n else {\n params.workspaceFolders = folders.map(folder => this.asProtocol(folder));\n }\n }\n initializeWithFolders(currentWorkspaceFolders) {\n this._initialFolders = currentWorkspaceFolders;\n }\n fillClientCapabilities(capabilities) {\n capabilities.workspace = capabilities.workspace || {};\n capabilities.workspace.workspaceFolders = true;\n }\n initialize(capabilities) {\n const client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.WorkspaceFoldersRequest.type, (token) => {\n const workspaceFolders = () => {\n const folders = vscode_1.workspace.workspaceFolders;\n if (folders === undefined) {\n return null;\n }\n const result = folders.map((folder) => {\n return this.asProtocol(folder);\n });\n return result;\n };\n const middleware = client.middleware.workspace;\n return middleware && middleware.workspaceFolders\n ? middleware.workspaceFolders(token, workspaceFolders)\n : workspaceFolders(token);\n });\n const value = access(access(access(capabilities, 'workspace'), 'workspaceFolders'), 'changeNotifications');\n let id;\n if (typeof value === 'string') {\n id = value;\n }\n else if (value === true) {\n id = UUID.generateUuid();\n }\n if (id) {\n this.register({ id: id, registerOptions: undefined });\n }\n }\n sendInitialEvent(currentWorkspaceFolders) {\n let promise;\n if (this._initialFolders && currentWorkspaceFolders) {\n const removed = arrayDiff(this._initialFolders, currentWorkspaceFolders);\n const added = arrayDiff(currentWorkspaceFolders, this._initialFolders);\n if (added.length > 0 || removed.length > 0) {\n promise = this.doSendEvent(added, removed);\n }\n }\n else if (this._initialFolders) {\n promise = this.doSendEvent([], this._initialFolders);\n }\n else if (currentWorkspaceFolders) {\n promise = this.doSendEvent(currentWorkspaceFolders, []);\n }\n if (promise !== undefined) {\n promise.catch((error) => {\n this._client.error(`Sending notification ${vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type.method} failed`, error);\n });\n }\n }\n doSendEvent(addedFolders, removedFolders) {\n let params = {\n event: {\n added: addedFolders.map(folder => this.asProtocol(folder)),\n removed: removedFolders.map(folder => this.asProtocol(folder))\n }\n };\n return this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type, params);\n }\n register(data) {\n let id = data.id;\n let client = this._client;\n let disposable = vscode_1.workspace.onDidChangeWorkspaceFolders((event) => {\n let didChangeWorkspaceFolders = (event) => {\n return this.doSendEvent(event.added, event.removed);\n };\n let middleware = client.middleware.workspace;\n const promise = middleware && middleware.didChangeWorkspaceFolders\n ? middleware.didChangeWorkspaceFolders(event, didChangeWorkspaceFolders)\n : didChangeWorkspaceFolders(event);\n promise.catch((error) => {\n this._client.error(`Sending notification ${vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type.method} failed`, error);\n });\n });\n this._listeners.set(id, disposable);\n this.sendInitialEvent(vscode_1.workspace.workspaceFolders);\n }\n unregister(id) {\n let disposable = this._listeners.get(id);\n if (disposable === void 0) {\n return;\n }\n this._listeners.delete(id);\n disposable.dispose();\n }\n dispose() {\n for (let disposable of this._listeners.values()) {\n disposable.dispose();\n }\n this._listeners.clear();\n }\n asProtocol(workspaceFolder) {\n if (workspaceFolder === void 0) {\n return null;\n }\n return { uri: this._client.code2ProtocolConverter.asUri(workspaceFolder.uri), name: workspaceFolder.name };\n }\n}\nexports.WorkspaceFoldersFeature = WorkspaceFoldersFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceSymbolFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst documentSymbol_1 = require(\"./documentSymbol\");\nconst UUID = require(\"./utils/uuid\");\nclass WorkspaceSymbolFeature extends features_1.WorkspaceFeature {\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type);\n }\n fillClientCapabilities(capabilities) {\n let symbolCapabilities = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'symbol');\n symbolCapabilities.dynamicRegistration = true;\n symbolCapabilities.symbolKind = {\n valueSet: documentSymbol_1.SupportedSymbolKinds\n };\n symbolCapabilities.tagSupport = {\n valueSet: documentSymbol_1.SupportedSymbolTags\n };\n symbolCapabilities.resolveSupport = { properties: ['location.range'] };\n }\n initialize(capabilities) {\n if (!capabilities.workspaceSymbolProvider) {\n return;\n }\n this.register({\n id: UUID.generateUuid(),\n registerOptions: capabilities.workspaceSymbolProvider === true ? { workDoneProgress: false } : capabilities.workspaceSymbolProvider\n });\n }\n registerLanguageProvider(options) {\n const provider = {\n provideWorkspaceSymbols: (query, token) => {\n const client = this._client;\n const provideWorkspaceSymbols = (query, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, { query }, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asSymbolInformations(result, token);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideWorkspaceSymbols\n ? middleware.provideWorkspaceSymbols(query, token, provideWorkspaceSymbols)\n : provideWorkspaceSymbols(query, token);\n },\n resolveWorkspaceSymbol: options.resolveProvider === true\n ? (item, token) => {\n const client = this._client;\n const resolveWorkspaceSymbol = (item, token) => {\n return client.sendRequest(vscode_languageserver_protocol_1.WorkspaceSymbolResolveRequest.type, client.code2ProtocolConverter.asWorkspaceSymbol(item), token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return client.protocol2CodeConverter.asSymbolInformation(result);\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.WorkspaceSymbolResolveRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.resolveWorkspaceSymbol\n ? middleware.resolveWorkspaceSymbol(item, token, resolveWorkspaceSymbol)\n : resolveWorkspaceSymbol(item, token);\n }\n : undefined\n };\n return [vscode_1.languages.registerWorkspaceSymbolProvider(provider), provider];\n }\n}\nexports.WorkspaceSymbolFeature = WorkspaceSymbolFeature;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SettingMonitor = exports.LanguageClient = exports.TransportKind = void 0;\nconst cp = require(\"child_process\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst vscode_1 = require(\"vscode\");\nconst Is = require(\"../common/utils/is\");\nconst client_1 = require(\"../common/client\");\nconst processes_1 = require(\"./processes\");\nconst node_1 = require(\"vscode-languageserver-protocol/node\");\n// Import SemVer functions individually to avoid circular dependencies in SemVer\nconst semverParse = require(\"semver/functions/parse\");\nconst semverSatisfies = require(\"semver/functions/satisfies\");\n__exportStar(require(\"vscode-languageserver-protocol/node\"), exports);\n__exportStar(require(\"../common/api\"), exports);\nconst REQUIRED_VSCODE_VERSION = '^1.67.0'; // do not change format, updated by `updateVSCode` script\nvar TransportKind;\n(function (TransportKind) {\n TransportKind[TransportKind[\"stdio\"] = 0] = \"stdio\";\n TransportKind[TransportKind[\"ipc\"] = 1] = \"ipc\";\n TransportKind[TransportKind[\"pipe\"] = 2] = \"pipe\";\n TransportKind[TransportKind[\"socket\"] = 3] = \"socket\";\n})(TransportKind = exports.TransportKind || (exports.TransportKind = {}));\nvar Transport;\n(function (Transport) {\n function isSocket(value) {\n const candidate = value;\n return candidate && candidate.kind === TransportKind.socket && Is.number(candidate.port);\n }\n Transport.isSocket = isSocket;\n})(Transport || (Transport = {}));\nvar Executable;\n(function (Executable) {\n function is(value) {\n return Is.string(value.command);\n }\n Executable.is = is;\n})(Executable || (Executable = {}));\nvar NodeModule;\n(function (NodeModule) {\n function is(value) {\n return Is.string(value.module);\n }\n NodeModule.is = is;\n})(NodeModule || (NodeModule = {}));\nvar StreamInfo;\n(function (StreamInfo) {\n function is(value) {\n let candidate = value;\n return candidate && candidate.writer !== undefined && candidate.reader !== undefined;\n }\n StreamInfo.is = is;\n})(StreamInfo || (StreamInfo = {}));\nvar ChildProcessInfo;\n(function (ChildProcessInfo) {\n function is(value) {\n let candidate = value;\n return candidate && candidate.process !== undefined && typeof candidate.detached === 'boolean';\n }\n ChildProcessInfo.is = is;\n})(ChildProcessInfo || (ChildProcessInfo = {}));\nclass LanguageClient extends client_1.BaseLanguageClient {\n constructor(arg1, arg2, arg3, arg4, arg5) {\n let id;\n let name;\n let serverOptions;\n let clientOptions;\n let forceDebug;\n if (Is.string(arg2)) {\n id = arg1;\n name = arg2;\n serverOptions = arg3;\n clientOptions = arg4;\n forceDebug = !!arg5;\n }\n else {\n id = arg1.toLowerCase();\n name = arg1;\n serverOptions = arg2;\n clientOptions = arg3;\n forceDebug = arg4;\n }\n if (forceDebug === undefined) {\n forceDebug = false;\n }\n super(id, name, clientOptions);\n this._serverOptions = serverOptions;\n this._forceDebug = forceDebug;\n this._isInDebugMode = forceDebug;\n try {\n this.checkVersion();\n }\n catch (error) {\n if (Is.string(error.message)) {\n this.outputChannel.appendLine(error.message);\n }\n throw error;\n }\n }\n checkVersion() {\n const codeVersion = semverParse(vscode_1.version);\n if (!codeVersion) {\n throw new Error(`No valid VS Code version detected. Version string is: ${vscode_1.version}`);\n }\n // Remove the insider pre-release since we stay API compatible.\n if (codeVersion.prerelease && codeVersion.prerelease.length > 0) {\n codeVersion.prerelease = [];\n }\n if (!semverSatisfies(codeVersion, REQUIRED_VSCODE_VERSION)) {\n throw new Error(`The language client requires VS Code version ${REQUIRED_VSCODE_VERSION} but received version ${vscode_1.version}`);\n }\n }\n get isInDebugMode() {\n return this._isInDebugMode;\n }\n async restart() {\n await this.stop();\n // We are in debug mode. Wait a little before we restart\n // so that the debug port can be freed. We can safely ignore\n // the disposable returned from start since it will call\n // stop on the same client instance.\n if (this.isInDebugMode) {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n await this.start();\n }\n else {\n await this.start();\n }\n }\n stop(timeout = 2000) {\n return super.stop(timeout).finally(() => {\n if (this._serverProcess) {\n const toCheck = this._serverProcess;\n this._serverProcess = undefined;\n if (this._isDetached === undefined || !this._isDetached) {\n this.checkProcessDied(toCheck);\n }\n this._isDetached = undefined;\n }\n });\n }\n checkProcessDied(childProcess) {\n if (!childProcess || childProcess.pid === undefined) {\n return;\n }\n setTimeout(() => {\n // Test if the process is still alive. Throws an exception if not\n try {\n if (childProcess.pid !== undefined) {\n process.kill(childProcess.pid, 0);\n (0, processes_1.terminate)(childProcess);\n }\n }\n catch (error) {\n // All is fine.\n }\n }, 2000);\n }\n handleConnectionClosed() {\n this._serverProcess = undefined;\n return super.handleConnectionClosed();\n }\n fillInitializeParams(params) {\n super.fillInitializeParams(params);\n if (params.processId === null) {\n params.processId = process.pid;\n }\n }\n createMessageTransports(encoding) {\n function getEnvironment(env, fork) {\n if (!env && !fork) {\n return undefined;\n }\n const result = Object.create(null);\n Object.keys(process.env).forEach(key => result[key] = process.env[key]);\n if (fork) {\n result['ELECTRON_RUN_AS_NODE'] = '1';\n result['ELECTRON_NO_ASAR'] = '1';\n }\n if (env) {\n Object.keys(env).forEach(key => result[key] = env[key]);\n }\n return result;\n }\n const debugStartWith = ['--debug=', '--debug-brk=', '--inspect=', '--inspect-brk='];\n const debugEquals = ['--debug', '--debug-brk', '--inspect', '--inspect-brk'];\n function startedInDebugMode() {\n let args = process.execArgv;\n if (args) {\n return args.some((arg) => {\n return debugStartWith.some(value => arg.startsWith(value)) ||\n debugEquals.some(value => arg === value);\n });\n }\n return false;\n }\n function assertStdio(process) {\n if (process.stdin === null || process.stdout === null || process.stderr === null) {\n throw new Error('Process created without stdio streams');\n }\n }\n const server = this._serverOptions;\n // We got a function.\n if (Is.func(server)) {\n return server().then((result) => {\n if (client_1.MessageTransports.is(result)) {\n this._isDetached = !!result.detached;\n return result;\n }\n else if (StreamInfo.is(result)) {\n this._isDetached = !!result.detached;\n return { reader: new node_1.StreamMessageReader(result.reader), writer: new node_1.StreamMessageWriter(result.writer) };\n }\n else {\n let cp;\n if (ChildProcessInfo.is(result)) {\n cp = result.process;\n this._isDetached = result.detached;\n }\n else {\n cp = result;\n this._isDetached = false;\n }\n cp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n return { reader: new node_1.StreamMessageReader(cp.stdout), writer: new node_1.StreamMessageWriter(cp.stdin) };\n }\n });\n }\n let json;\n let runDebug = server;\n if (runDebug.run || runDebug.debug) {\n if (this._forceDebug || startedInDebugMode()) {\n json = runDebug.debug;\n this._isInDebugMode = true;\n }\n else {\n json = runDebug.run;\n this._isInDebugMode = false;\n }\n }\n else {\n json = server;\n }\n return this._getServerWorkingDir(json.options).then(serverWorkingDir => {\n if (NodeModule.is(json) && json.module) {\n let node = json;\n let transport = node.transport || TransportKind.stdio;\n if (node.runtime) {\n const args = [];\n const options = node.options ?? Object.create(null);\n if (options.execArgv) {\n options.execArgv.forEach(element => args.push(element));\n }\n args.push(node.module);\n if (node.args) {\n node.args.forEach(element => args.push(element));\n }\n const execOptions = Object.create(null);\n execOptions.cwd = serverWorkingDir;\n execOptions.env = getEnvironment(options.env, false);\n const runtime = this._getRuntimePath(node.runtime, serverWorkingDir);\n let pipeName = undefined;\n if (transport === TransportKind.ipc) {\n // exec options not correctly typed in lib\n execOptions.stdio = [null, null, null, 'ipc'];\n args.push('--node-ipc');\n }\n else if (transport === TransportKind.stdio) {\n args.push('--stdio');\n }\n else if (transport === TransportKind.pipe) {\n pipeName = (0, node_1.generateRandomPipeName)();\n args.push(`--pipe=${pipeName}`);\n }\n else if (Transport.isSocket(transport)) {\n args.push(`--socket=${transport.port}`);\n }\n args.push(`--clientProcessId=${process.pid.toString()}`);\n if (transport === TransportKind.ipc || transport === TransportKind.stdio) {\n const serverProcess = cp.spawn(runtime, args, execOptions);\n if (!serverProcess || !serverProcess.pid) {\n return handleChildProcessStartError(serverProcess, `Launching server using runtime ${runtime} failed.`);\n }\n this._serverProcess = serverProcess;\n serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n if (transport === TransportKind.ipc) {\n serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n return Promise.resolve({ reader: new node_1.IPCMessageReader(serverProcess), writer: new node_1.IPCMessageWriter(serverProcess) });\n }\n else {\n return Promise.resolve({ reader: new node_1.StreamMessageReader(serverProcess.stdout), writer: new node_1.StreamMessageWriter(serverProcess.stdin) });\n }\n }\n else if (transport === TransportKind.pipe) {\n return (0, node_1.createClientPipeTransport)(pipeName).then((transport) => {\n const process = cp.spawn(runtime, args, execOptions);\n if (!process || !process.pid) {\n return handleChildProcessStartError(process, `Launching server using runtime ${runtime} failed.`);\n }\n this._serverProcess = process;\n process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n return transport.onConnected().then((protocol) => {\n return { reader: protocol[0], writer: protocol[1] };\n });\n });\n }\n else if (Transport.isSocket(transport)) {\n return (0, node_1.createClientSocketTransport)(transport.port).then((transport) => {\n const process = cp.spawn(runtime, args, execOptions);\n if (!process || !process.pid) {\n return handleChildProcessStartError(process, `Launching server using runtime ${runtime} failed.`);\n }\n this._serverProcess = process;\n process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n return transport.onConnected().then((protocol) => {\n return { reader: protocol[0], writer: protocol[1] };\n });\n });\n }\n }\n else {\n let pipeName = undefined;\n return new Promise((resolve, reject) => {\n const args = (node.args && node.args.slice()) ?? [];\n if (transport === TransportKind.ipc) {\n args.push('--node-ipc');\n }\n else if (transport === TransportKind.stdio) {\n args.push('--stdio');\n }\n else if (transport === TransportKind.pipe) {\n pipeName = (0, node_1.generateRandomPipeName)();\n args.push(`--pipe=${pipeName}`);\n }\n else if (Transport.isSocket(transport)) {\n args.push(`--socket=${transport.port}`);\n }\n args.push(`--clientProcessId=${process.pid.toString()}`);\n const options = node.options ?? Object.create(null);\n options.env = getEnvironment(options.env, true);\n options.execArgv = options.execArgv || [];\n options.cwd = serverWorkingDir;\n options.silent = true;\n if (transport === TransportKind.ipc || transport === TransportKind.stdio) {\n const sp = cp.fork(node.module, args || [], options);\n assertStdio(sp);\n this._serverProcess = sp;\n sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n if (transport === TransportKind.ipc) {\n sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n resolve({ reader: new node_1.IPCMessageReader(this._serverProcess), writer: new node_1.IPCMessageWriter(this._serverProcess) });\n }\n else {\n resolve({ reader: new node_1.StreamMessageReader(sp.stdout), writer: new node_1.StreamMessageWriter(sp.stdin) });\n }\n }\n else if (transport === TransportKind.pipe) {\n (0, node_1.createClientPipeTransport)(pipeName).then((transport) => {\n const sp = cp.fork(node.module, args || [], options);\n assertStdio(sp);\n this._serverProcess = sp;\n sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n transport.onConnected().then((protocol) => {\n resolve({ reader: protocol[0], writer: protocol[1] });\n }, reject);\n }, reject);\n }\n else if (Transport.isSocket(transport)) {\n (0, node_1.createClientSocketTransport)(transport.port).then((transport) => {\n const sp = cp.fork(node.module, args || [], options);\n assertStdio(sp);\n this._serverProcess = sp;\n sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n transport.onConnected().then((protocol) => {\n resolve({ reader: protocol[0], writer: protocol[1] });\n }, reject);\n }, reject);\n }\n });\n }\n }\n else if (Executable.is(json) && json.command) {\n const command = json;\n const args = json.args !== undefined ? json.args.slice(0) : [];\n let pipeName = undefined;\n const transport = json.transport;\n if (transport === TransportKind.stdio) {\n args.push('--stdio');\n }\n else if (transport === TransportKind.pipe) {\n pipeName = (0, node_1.generateRandomPipeName)();\n args.push(`--pipe=${pipeName}`);\n }\n else if (Transport.isSocket(transport)) {\n args.push(`--socket=${transport.port}`);\n }\n else if (transport === TransportKind.ipc) {\n throw new Error(`Transport kind ipc is not support for command executable`);\n }\n const options = Object.assign({}, command.options);\n options.cwd = options.cwd || serverWorkingDir;\n if (transport === undefined || transport === TransportKind.stdio) {\n const serverProcess = cp.spawn(command.command, args, options);\n if (!serverProcess || !serverProcess.pid) {\n return handleChildProcessStartError(serverProcess, `Launching server using command ${command.command} failed.`);\n }\n serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n this._serverProcess = serverProcess;\n this._isDetached = !!options.detached;\n return Promise.resolve({ reader: new node_1.StreamMessageReader(serverProcess.stdout), writer: new node_1.StreamMessageWriter(serverProcess.stdin) });\n }\n else if (transport === TransportKind.pipe) {\n return (0, node_1.createClientPipeTransport)(pipeName).then((transport) => {\n const serverProcess = cp.spawn(command.command, args, options);\n if (!serverProcess || !serverProcess.pid) {\n return handleChildProcessStartError(serverProcess, `Launching server using command ${command.command} failed.`);\n }\n this._serverProcess = serverProcess;\n this._isDetached = !!options.detached;\n serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n return transport.onConnected().then((protocol) => {\n return { reader: protocol[0], writer: protocol[1] };\n });\n });\n }\n else if (Transport.isSocket(transport)) {\n return (0, node_1.createClientSocketTransport)(transport.port).then((transport) => {\n const serverProcess = cp.spawn(command.command, args, options);\n if (!serverProcess || !serverProcess.pid) {\n return handleChildProcessStartError(serverProcess, `Launching server using command ${command.command} failed.`);\n }\n this._serverProcess = serverProcess;\n this._isDetached = !!options.detached;\n serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n return transport.onConnected().then((protocol) => {\n return { reader: protocol[0], writer: protocol[1] };\n });\n });\n }\n }\n return Promise.reject(new Error(`Unsupported server configuration ` + JSON.stringify(server, null, 4)));\n });\n }\n _getRuntimePath(runtime, serverWorkingDirectory) {\n if (path.isAbsolute(runtime)) {\n return runtime;\n }\n const mainRootPath = this._mainGetRootPath();\n if (mainRootPath !== undefined) {\n const result = path.join(mainRootPath, runtime);\n if (fs.existsSync(result)) {\n return result;\n }\n }\n if (serverWorkingDirectory !== undefined) {\n const result = path.join(serverWorkingDirectory, runtime);\n if (fs.existsSync(result)) {\n return result;\n }\n }\n return runtime;\n }\n _mainGetRootPath() {\n let folders = vscode_1.workspace.workspaceFolders;\n if (!folders || folders.length === 0) {\n return undefined;\n }\n let folder = folders[0];\n if (folder.uri.scheme === 'file') {\n return folder.uri.fsPath;\n }\n return undefined;\n }\n _getServerWorkingDir(options) {\n let cwd = options && options.cwd;\n if (!cwd) {\n cwd = this.clientOptions.workspaceFolder\n ? this.clientOptions.workspaceFolder.uri.fsPath\n : this._mainGetRootPath();\n }\n if (cwd) {\n // make sure the folder exists otherwise creating the process will fail\n return new Promise(s => {\n fs.lstat(cwd, (err, stats) => {\n s(!err && stats.isDirectory() ? cwd : undefined);\n });\n });\n }\n return Promise.resolve(undefined);\n }\n}\nexports.LanguageClient = LanguageClient;\nclass SettingMonitor {\n constructor(_client, _setting) {\n this._client = _client;\n this._setting = _setting;\n this._listeners = [];\n }\n start() {\n vscode_1.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this._listeners);\n this.onDidChangeConfiguration();\n return new vscode_1.Disposable(() => {\n if (this._client.needsStop()) {\n void this._client.stop();\n }\n });\n }\n onDidChangeConfiguration() {\n let index = this._setting.indexOf('.');\n let primary = index >= 0 ? this._setting.substr(0, index) : this._setting;\n let rest = index >= 0 ? this._setting.substr(index + 1) : undefined;\n let enabled = rest ? vscode_1.workspace.getConfiguration(primary).get(rest, false) : vscode_1.workspace.getConfiguration(primary);\n if (enabled && this._client.needsStart()) {\n this._client.start().catch((error) => this._client.error('Start failed after configuration change', error, 'force'));\n }\n else if (!enabled && this._client.needsStop()) {\n void this._client.stop().catch((error) => this._client.error('Stop failed after configuration change', error, 'force'));\n }\n }\n}\nexports.SettingMonitor = SettingMonitor;\nfunction handleChildProcessStartError(process, message) {\n if (process === null) {\n return Promise.reject(message);\n }\n return new Promise((_, reject) => {\n process.on('error', (err) => {\n reject(`${message} ${err}`);\n });\n // the error event should always be run immediately,\n // but race on it just in case\n setImmediate(() => reject(message));\n });\n}\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.terminate = void 0;\nconst cp = require(\"child_process\");\nconst path_1 = require(\"path\");\nconst isWindows = (process.platform === 'win32');\nconst isMacintosh = (process.platform === 'darwin');\nconst isLinux = (process.platform === 'linux');\nfunction terminate(process, cwd) {\n if (isWindows) {\n try {\n // This we run in Atom execFileSync is available.\n // Ignore stderr since this is otherwise piped to parent.stderr\n // which might be already closed.\n let options = {\n stdio: ['pipe', 'pipe', 'ignore']\n };\n if (cwd) {\n options.cwd = cwd;\n }\n cp.execFileSync('taskkill', ['/T', '/F', '/PID', process.pid.toString()], options);\n return true;\n }\n catch (err) {\n return false;\n }\n }\n else if (isLinux || isMacintosh) {\n try {\n var cmd = (0, path_1.join)(__dirname, 'terminateProcess.sh');\n var result = cp.spawnSync(cmd, [process.pid.toString()]);\n return result.error ? false : true;\n }\n catch (err) {\n return false;\n }\n }\n else {\n process.kill('SIGKILL');\n return true;\n }\n}\nexports.terminate = terminate;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LSPErrorCodes = exports.createProtocolConnection = void 0;\n__exportStar(require(\"vscode-jsonrpc\"), exports);\n__exportStar(require(\"vscode-languageserver-types\"), exports);\n__exportStar(require(\"./messages\"), exports);\n__exportStar(require(\"./protocol\"), exports);\nvar connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"createProtocolConnection\", { enumerable: true, get: function () { return connection_1.createProtocolConnection; } });\nvar LSPErrorCodes;\n(function (LSPErrorCodes) {\n /**\n * This is the start range of LSP reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n LSPErrorCodes.lspReservedErrorRangeStart = -32899;\n /**\n * A request failed but it was syntactically correct, e.g the\n * method name was known and the parameters were valid. The error\n * message should contain human readable information about why\n * the request failed.\n *\n * @since 3.17.0\n */\n LSPErrorCodes.RequestFailed = -32803;\n /**\n * The server cancelled the request. This error code should\n * only be used for requests that explicitly support being\n * server cancellable.\n *\n * @since 3.17.0\n */\n LSPErrorCodes.ServerCancelled = -32802;\n /**\n * The server detected that the content of a document got\n * modified outside normal conditions. A server should\n * NOT send this error code if it detects a content change\n * in it unprocessed messages. The result even computed\n * on an older state might still be useful for the client.\n *\n * If a client decides that a result is not of any use anymore\n * the client should cancel the request.\n */\n LSPErrorCodes.ContentModified = -32801;\n /**\n * The client has canceled a request and a server as detected\n * the cancel.\n */\n LSPErrorCodes.RequestCancelled = -32800;\n /**\n * This is the end range of LSP reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n LSPErrorCodes.lspReservedErrorRangeEnd = -32800;\n})(LSPErrorCodes = exports.LSPErrorCodes || (exports.LSPErrorCodes = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nfunction createProtocolConnection(input, output, logger, options) {\n if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, vscode_jsonrpc_1.createMessageConnection)(input, output, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolNotificationType = exports.ProtocolNotificationType0 = exports.ProtocolRequestType = exports.ProtocolRequestType0 = exports.RegistrationType = exports.MessageDirection = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nvar MessageDirection;\n(function (MessageDirection) {\n MessageDirection[\"clientToServer\"] = \"clientToServer\";\n MessageDirection[\"serverToClient\"] = \"serverToClient\";\n MessageDirection[\"both\"] = \"both\";\n})(MessageDirection = exports.MessageDirection || (exports.MessageDirection = {}));\nclass RegistrationType {\n constructor(method) {\n this.method = method;\n }\n}\nexports.RegistrationType = RegistrationType;\nclass ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 {\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolRequestType0 = ProtocolRequestType0;\nclass ProtocolRequestType extends vscode_jsonrpc_1.RequestType {\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolRequestType = ProtocolRequestType;\nclass ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 {\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolNotificationType0 = ProtocolNotificationType0;\nclass ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType {\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolNotificationType = ProtocolNotificationType;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) TypeFox, Microsoft and others. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallHierarchyOutgoingCallsRequest = exports.CallHierarchyIncomingCallsRequest = exports.CallHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to result a `CallHierarchyItem` in a document at a given position.\n * Can be used as an input to an incoming or outgoing call hierarchy.\n *\n * @since 3.16.0\n */\nvar CallHierarchyPrepareRequest;\n(function (CallHierarchyPrepareRequest) {\n CallHierarchyPrepareRequest.method = 'textDocument/prepareCallHierarchy';\n CallHierarchyPrepareRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest.method);\n})(CallHierarchyPrepareRequest = exports.CallHierarchyPrepareRequest || (exports.CallHierarchyPrepareRequest = {}));\n/**\n * A request to resolve the incoming calls for a given `CallHierarchyItem`.\n *\n * @since 3.16.0\n */\nvar CallHierarchyIncomingCallsRequest;\n(function (CallHierarchyIncomingCallsRequest) {\n CallHierarchyIncomingCallsRequest.method = 'callHierarchy/incomingCalls';\n CallHierarchyIncomingCallsRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyIncomingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest.method);\n})(CallHierarchyIncomingCallsRequest = exports.CallHierarchyIncomingCallsRequest || (exports.CallHierarchyIncomingCallsRequest = {}));\n/**\n * A request to resolve the outgoing calls for a given `CallHierarchyItem`.\n *\n * @since 3.16.0\n */\nvar CallHierarchyOutgoingCallsRequest;\n(function (CallHierarchyOutgoingCallsRequest) {\n CallHierarchyOutgoingCallsRequest.method = 'callHierarchy/outgoingCalls';\n CallHierarchyOutgoingCallsRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CallHierarchyOutgoingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest.method);\n})(CallHierarchyOutgoingCallsRequest = exports.CallHierarchyOutgoingCallsRequest || (exports.CallHierarchyOutgoingCallsRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorPresentationRequest = exports.DocumentColorRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to list all color symbols found in a given text document. The request's\n * parameter is of type {@link DocumentColorParams} the\n * response is of type {@link ColorInformation ColorInformation[]} or a Thenable\n * that resolves to such.\n */\nvar DocumentColorRequest;\n(function (DocumentColorRequest) {\n DocumentColorRequest.method = 'textDocument/documentColor';\n DocumentColorRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentColorRequest.type = new messages_1.ProtocolRequestType(DocumentColorRequest.method);\n})(DocumentColorRequest = exports.DocumentColorRequest || (exports.DocumentColorRequest = {}));\n/**\n * A request to list all presentation for a color. The request's\n * parameter is of type {@link ColorPresentationParams} the\n * response is of type {@link ColorInformation ColorInformation[]} or a Thenable\n * that resolves to such.\n */\nvar ColorPresentationRequest;\n(function (ColorPresentationRequest) {\n ColorPresentationRequest.method = 'textDocument/colorPresentation';\n ColorPresentationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ColorPresentationRequest.type = new messages_1.ProtocolRequestType(ColorPresentationRequest.method);\n})(ColorPresentationRequest = exports.ColorPresentationRequest || (exports.ColorPresentationRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigurationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n//---- Get Configuration request ----\n/**\n * The 'workspace/configuration' request is sent from the server to the client to fetch a certain\n * configuration setting.\n *\n * This pull model replaces the old push model were the client signaled configuration change via an\n * event. If the server still needs to react to configuration changes (since the server caches the\n * result of `workspace/configuration` requests) the server should register for an empty configuration\n * change event and empty the cache if such an event is received.\n */\nvar ConfigurationRequest;\n(function (ConfigurationRequest) {\n ConfigurationRequest.method = 'workspace/configuration';\n ConfigurationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ConfigurationRequest.type = new messages_1.ProtocolRequestType(ConfigurationRequest.method);\n})(ConfigurationRequest = exports.ConfigurationRequest || (exports.ConfigurationRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeclarationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the type definition locations of a symbol at a given text\n * document position. The request's parameter is of type [TextDocumentPositionParams]\n * (#TextDocumentPositionParams) the response is of type {@link Declaration}\n * or a typed array of {@link DeclarationLink} or a Thenable that resolves\n * to such.\n */\nvar DeclarationRequest;\n(function (DeclarationRequest) {\n DeclarationRequest.method = 'textDocument/declaration';\n DeclarationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DeclarationRequest.type = new messages_1.ProtocolRequestType(DeclarationRequest.method);\n})(DeclarationRequest = exports.DeclarationRequest || (exports.DeclarationRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticRefreshRequest = exports.WorkspaceDiagnosticRequest = exports.DocumentDiagnosticRequest = exports.DocumentDiagnosticReportKind = exports.DiagnosticServerCancellationData = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst Is = require(\"./utils/is\");\nconst messages_1 = require(\"./messages\");\n/**\n * @since 3.17.0\n */\nvar DiagnosticServerCancellationData;\n(function (DiagnosticServerCancellationData) {\n function is(value) {\n const candidate = value;\n return candidate && Is.boolean(candidate.retriggerRequest);\n }\n DiagnosticServerCancellationData.is = is;\n})(DiagnosticServerCancellationData = exports.DiagnosticServerCancellationData || (exports.DiagnosticServerCancellationData = {}));\n/**\n * The document diagnostic report kinds.\n *\n * @since 3.17.0\n */\nvar DocumentDiagnosticReportKind;\n(function (DocumentDiagnosticReportKind) {\n /**\n * A diagnostic report with a full\n * set of problems.\n */\n DocumentDiagnosticReportKind.Full = 'full';\n /**\n * A report indicating that the last\n * returned report is still accurate.\n */\n DocumentDiagnosticReportKind.Unchanged = 'unchanged';\n})(DocumentDiagnosticReportKind = exports.DocumentDiagnosticReportKind || (exports.DocumentDiagnosticReportKind = {}));\n/**\n * The document diagnostic request definition.\n *\n * @since 3.17.0\n */\nvar DocumentDiagnosticRequest;\n(function (DocumentDiagnosticRequest) {\n DocumentDiagnosticRequest.method = 'textDocument/diagnostic';\n DocumentDiagnosticRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentDiagnosticRequest.type = new messages_1.ProtocolRequestType(DocumentDiagnosticRequest.method);\n DocumentDiagnosticRequest.partialResult = new vscode_jsonrpc_1.ProgressType();\n})(DocumentDiagnosticRequest = exports.DocumentDiagnosticRequest || (exports.DocumentDiagnosticRequest = {}));\n/**\n * The workspace diagnostic request definition.\n *\n * @since 3.17.0\n */\nvar WorkspaceDiagnosticRequest;\n(function (WorkspaceDiagnosticRequest) {\n WorkspaceDiagnosticRequest.method = 'workspace/diagnostic';\n WorkspaceDiagnosticRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceDiagnosticRequest.type = new messages_1.ProtocolRequestType(WorkspaceDiagnosticRequest.method);\n WorkspaceDiagnosticRequest.partialResult = new vscode_jsonrpc_1.ProgressType();\n})(WorkspaceDiagnosticRequest = exports.WorkspaceDiagnosticRequest || (exports.WorkspaceDiagnosticRequest = {}));\n/**\n * The diagnostic refresh request definition.\n *\n * @since 3.17.0\n */\nvar DiagnosticRefreshRequest;\n(function (DiagnosticRefreshRequest) {\n DiagnosticRefreshRequest.method = `workspace/diagnostic/refresh`;\n DiagnosticRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n DiagnosticRefreshRequest.type = new messages_1.ProtocolRequestType0(DiagnosticRefreshRequest.method);\n})(DiagnosticRefreshRequest = exports.DiagnosticRefreshRequest || (exports.DiagnosticRefreshRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WillDeleteFilesRequest = exports.DidDeleteFilesNotification = exports.DidRenameFilesNotification = exports.WillRenameFilesRequest = exports.DidCreateFilesNotification = exports.WillCreateFilesRequest = exports.FileOperationPatternKind = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A pattern kind describing if a glob pattern matches a file a folder or\n * both.\n *\n * @since 3.16.0\n */\nvar FileOperationPatternKind;\n(function (FileOperationPatternKind) {\n /**\n * The pattern matches a file only.\n */\n FileOperationPatternKind.file = 'file';\n /**\n * The pattern matches a folder only.\n */\n FileOperationPatternKind.folder = 'folder';\n})(FileOperationPatternKind = exports.FileOperationPatternKind || (exports.FileOperationPatternKind = {}));\n/**\n * The will create files request is sent from the client to the server before files are actually\n * created as long as the creation is triggered from within the client.\n *\n * The request can return a `WorkspaceEdit` which will be applied to workspace before the\n * files are created. Hence the `WorkspaceEdit` can not manipulate the content of the file\n * to be created.\n *\n * @since 3.16.0\n */\nvar WillCreateFilesRequest;\n(function (WillCreateFilesRequest) {\n WillCreateFilesRequest.method = 'workspace/willCreateFiles';\n WillCreateFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillCreateFilesRequest.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest.method);\n})(WillCreateFilesRequest = exports.WillCreateFilesRequest || (exports.WillCreateFilesRequest = {}));\n/**\n * The did create files notification is sent from the client to the server when\n * files were created from within the client.\n *\n * @since 3.16.0\n */\nvar DidCreateFilesNotification;\n(function (DidCreateFilesNotification) {\n DidCreateFilesNotification.method = 'workspace/didCreateFiles';\n DidCreateFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCreateFilesNotification.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification.method);\n})(DidCreateFilesNotification = exports.DidCreateFilesNotification || (exports.DidCreateFilesNotification = {}));\n/**\n * The will rename files request is sent from the client to the server before files are actually\n * renamed as long as the rename is triggered from within the client.\n *\n * @since 3.16.0\n */\nvar WillRenameFilesRequest;\n(function (WillRenameFilesRequest) {\n WillRenameFilesRequest.method = 'workspace/willRenameFiles';\n WillRenameFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillRenameFilesRequest.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest.method);\n})(WillRenameFilesRequest = exports.WillRenameFilesRequest || (exports.WillRenameFilesRequest = {}));\n/**\n * The did rename files notification is sent from the client to the server when\n * files were renamed from within the client.\n *\n * @since 3.16.0\n */\nvar DidRenameFilesNotification;\n(function (DidRenameFilesNotification) {\n DidRenameFilesNotification.method = 'workspace/didRenameFiles';\n DidRenameFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidRenameFilesNotification.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification.method);\n})(DidRenameFilesNotification = exports.DidRenameFilesNotification || (exports.DidRenameFilesNotification = {}));\n/**\n * The will delete files request is sent from the client to the server before files are actually\n * deleted as long as the deletion is triggered from within the client.\n *\n * @since 3.16.0\n */\nvar DidDeleteFilesNotification;\n(function (DidDeleteFilesNotification) {\n DidDeleteFilesNotification.method = 'workspace/didDeleteFiles';\n DidDeleteFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidDeleteFilesNotification.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification.method);\n})(DidDeleteFilesNotification = exports.DidDeleteFilesNotification || (exports.DidDeleteFilesNotification = {}));\n/**\n * The did delete files notification is sent from the client to the server when\n * files were deleted from within the client.\n *\n * @since 3.16.0\n */\nvar WillDeleteFilesRequest;\n(function (WillDeleteFilesRequest) {\n WillDeleteFilesRequest.method = 'workspace/willDeleteFiles';\n WillDeleteFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillDeleteFilesRequest.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest.method);\n})(WillDeleteFilesRequest = exports.WillDeleteFilesRequest || (exports.WillDeleteFilesRequest = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FoldingRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide folding ranges in a document. The request's\n * parameter is of type {@link FoldingRangeParams}, the\n * response is of type {@link FoldingRangeList} or a Thenable\n * that resolves to such.\n */\nvar FoldingRangeRequest;\n(function (FoldingRangeRequest) {\n FoldingRangeRequest.method = 'textDocument/foldingRange';\n FoldingRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n FoldingRangeRequest.type = new messages_1.ProtocolRequestType(FoldingRangeRequest.method);\n})(FoldingRangeRequest = exports.FoldingRangeRequest || (exports.FoldingRangeRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplementationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the implementation locations of a symbol at a given text\n * document position. The request's parameter is of type [TextDocumentPositionParams]\n * (#TextDocumentPositionParams) the response is of type {@link Definition} or a\n * Thenable that resolves to such.\n */\nvar ImplementationRequest;\n(function (ImplementationRequest) {\n ImplementationRequest.method = 'textDocument/implementation';\n ImplementationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ImplementationRequest.type = new messages_1.ProtocolRequestType(ImplementationRequest.method);\n})(ImplementationRequest = exports.ImplementationRequest || (exports.ImplementationRequest = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlayHintRefreshRequest = exports.InlayHintResolveRequest = exports.InlayHintRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inlay hints in a document. The request's parameter is of\n * type {@link InlayHintsParams}, the response is of type\n * {@link InlayHint InlayHint[]} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlayHintRequest;\n(function (InlayHintRequest) {\n InlayHintRequest.method = 'textDocument/inlayHint';\n InlayHintRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlayHintRequest.type = new messages_1.ProtocolRequestType(InlayHintRequest.method);\n})(InlayHintRequest = exports.InlayHintRequest || (exports.InlayHintRequest = {}));\n/**\n * A request to resolve additional properties for an inlay hint.\n * The request's parameter is of type {@link InlayHint}, the response is\n * of type {@link InlayHint} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlayHintResolveRequest;\n(function (InlayHintResolveRequest) {\n InlayHintResolveRequest.method = 'inlayHint/resolve';\n InlayHintResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlayHintResolveRequest.type = new messages_1.ProtocolRequestType(InlayHintResolveRequest.method);\n})(InlayHintResolveRequest = exports.InlayHintResolveRequest || (exports.InlayHintResolveRequest = {}));\n/**\n * @since 3.17.0\n */\nvar InlayHintRefreshRequest;\n(function (InlayHintRefreshRequest) {\n InlayHintRefreshRequest.method = `workspace/inlayHint/refresh`;\n InlayHintRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n InlayHintRefreshRequest.type = new messages_1.ProtocolRequestType0(InlayHintRefreshRequest.method);\n})(InlayHintRefreshRequest = exports.InlayHintRefreshRequest || (exports.InlayHintRefreshRequest = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineValueRefreshRequest = exports.InlineValueRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inline values in a document. The request's parameter is of\n * type {@link InlineValueParams}, the response is of type\n * {@link InlineValue InlineValue[]} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlineValueRequest;\n(function (InlineValueRequest) {\n InlineValueRequest.method = 'textDocument/inlineValue';\n InlineValueRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InlineValueRequest.type = new messages_1.ProtocolRequestType(InlineValueRequest.method);\n})(InlineValueRequest = exports.InlineValueRequest || (exports.InlineValueRequest = {}));\n/**\n * @since 3.17.0\n */\nvar InlineValueRefreshRequest;\n(function (InlineValueRefreshRequest) {\n InlineValueRefreshRequest.method = `workspace/inlineValue/refresh`;\n InlineValueRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n InlineValueRefreshRequest.type = new messages_1.ProtocolRequestType0(InlineValueRefreshRequest.method);\n})(InlineValueRefreshRequest = exports.InlineValueRefreshRequest || (exports.InlineValueRefreshRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceSymbolRequest = exports.CodeActionResolveRequest = exports.CodeActionRequest = exports.DocumentSymbolRequest = exports.DocumentHighlightRequest = exports.ReferencesRequest = exports.DefinitionRequest = exports.SignatureHelpRequest = exports.SignatureHelpTriggerKind = exports.HoverRequest = exports.CompletionResolveRequest = exports.CompletionRequest = exports.CompletionTriggerKind = exports.PublishDiagnosticsNotification = exports.WatchKind = exports.RelativePattern = exports.FileChangeType = exports.DidChangeWatchedFilesNotification = exports.WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentNotification = exports.TextDocumentSaveReason = exports.DidSaveTextDocumentNotification = exports.DidCloseTextDocumentNotification = exports.DidChangeTextDocumentNotification = exports.TextDocumentContentChangeEvent = exports.DidOpenTextDocumentNotification = exports.TextDocumentSyncKind = exports.TelemetryEventNotification = exports.LogMessageNotification = exports.ShowMessageRequest = exports.ShowMessageNotification = exports.MessageType = exports.DidChangeConfigurationNotification = exports.ExitNotification = exports.ShutdownRequest = exports.InitializedNotification = exports.InitializeErrorCodes = exports.InitializeRequest = exports.WorkDoneProgressOptions = exports.TextDocumentRegistrationOptions = exports.StaticRegistrationOptions = exports.PositionEncodingKind = exports.FailureHandlingKind = exports.ResourceOperationKind = exports.UnregistrationRequest = exports.RegistrationRequest = exports.DocumentSelector = exports.NotebookCellTextDocumentFilter = exports.NotebookDocumentFilter = exports.TextDocumentFilter = void 0;\nexports.TypeHierarchySubtypesRequest = exports.TypeHierarchyPrepareRequest = exports.MonikerRequest = exports.MonikerKind = exports.UniquenessLevel = exports.WillDeleteFilesRequest = exports.DidDeleteFilesNotification = exports.WillRenameFilesRequest = exports.DidRenameFilesNotification = exports.WillCreateFilesRequest = exports.DidCreateFilesNotification = exports.FileOperationPatternKind = exports.LinkedEditingRangeRequest = exports.ShowDocumentRequest = exports.SemanticTokensRegistrationType = exports.SemanticTokensRefreshRequest = exports.SemanticTokensRangeRequest = exports.SemanticTokensDeltaRequest = exports.SemanticTokensRequest = exports.TokenFormat = exports.CallHierarchyPrepareRequest = exports.CallHierarchyOutgoingCallsRequest = exports.CallHierarchyIncomingCallsRequest = exports.WorkDoneProgressCancelNotification = exports.WorkDoneProgressCreateRequest = exports.WorkDoneProgress = exports.SelectionRangeRequest = exports.DeclarationRequest = exports.FoldingRangeRequest = exports.ColorPresentationRequest = exports.DocumentColorRequest = exports.ConfigurationRequest = exports.DidChangeWorkspaceFoldersNotification = exports.WorkspaceFoldersRequest = exports.TypeDefinitionRequest = exports.ImplementationRequest = exports.ApplyWorkspaceEditRequest = exports.ExecuteCommandRequest = exports.PrepareRenameRequest = exports.RenameRequest = exports.PrepareSupportDefaultBehavior = exports.DocumentOnTypeFormattingRequest = exports.DocumentRangeFormattingRequest = exports.DocumentFormattingRequest = exports.DocumentLinkResolveRequest = exports.DocumentLinkRequest = exports.CodeLensRefreshRequest = exports.CodeLensResolveRequest = exports.CodeLensRequest = exports.WorkspaceSymbolResolveRequest = void 0;\nexports.DidCloseNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification = exports.NotebookCellArrayChange = exports.DidOpenNotebookDocumentNotification = exports.NotebookDocumentSyncRegistrationType = exports.NotebookDocument = exports.NotebookCell = exports.ExecutionSummary = exports.NotebookCellKind = exports.DiagnosticRefreshRequest = exports.WorkspaceDiagnosticRequest = exports.DocumentDiagnosticRequest = exports.DocumentDiagnosticReportKind = exports.DiagnosticServerCancellationData = exports.InlayHintRefreshRequest = exports.InlayHintResolveRequest = exports.InlayHintRequest = exports.InlineValueRefreshRequest = exports.InlineValueRequest = exports.TypeHierarchySupertypesRequest = void 0;\nconst messages_1 = require(\"./messages\");\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = require(\"./utils/is\");\nconst protocol_implementation_1 = require(\"./protocol.implementation\");\nObject.defineProperty(exports, \"ImplementationRequest\", { enumerable: true, get: function () { return protocol_implementation_1.ImplementationRequest; } });\nconst protocol_typeDefinition_1 = require(\"./protocol.typeDefinition\");\nObject.defineProperty(exports, \"TypeDefinitionRequest\", { enumerable: true, get: function () { return protocol_typeDefinition_1.TypeDefinitionRequest; } });\nconst protocol_workspaceFolder_1 = require(\"./protocol.workspaceFolder\");\nObject.defineProperty(exports, \"WorkspaceFoldersRequest\", { enumerable: true, get: function () { return protocol_workspaceFolder_1.WorkspaceFoldersRequest; } });\nObject.defineProperty(exports, \"DidChangeWorkspaceFoldersNotification\", { enumerable: true, get: function () { return protocol_workspaceFolder_1.DidChangeWorkspaceFoldersNotification; } });\nconst protocol_configuration_1 = require(\"./protocol.configuration\");\nObject.defineProperty(exports, \"ConfigurationRequest\", { enumerable: true, get: function () { return protocol_configuration_1.ConfigurationRequest; } });\nconst protocol_colorProvider_1 = require(\"./protocol.colorProvider\");\nObject.defineProperty(exports, \"DocumentColorRequest\", { enumerable: true, get: function () { return protocol_colorProvider_1.DocumentColorRequest; } });\nObject.defineProperty(exports, \"ColorPresentationRequest\", { enumerable: true, get: function () { return protocol_colorProvider_1.ColorPresentationRequest; } });\nconst protocol_foldingRange_1 = require(\"./protocol.foldingRange\");\nObject.defineProperty(exports, \"FoldingRangeRequest\", { enumerable: true, get: function () { return protocol_foldingRange_1.FoldingRangeRequest; } });\nconst protocol_declaration_1 = require(\"./protocol.declaration\");\nObject.defineProperty(exports, \"DeclarationRequest\", { enumerable: true, get: function () { return protocol_declaration_1.DeclarationRequest; } });\nconst protocol_selectionRange_1 = require(\"./protocol.selectionRange\");\nObject.defineProperty(exports, \"SelectionRangeRequest\", { enumerable: true, get: function () { return protocol_selectionRange_1.SelectionRangeRequest; } });\nconst protocol_progress_1 = require(\"./protocol.progress\");\nObject.defineProperty(exports, \"WorkDoneProgress\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgress; } });\nObject.defineProperty(exports, \"WorkDoneProgressCreateRequest\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgressCreateRequest; } });\nObject.defineProperty(exports, \"WorkDoneProgressCancelNotification\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgressCancelNotification; } });\nconst protocol_callHierarchy_1 = require(\"./protocol.callHierarchy\");\nObject.defineProperty(exports, \"CallHierarchyIncomingCallsRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest; } });\nObject.defineProperty(exports, \"CallHierarchyOutgoingCallsRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest; } });\nObject.defineProperty(exports, \"CallHierarchyPrepareRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyPrepareRequest; } });\nconst protocol_semanticTokens_1 = require(\"./protocol.semanticTokens\");\nObject.defineProperty(exports, \"TokenFormat\", { enumerable: true, get: function () { return protocol_semanticTokens_1.TokenFormat; } });\nObject.defineProperty(exports, \"SemanticTokensRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRequest; } });\nObject.defineProperty(exports, \"SemanticTokensDeltaRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensDeltaRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRangeRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRangeRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRefreshRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRefreshRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRegistrationType\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRegistrationType; } });\nconst protocol_showDocument_1 = require(\"./protocol.showDocument\");\nObject.defineProperty(exports, \"ShowDocumentRequest\", { enumerable: true, get: function () { return protocol_showDocument_1.ShowDocumentRequest; } });\nconst protocol_linkedEditingRange_1 = require(\"./protocol.linkedEditingRange\");\nObject.defineProperty(exports, \"LinkedEditingRangeRequest\", { enumerable: true, get: function () { return protocol_linkedEditingRange_1.LinkedEditingRangeRequest; } });\nconst protocol_fileOperations_1 = require(\"./protocol.fileOperations\");\nObject.defineProperty(exports, \"FileOperationPatternKind\", { enumerable: true, get: function () { return protocol_fileOperations_1.FileOperationPatternKind; } });\nObject.defineProperty(exports, \"DidCreateFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidCreateFilesNotification; } });\nObject.defineProperty(exports, \"WillCreateFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillCreateFilesRequest; } });\nObject.defineProperty(exports, \"DidRenameFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidRenameFilesNotification; } });\nObject.defineProperty(exports, \"WillRenameFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillRenameFilesRequest; } });\nObject.defineProperty(exports, \"DidDeleteFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidDeleteFilesNotification; } });\nObject.defineProperty(exports, \"WillDeleteFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillDeleteFilesRequest; } });\nconst protocol_moniker_1 = require(\"./protocol.moniker\");\nObject.defineProperty(exports, \"UniquenessLevel\", { enumerable: true, get: function () { return protocol_moniker_1.UniquenessLevel; } });\nObject.defineProperty(exports, \"MonikerKind\", { enumerable: true, get: function () { return protocol_moniker_1.MonikerKind; } });\nObject.defineProperty(exports, \"MonikerRequest\", { enumerable: true, get: function () { return protocol_moniker_1.MonikerRequest; } });\nconst protocol_typeHierarchy_1 = require(\"./protocol.typeHierarchy\");\nObject.defineProperty(exports, \"TypeHierarchyPrepareRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchyPrepareRequest; } });\nObject.defineProperty(exports, \"TypeHierarchySubtypesRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchySubtypesRequest; } });\nObject.defineProperty(exports, \"TypeHierarchySupertypesRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchySupertypesRequest; } });\nconst protocol_inlineValue_1 = require(\"./protocol.inlineValue\");\nObject.defineProperty(exports, \"InlineValueRequest\", { enumerable: true, get: function () { return protocol_inlineValue_1.InlineValueRequest; } });\nObject.defineProperty(exports, \"InlineValueRefreshRequest\", { enumerable: true, get: function () { return protocol_inlineValue_1.InlineValueRefreshRequest; } });\nconst protocol_inlayHint_1 = require(\"./protocol.inlayHint\");\nObject.defineProperty(exports, \"InlayHintRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintRequest; } });\nObject.defineProperty(exports, \"InlayHintResolveRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintResolveRequest; } });\nObject.defineProperty(exports, \"InlayHintRefreshRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintRefreshRequest; } });\nconst protocol_diagnostic_1 = require(\"./protocol.diagnostic\");\nObject.defineProperty(exports, \"DiagnosticServerCancellationData\", { enumerable: true, get: function () { return protocol_diagnostic_1.DiagnosticServerCancellationData; } });\nObject.defineProperty(exports, \"DocumentDiagnosticReportKind\", { enumerable: true, get: function () { return protocol_diagnostic_1.DocumentDiagnosticReportKind; } });\nObject.defineProperty(exports, \"DocumentDiagnosticRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.DocumentDiagnosticRequest; } });\nObject.defineProperty(exports, \"WorkspaceDiagnosticRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.WorkspaceDiagnosticRequest; } });\nObject.defineProperty(exports, \"DiagnosticRefreshRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.DiagnosticRefreshRequest; } });\nconst protocol_notebook_1 = require(\"./protocol.notebook\");\nObject.defineProperty(exports, \"NotebookCellKind\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCellKind; } });\nObject.defineProperty(exports, \"ExecutionSummary\", { enumerable: true, get: function () { return protocol_notebook_1.ExecutionSummary; } });\nObject.defineProperty(exports, \"NotebookCell\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCell; } });\nObject.defineProperty(exports, \"NotebookDocument\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookDocument; } });\nObject.defineProperty(exports, \"NotebookDocumentSyncRegistrationType\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookDocumentSyncRegistrationType; } });\nObject.defineProperty(exports, \"DidOpenNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidOpenNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"NotebookCellArrayChange\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCellArrayChange; } });\nObject.defineProperty(exports, \"DidChangeNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidChangeNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"DidSaveNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidSaveNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"DidCloseNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidCloseNotebookDocumentNotification; } });\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * The TextDocumentFilter namespace provides helper functions to work with\n * {@link TextDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar TextDocumentFilter;\n(function (TextDocumentFilter) {\n function is(value) {\n const candidate = value;\n return Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern);\n }\n TextDocumentFilter.is = is;\n})(TextDocumentFilter = exports.TextDocumentFilter || (exports.TextDocumentFilter = {}));\n/**\n * The NotebookDocumentFilter namespace provides helper functions to work with\n * {@link NotebookDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar NotebookDocumentFilter;\n(function (NotebookDocumentFilter) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (Is.string(candidate.notebookType) || Is.string(candidate.scheme) || Is.string(candidate.pattern));\n }\n NotebookDocumentFilter.is = is;\n})(NotebookDocumentFilter = exports.NotebookDocumentFilter || (exports.NotebookDocumentFilter = {}));\n/**\n * The NotebookCellTextDocumentFilter namespace provides helper functions to work with\n * {@link NotebookCellTextDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar NotebookCellTextDocumentFilter;\n(function (NotebookCellTextDocumentFilter) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && (Is.string(candidate.notebook) || NotebookDocumentFilter.is(candidate.notebook))\n && (candidate.language === undefined || Is.string(candidate.language));\n }\n NotebookCellTextDocumentFilter.is = is;\n})(NotebookCellTextDocumentFilter = exports.NotebookCellTextDocumentFilter || (exports.NotebookCellTextDocumentFilter = {}));\n/**\n * The DocumentSelector namespace provides helper functions to work with\n * {@link DocumentSelector}s.\n */\nvar DocumentSelector;\n(function (DocumentSelector) {\n function is(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n for (let elem of value) {\n if (!Is.string(elem) && !TextDocumentFilter.is(elem) && !NotebookCellTextDocumentFilter.is(elem)) {\n return false;\n }\n }\n return true;\n }\n DocumentSelector.is = is;\n})(DocumentSelector = exports.DocumentSelector || (exports.DocumentSelector = {}));\n/**\n * The `client/registerCapability` request is sent from the server to the client to register a new capability\n * handler on the client side.\n */\nvar RegistrationRequest;\n(function (RegistrationRequest) {\n RegistrationRequest.method = 'client/registerCapability';\n RegistrationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n RegistrationRequest.type = new messages_1.ProtocolRequestType(RegistrationRequest.method);\n})(RegistrationRequest = exports.RegistrationRequest || (exports.RegistrationRequest = {}));\n/**\n * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability\n * handler on the client side.\n */\nvar UnregistrationRequest;\n(function (UnregistrationRequest) {\n UnregistrationRequest.method = 'client/unregisterCapability';\n UnregistrationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n UnregistrationRequest.type = new messages_1.ProtocolRequestType(UnregistrationRequest.method);\n})(UnregistrationRequest = exports.UnregistrationRequest || (exports.UnregistrationRequest = {}));\nvar ResourceOperationKind;\n(function (ResourceOperationKind) {\n /**\n * Supports creating new files and folders.\n */\n ResourceOperationKind.Create = 'create';\n /**\n * Supports renaming existing files and folders.\n */\n ResourceOperationKind.Rename = 'rename';\n /**\n * Supports deleting existing files and folders.\n */\n ResourceOperationKind.Delete = 'delete';\n})(ResourceOperationKind = exports.ResourceOperationKind || (exports.ResourceOperationKind = {}));\nvar FailureHandlingKind;\n(function (FailureHandlingKind) {\n /**\n * Applying the workspace change is simply aborted if one of the changes provided\n * fails. All operations executed before the failing operation stay executed.\n */\n FailureHandlingKind.Abort = 'abort';\n /**\n * All operations are executed transactional. That means they either all\n * succeed or no changes at all are applied to the workspace.\n */\n FailureHandlingKind.Transactional = 'transactional';\n /**\n * If the workspace edit contains only textual file changes they are executed transactional.\n * If resource changes (create, rename or delete file) are part of the change the failure\n * handling strategy is abort.\n */\n FailureHandlingKind.TextOnlyTransactional = 'textOnlyTransactional';\n /**\n * The client tries to undo the operations already executed. But there is no\n * guarantee that this is succeeding.\n */\n FailureHandlingKind.Undo = 'undo';\n})(FailureHandlingKind = exports.FailureHandlingKind || (exports.FailureHandlingKind = {}));\n/**\n * A set of predefined position encoding kinds.\n *\n * @since 3.17.0\n */\nvar PositionEncodingKind;\n(function (PositionEncodingKind) {\n /**\n * Character offsets count UTF-8 code units (e.g. bytes).\n */\n PositionEncodingKind.UTF8 = 'utf-8';\n /**\n * Character offsets count UTF-16 code units.\n *\n * This is the default and must always be supported\n * by servers\n */\n PositionEncodingKind.UTF16 = 'utf-16';\n /**\n * Character offsets count UTF-32 code units.\n *\n * Implementation note: these are the same as Unicode codepoints,\n * so this `PositionEncodingKind` may also be used for an\n * encoding-agnostic representation of character offsets.\n */\n PositionEncodingKind.UTF32 = 'utf-32';\n})(PositionEncodingKind = exports.PositionEncodingKind || (exports.PositionEncodingKind = {}));\n/**\n * The StaticRegistrationOptions namespace provides helper functions to work with\n * {@link StaticRegistrationOptions} literals.\n */\nvar StaticRegistrationOptions;\n(function (StaticRegistrationOptions) {\n function hasId(value) {\n const candidate = value;\n return candidate && Is.string(candidate.id) && candidate.id.length > 0;\n }\n StaticRegistrationOptions.hasId = hasId;\n})(StaticRegistrationOptions = exports.StaticRegistrationOptions || (exports.StaticRegistrationOptions = {}));\n/**\n * The TextDocumentRegistrationOptions namespace provides helper functions to work with\n * {@link TextDocumentRegistrationOptions} literals.\n */\nvar TextDocumentRegistrationOptions;\n(function (TextDocumentRegistrationOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.documentSelector === null || DocumentSelector.is(candidate.documentSelector));\n }\n TextDocumentRegistrationOptions.is = is;\n})(TextDocumentRegistrationOptions = exports.TextDocumentRegistrationOptions || (exports.TextDocumentRegistrationOptions = {}));\n/**\n * The WorkDoneProgressOptions namespace provides helper functions to work with\n * {@link WorkDoneProgressOptions} literals.\n */\nvar WorkDoneProgressOptions;\n(function (WorkDoneProgressOptions) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (candidate.workDoneProgress === undefined || Is.boolean(candidate.workDoneProgress));\n }\n WorkDoneProgressOptions.is = is;\n function hasWorkDoneProgress(value) {\n const candidate = value;\n return candidate && Is.boolean(candidate.workDoneProgress);\n }\n WorkDoneProgressOptions.hasWorkDoneProgress = hasWorkDoneProgress;\n})(WorkDoneProgressOptions = exports.WorkDoneProgressOptions || (exports.WorkDoneProgressOptions = {}));\n/**\n * The initialize request is sent from the client to the server.\n * It is sent once as the request after starting up the server.\n * The requests parameter is of type {@link InitializeParams}\n * the response if of type {@link InitializeResult} of a Thenable that\n * resolves to such.\n */\nvar InitializeRequest;\n(function (InitializeRequest) {\n InitializeRequest.method = 'initialize';\n InitializeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n InitializeRequest.type = new messages_1.ProtocolRequestType(InitializeRequest.method);\n})(InitializeRequest = exports.InitializeRequest || (exports.InitializeRequest = {}));\n/**\n * Known error codes for an `InitializeErrorCodes`;\n */\nvar InitializeErrorCodes;\n(function (InitializeErrorCodes) {\n /**\n * If the protocol version provided by the client can't be handled by the server.\n *\n * @deprecated This initialize error got replaced by client capabilities. There is\n * no version handshake in version 3.0x\n */\n InitializeErrorCodes.unknownProtocolVersion = 1;\n})(InitializeErrorCodes = exports.InitializeErrorCodes || (exports.InitializeErrorCodes = {}));\n/**\n * The initialized notification is sent from the client to the\n * server after the client is fully initialized and the server\n * is allowed to send requests from the server to the client.\n */\nvar InitializedNotification;\n(function (InitializedNotification) {\n InitializedNotification.method = 'initialized';\n InitializedNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n InitializedNotification.type = new messages_1.ProtocolNotificationType(InitializedNotification.method);\n})(InitializedNotification = exports.InitializedNotification || (exports.InitializedNotification = {}));\n//---- Shutdown Method ----\n/**\n * A shutdown request is sent from the client to the server.\n * It is sent once when the client decides to shutdown the\n * server. The only notification that is sent after a shutdown request\n * is the exit event.\n */\nvar ShutdownRequest;\n(function (ShutdownRequest) {\n ShutdownRequest.method = 'shutdown';\n ShutdownRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ShutdownRequest.type = new messages_1.ProtocolRequestType0(ShutdownRequest.method);\n})(ShutdownRequest = exports.ShutdownRequest || (exports.ShutdownRequest = {}));\n//---- Exit Notification ----\n/**\n * The exit event is sent from the client to the server to\n * ask the server to exit its process.\n */\nvar ExitNotification;\n(function (ExitNotification) {\n ExitNotification.method = 'exit';\n ExitNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n ExitNotification.type = new messages_1.ProtocolNotificationType0(ExitNotification.method);\n})(ExitNotification = exports.ExitNotification || (exports.ExitNotification = {}));\n/**\n * The configuration change notification is sent from the client to the server\n * when the client's configuration has changed. The notification contains\n * the changed configuration as defined by the language client.\n */\nvar DidChangeConfigurationNotification;\n(function (DidChangeConfigurationNotification) {\n DidChangeConfigurationNotification.method = 'workspace/didChangeConfiguration';\n DidChangeConfigurationNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeConfigurationNotification.type = new messages_1.ProtocolNotificationType(DidChangeConfigurationNotification.method);\n})(DidChangeConfigurationNotification = exports.DidChangeConfigurationNotification || (exports.DidChangeConfigurationNotification = {}));\n//---- Message show and log notifications ----\n/**\n * The message type\n */\nvar MessageType;\n(function (MessageType) {\n /**\n * An error message.\n */\n MessageType.Error = 1;\n /**\n * A warning message.\n */\n MessageType.Warning = 2;\n /**\n * An information message.\n */\n MessageType.Info = 3;\n /**\n * A log message.\n */\n MessageType.Log = 4;\n})(MessageType = exports.MessageType || (exports.MessageType = {}));\n/**\n * The show message notification is sent from a server to a client to ask\n * the client to display a particular message in the user interface.\n */\nvar ShowMessageNotification;\n(function (ShowMessageNotification) {\n ShowMessageNotification.method = 'window/showMessage';\n ShowMessageNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowMessageNotification.type = new messages_1.ProtocolNotificationType(ShowMessageNotification.method);\n})(ShowMessageNotification = exports.ShowMessageNotification || (exports.ShowMessageNotification = {}));\n/**\n * The show message request is sent from the server to the client to show a message\n * and a set of options actions to the user.\n */\nvar ShowMessageRequest;\n(function (ShowMessageRequest) {\n ShowMessageRequest.method = 'window/showMessageRequest';\n ShowMessageRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowMessageRequest.type = new messages_1.ProtocolRequestType(ShowMessageRequest.method);\n})(ShowMessageRequest = exports.ShowMessageRequest || (exports.ShowMessageRequest = {}));\n/**\n * The log message notification is sent from the server to the client to ask\n * the client to log a particular message.\n */\nvar LogMessageNotification;\n(function (LogMessageNotification) {\n LogMessageNotification.method = 'window/logMessage';\n LogMessageNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n LogMessageNotification.type = new messages_1.ProtocolNotificationType(LogMessageNotification.method);\n})(LogMessageNotification = exports.LogMessageNotification || (exports.LogMessageNotification = {}));\n//---- Telemetry notification\n/**\n * The telemetry event notification is sent from the server to the client to ask\n * the client to log telemetry data.\n */\nvar TelemetryEventNotification;\n(function (TelemetryEventNotification) {\n TelemetryEventNotification.method = 'telemetry/event';\n TelemetryEventNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n TelemetryEventNotification.type = new messages_1.ProtocolNotificationType(TelemetryEventNotification.method);\n})(TelemetryEventNotification = exports.TelemetryEventNotification || (exports.TelemetryEventNotification = {}));\n/**\n * Defines how the host (editor) should sync\n * document changes to the language server.\n */\nvar TextDocumentSyncKind;\n(function (TextDocumentSyncKind) {\n /**\n * Documents should not be synced at all.\n */\n TextDocumentSyncKind.None = 0;\n /**\n * Documents are synced by always sending the full content\n * of the document.\n */\n TextDocumentSyncKind.Full = 1;\n /**\n * Documents are synced by sending the full content on open.\n * After that only incremental updates to the document are\n * send.\n */\n TextDocumentSyncKind.Incremental = 2;\n})(TextDocumentSyncKind = exports.TextDocumentSyncKind || (exports.TextDocumentSyncKind = {}));\n/**\n * The document open notification is sent from the client to the server to signal\n * newly opened text documents. The document's truth is now managed by the client\n * and the server must not try to read the document's truth using the document's\n * uri. Open in this sense means it is managed by the client. It doesn't necessarily\n * mean that its content is presented in an editor. An open notification must not\n * be sent more than once without a corresponding close notification send before.\n * This means open and close notification must be balanced and the max open count\n * is one.\n */\nvar DidOpenTextDocumentNotification;\n(function (DidOpenTextDocumentNotification) {\n DidOpenTextDocumentNotification.method = 'textDocument/didOpen';\n DidOpenTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidOpenTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification.method);\n})(DidOpenTextDocumentNotification = exports.DidOpenTextDocumentNotification || (exports.DidOpenTextDocumentNotification = {}));\nvar TextDocumentContentChangeEvent;\n(function (TextDocumentContentChangeEvent) {\n /**\n * Checks whether the information describes a delta event.\n */\n function isIncremental(event) {\n let candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n }\n TextDocumentContentChangeEvent.isIncremental = isIncremental;\n /**\n * Checks whether the information describes a full replacement event.\n */\n function isFull(event) {\n let candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n }\n TextDocumentContentChangeEvent.isFull = isFull;\n})(TextDocumentContentChangeEvent = exports.TextDocumentContentChangeEvent || (exports.TextDocumentContentChangeEvent = {}));\n/**\n * The document change notification is sent from the client to the server to signal\n * changes to a text document.\n */\nvar DidChangeTextDocumentNotification;\n(function (DidChangeTextDocumentNotification) {\n DidChangeTextDocumentNotification.method = 'textDocument/didChange';\n DidChangeTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification.method);\n})(DidChangeTextDocumentNotification = exports.DidChangeTextDocumentNotification || (exports.DidChangeTextDocumentNotification = {}));\n/**\n * The document close notification is sent from the client to the server when\n * the document got closed in the client. The document's truth now exists where\n * the document's uri points to (e.g. if the document's uri is a file uri the\n * truth now exists on disk). As with the open notification the close notification\n * is about managing the document's content. Receiving a close notification\n * doesn't mean that the document was open in an editor before. A close\n * notification requires a previous open notification to be sent.\n */\nvar DidCloseTextDocumentNotification;\n(function (DidCloseTextDocumentNotification) {\n DidCloseTextDocumentNotification.method = 'textDocument/didClose';\n DidCloseTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCloseTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification.method);\n})(DidCloseTextDocumentNotification = exports.DidCloseTextDocumentNotification || (exports.DidCloseTextDocumentNotification = {}));\n/**\n * The document save notification is sent from the client to the server when\n * the document got saved in the client.\n */\nvar DidSaveTextDocumentNotification;\n(function (DidSaveTextDocumentNotification) {\n DidSaveTextDocumentNotification.method = 'textDocument/didSave';\n DidSaveTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification.method);\n})(DidSaveTextDocumentNotification = exports.DidSaveTextDocumentNotification || (exports.DidSaveTextDocumentNotification = {}));\n/**\n * Represents reasons why a text document is saved.\n */\nvar TextDocumentSaveReason;\n(function (TextDocumentSaveReason) {\n /**\n * Manually triggered, e.g. by the user pressing save, by starting debugging,\n * or by an API call.\n */\n TextDocumentSaveReason.Manual = 1;\n /**\n * Automatic after a delay.\n */\n TextDocumentSaveReason.AfterDelay = 2;\n /**\n * When the editor lost focus.\n */\n TextDocumentSaveReason.FocusOut = 3;\n})(TextDocumentSaveReason = exports.TextDocumentSaveReason || (exports.TextDocumentSaveReason = {}));\n/**\n * A document will save notification is sent from the client to the server before\n * the document is actually saved.\n */\nvar WillSaveTextDocumentNotification;\n(function (WillSaveTextDocumentNotification) {\n WillSaveTextDocumentNotification.method = 'textDocument/willSave';\n WillSaveTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n WillSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification.method);\n})(WillSaveTextDocumentNotification = exports.WillSaveTextDocumentNotification || (exports.WillSaveTextDocumentNotification = {}));\n/**\n * A document will save request is sent from the client to the server before\n * the document is actually saved. The request can return an array of TextEdits\n * which will be applied to the text document before it is saved. Please note that\n * clients might drop results if computing the text edits took too long or if a\n * server constantly fails on this request. This is done to keep the save fast and\n * reliable.\n */\nvar WillSaveTextDocumentWaitUntilRequest;\n(function (WillSaveTextDocumentWaitUntilRequest) {\n WillSaveTextDocumentWaitUntilRequest.method = 'textDocument/willSaveWaitUntil';\n WillSaveTextDocumentWaitUntilRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WillSaveTextDocumentWaitUntilRequest.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest.method);\n})(WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentWaitUntilRequest || (exports.WillSaveTextDocumentWaitUntilRequest = {}));\n/**\n * The watched files notification is sent from the client to the server when\n * the client detects changes to file watched by the language client.\n */\nvar DidChangeWatchedFilesNotification;\n(function (DidChangeWatchedFilesNotification) {\n DidChangeWatchedFilesNotification.method = 'workspace/didChangeWatchedFiles';\n DidChangeWatchedFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeWatchedFilesNotification.type = new messages_1.ProtocolNotificationType(DidChangeWatchedFilesNotification.method);\n})(DidChangeWatchedFilesNotification = exports.DidChangeWatchedFilesNotification || (exports.DidChangeWatchedFilesNotification = {}));\n/**\n * The file event type\n */\nvar FileChangeType;\n(function (FileChangeType) {\n /**\n * The file got created.\n */\n FileChangeType.Created = 1;\n /**\n * The file got changed.\n */\n FileChangeType.Changed = 2;\n /**\n * The file got deleted.\n */\n FileChangeType.Deleted = 3;\n})(FileChangeType = exports.FileChangeType || (exports.FileChangeType = {}));\nvar RelativePattern;\n(function (RelativePattern) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && (vscode_languageserver_types_1.URI.is(candidate.baseUri) || vscode_languageserver_types_1.WorkspaceFolder.is(candidate.baseUri)) && Is.string(candidate.pattern);\n }\n RelativePattern.is = is;\n})(RelativePattern = exports.RelativePattern || (exports.RelativePattern = {}));\nvar WatchKind;\n(function (WatchKind) {\n /**\n * Interested in create events.\n */\n WatchKind.Create = 1;\n /**\n * Interested in change events\n */\n WatchKind.Change = 2;\n /**\n * Interested in delete events\n */\n WatchKind.Delete = 4;\n})(WatchKind = exports.WatchKind || (exports.WatchKind = {}));\n/**\n * Diagnostics notification are sent from the server to the client to signal\n * results of validation runs.\n */\nvar PublishDiagnosticsNotification;\n(function (PublishDiagnosticsNotification) {\n PublishDiagnosticsNotification.method = 'textDocument/publishDiagnostics';\n PublishDiagnosticsNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n PublishDiagnosticsNotification.type = new messages_1.ProtocolNotificationType(PublishDiagnosticsNotification.method);\n})(PublishDiagnosticsNotification = exports.PublishDiagnosticsNotification || (exports.PublishDiagnosticsNotification = {}));\n/**\n * How a completion was triggered\n */\nvar CompletionTriggerKind;\n(function (CompletionTriggerKind) {\n /**\n * Completion was triggered by typing an identifier (24x7 code\n * complete), manual invocation (e.g Ctrl+Space) or via API.\n */\n CompletionTriggerKind.Invoked = 1;\n /**\n * Completion was triggered by a trigger character specified by\n * the `triggerCharacters` properties of the `CompletionRegistrationOptions`.\n */\n CompletionTriggerKind.TriggerCharacter = 2;\n /**\n * Completion was re-triggered as current completion list is incomplete\n */\n CompletionTriggerKind.TriggerForIncompleteCompletions = 3;\n})(CompletionTriggerKind = exports.CompletionTriggerKind || (exports.CompletionTriggerKind = {}));\n/**\n * Request to request completion at a given text document position. The request's\n * parameter is of type {@link TextDocumentPosition} the response\n * is of type {@link CompletionItem CompletionItem[]} or {@link CompletionList}\n * or a Thenable that resolves to such.\n *\n * The request can delay the computation of the {@link CompletionItem.detail `detail`}\n * and {@link CompletionItem.documentation `documentation`} properties to the `completionItem/resolve`\n * request. However, properties that are needed for the initial sorting and filtering, like `sortText`,\n * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.\n */\nvar CompletionRequest;\n(function (CompletionRequest) {\n CompletionRequest.method = 'textDocument/completion';\n CompletionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CompletionRequest.type = new messages_1.ProtocolRequestType(CompletionRequest.method);\n})(CompletionRequest = exports.CompletionRequest || (exports.CompletionRequest = {}));\n/**\n * Request to resolve additional information for a given completion item.The request's\n * parameter is of type {@link CompletionItem} the response\n * is of type {@link CompletionItem} or a Thenable that resolves to such.\n */\nvar CompletionResolveRequest;\n(function (CompletionResolveRequest) {\n CompletionResolveRequest.method = 'completionItem/resolve';\n CompletionResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CompletionResolveRequest.type = new messages_1.ProtocolRequestType(CompletionResolveRequest.method);\n})(CompletionResolveRequest = exports.CompletionResolveRequest || (exports.CompletionResolveRequest = {}));\n/**\n * Request to request hover information at a given text document position. The request's\n * parameter is of type {@link TextDocumentPosition} the response is of\n * type {@link Hover} or a Thenable that resolves to such.\n */\nvar HoverRequest;\n(function (HoverRequest) {\n HoverRequest.method = 'textDocument/hover';\n HoverRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n HoverRequest.type = new messages_1.ProtocolRequestType(HoverRequest.method);\n})(HoverRequest = exports.HoverRequest || (exports.HoverRequest = {}));\n/**\n * How a signature help was triggered.\n *\n * @since 3.15.0\n */\nvar SignatureHelpTriggerKind;\n(function (SignatureHelpTriggerKind) {\n /**\n * Signature help was invoked manually by the user or by a command.\n */\n SignatureHelpTriggerKind.Invoked = 1;\n /**\n * Signature help was triggered by a trigger character.\n */\n SignatureHelpTriggerKind.TriggerCharacter = 2;\n /**\n * Signature help was triggered by the cursor moving or by the document content changing.\n */\n SignatureHelpTriggerKind.ContentChange = 3;\n})(SignatureHelpTriggerKind = exports.SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = {}));\nvar SignatureHelpRequest;\n(function (SignatureHelpRequest) {\n SignatureHelpRequest.method = 'textDocument/signatureHelp';\n SignatureHelpRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SignatureHelpRequest.type = new messages_1.ProtocolRequestType(SignatureHelpRequest.method);\n})(SignatureHelpRequest = exports.SignatureHelpRequest || (exports.SignatureHelpRequest = {}));\n/**\n * A request to resolve the definition location of a symbol at a given text\n * document position. The request's parameter is of type [TextDocumentPosition]\n * (#TextDocumentPosition) the response is of either type {@link Definition}\n * or a typed array of {@link DefinitionLink} or a Thenable that resolves\n * to such.\n */\nvar DefinitionRequest;\n(function (DefinitionRequest) {\n DefinitionRequest.method = 'textDocument/definition';\n DefinitionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DefinitionRequest.type = new messages_1.ProtocolRequestType(DefinitionRequest.method);\n})(DefinitionRequest = exports.DefinitionRequest || (exports.DefinitionRequest = {}));\n/**\n * A request to resolve project-wide references for the symbol denoted\n * by the given text document position. The request's parameter is of\n * type {@link ReferenceParams} the response is of type\n * {@link Location Location[]} or a Thenable that resolves to such.\n */\nvar ReferencesRequest;\n(function (ReferencesRequest) {\n ReferencesRequest.method = 'textDocument/references';\n ReferencesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ReferencesRequest.type = new messages_1.ProtocolRequestType(ReferencesRequest.method);\n})(ReferencesRequest = exports.ReferencesRequest || (exports.ReferencesRequest = {}));\n/**\n * Request to resolve a {@link DocumentHighlight} for a given\n * text document position. The request's parameter is of type [TextDocumentPosition]\n * (#TextDocumentPosition) the request response is of type [DocumentHighlight[]]\n * (#DocumentHighlight) or a Thenable that resolves to such.\n */\nvar DocumentHighlightRequest;\n(function (DocumentHighlightRequest) {\n DocumentHighlightRequest.method = 'textDocument/documentHighlight';\n DocumentHighlightRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentHighlightRequest.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest.method);\n})(DocumentHighlightRequest = exports.DocumentHighlightRequest || (exports.DocumentHighlightRequest = {}));\n/**\n * A request to list all symbols found in a given text document. The request's\n * parameter is of type {@link TextDocumentIdentifier} the\n * response is of type {@link SymbolInformation SymbolInformation[]} or a Thenable\n * that resolves to such.\n */\nvar DocumentSymbolRequest;\n(function (DocumentSymbolRequest) {\n DocumentSymbolRequest.method = 'textDocument/documentSymbol';\n DocumentSymbolRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentSymbolRequest.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest.method);\n})(DocumentSymbolRequest = exports.DocumentSymbolRequest || (exports.DocumentSymbolRequest = {}));\n/**\n * A request to provide commands for the given text document and range.\n */\nvar CodeActionRequest;\n(function (CodeActionRequest) {\n CodeActionRequest.method = 'textDocument/codeAction';\n CodeActionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeActionRequest.type = new messages_1.ProtocolRequestType(CodeActionRequest.method);\n})(CodeActionRequest = exports.CodeActionRequest || (exports.CodeActionRequest = {}));\n/**\n * Request to resolve additional information for a given code action.The request's\n * parameter is of type {@link CodeAction} the response\n * is of type {@link CodeAction} or a Thenable that resolves to such.\n */\nvar CodeActionResolveRequest;\n(function (CodeActionResolveRequest) {\n CodeActionResolveRequest.method = 'codeAction/resolve';\n CodeActionResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeActionResolveRequest.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest.method);\n})(CodeActionResolveRequest = exports.CodeActionResolveRequest || (exports.CodeActionResolveRequest = {}));\n/**\n * A request to list project-wide symbols matching the query string given\n * by the {@link WorkspaceSymbolParams}. The response is\n * of type {@link SymbolInformation SymbolInformation[]} or a Thenable that\n * resolves to such.\n *\n * @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients\n * need to advertise support for WorkspaceSymbols via the client capability\n * `workspace.symbol.resolveSupport`.\n *\n */\nvar WorkspaceSymbolRequest;\n(function (WorkspaceSymbolRequest) {\n WorkspaceSymbolRequest.method = 'workspace/symbol';\n WorkspaceSymbolRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceSymbolRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest.method);\n})(WorkspaceSymbolRequest = exports.WorkspaceSymbolRequest || (exports.WorkspaceSymbolRequest = {}));\n/**\n * A request to resolve the range inside the workspace\n * symbol's location.\n *\n * @since 3.17.0\n */\nvar WorkspaceSymbolResolveRequest;\n(function (WorkspaceSymbolResolveRequest) {\n WorkspaceSymbolResolveRequest.method = 'workspaceSymbol/resolve';\n WorkspaceSymbolResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkspaceSymbolResolveRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolResolveRequest.method);\n})(WorkspaceSymbolResolveRequest = exports.WorkspaceSymbolResolveRequest || (exports.WorkspaceSymbolResolveRequest = {}));\n/**\n * A request to provide code lens for the given text document.\n */\nvar CodeLensRequest;\n(function (CodeLensRequest) {\n CodeLensRequest.method = 'textDocument/codeLens';\n CodeLensRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeLensRequest.type = new messages_1.ProtocolRequestType(CodeLensRequest.method);\n})(CodeLensRequest = exports.CodeLensRequest || (exports.CodeLensRequest = {}));\n/**\n * A request to resolve a command for a given code lens.\n */\nvar CodeLensResolveRequest;\n(function (CodeLensResolveRequest) {\n CodeLensResolveRequest.method = 'codeLens/resolve';\n CodeLensResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n CodeLensResolveRequest.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest.method);\n})(CodeLensResolveRequest = exports.CodeLensResolveRequest || (exports.CodeLensResolveRequest = {}));\n/**\n * A request to refresh all code actions\n *\n * @since 3.16.0\n */\nvar CodeLensRefreshRequest;\n(function (CodeLensRefreshRequest) {\n CodeLensRefreshRequest.method = `workspace/codeLens/refresh`;\n CodeLensRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n CodeLensRefreshRequest.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest.method);\n})(CodeLensRefreshRequest = exports.CodeLensRefreshRequest || (exports.CodeLensRefreshRequest = {}));\n/**\n * A request to provide document links\n */\nvar DocumentLinkRequest;\n(function (DocumentLinkRequest) {\n DocumentLinkRequest.method = 'textDocument/documentLink';\n DocumentLinkRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentLinkRequest.type = new messages_1.ProtocolRequestType(DocumentLinkRequest.method);\n})(DocumentLinkRequest = exports.DocumentLinkRequest || (exports.DocumentLinkRequest = {}));\n/**\n * Request to resolve additional information for a given document link. The request's\n * parameter is of type {@link DocumentLink} the response\n * is of type {@link DocumentLink} or a Thenable that resolves to such.\n */\nvar DocumentLinkResolveRequest;\n(function (DocumentLinkResolveRequest) {\n DocumentLinkResolveRequest.method = 'documentLink/resolve';\n DocumentLinkResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentLinkResolveRequest.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest.method);\n})(DocumentLinkResolveRequest = exports.DocumentLinkResolveRequest || (exports.DocumentLinkResolveRequest = {}));\n/**\n * A request to to format a whole document.\n */\nvar DocumentFormattingRequest;\n(function (DocumentFormattingRequest) {\n DocumentFormattingRequest.method = 'textDocument/formatting';\n DocumentFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest.method);\n})(DocumentFormattingRequest = exports.DocumentFormattingRequest || (exports.DocumentFormattingRequest = {}));\n/**\n * A request to to format a range in a document.\n */\nvar DocumentRangeFormattingRequest;\n(function (DocumentRangeFormattingRequest) {\n DocumentRangeFormattingRequest.method = 'textDocument/rangeFormatting';\n DocumentRangeFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentRangeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest.method);\n})(DocumentRangeFormattingRequest = exports.DocumentRangeFormattingRequest || (exports.DocumentRangeFormattingRequest = {}));\n/**\n * A request to format a document on type.\n */\nvar DocumentOnTypeFormattingRequest;\n(function (DocumentOnTypeFormattingRequest) {\n DocumentOnTypeFormattingRequest.method = 'textDocument/onTypeFormatting';\n DocumentOnTypeFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n DocumentOnTypeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest.method);\n})(DocumentOnTypeFormattingRequest = exports.DocumentOnTypeFormattingRequest || (exports.DocumentOnTypeFormattingRequest = {}));\n//---- Rename ----------------------------------------------\nvar PrepareSupportDefaultBehavior;\n(function (PrepareSupportDefaultBehavior) {\n /**\n * The client's default behavior is to select the identifier\n * according the to language's syntax rule.\n */\n PrepareSupportDefaultBehavior.Identifier = 1;\n})(PrepareSupportDefaultBehavior = exports.PrepareSupportDefaultBehavior || (exports.PrepareSupportDefaultBehavior = {}));\n/**\n * A request to rename a symbol.\n */\nvar RenameRequest;\n(function (RenameRequest) {\n RenameRequest.method = 'textDocument/rename';\n RenameRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n RenameRequest.type = new messages_1.ProtocolRequestType(RenameRequest.method);\n})(RenameRequest = exports.RenameRequest || (exports.RenameRequest = {}));\n/**\n * A request to test and perform the setup necessary for a rename.\n *\n * @since 3.16 - support for default behavior\n */\nvar PrepareRenameRequest;\n(function (PrepareRenameRequest) {\n PrepareRenameRequest.method = 'textDocument/prepareRename';\n PrepareRenameRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n PrepareRenameRequest.type = new messages_1.ProtocolRequestType(PrepareRenameRequest.method);\n})(PrepareRenameRequest = exports.PrepareRenameRequest || (exports.PrepareRenameRequest = {}));\n/**\n * A request send from the client to the server to execute a command. The request might return\n * a workspace edit which the client will apply to the workspace.\n */\nvar ExecuteCommandRequest;\n(function (ExecuteCommandRequest) {\n ExecuteCommandRequest.method = 'workspace/executeCommand';\n ExecuteCommandRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n ExecuteCommandRequest.type = new messages_1.ProtocolRequestType(ExecuteCommandRequest.method);\n})(ExecuteCommandRequest = exports.ExecuteCommandRequest || (exports.ExecuteCommandRequest = {}));\n/**\n * A request sent from the server to the client to modified certain resources.\n */\nvar ApplyWorkspaceEditRequest;\n(function (ApplyWorkspaceEditRequest) {\n ApplyWorkspaceEditRequest.method = 'workspace/applyEdit';\n ApplyWorkspaceEditRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ApplyWorkspaceEditRequest.type = new messages_1.ProtocolRequestType('workspace/applyEdit');\n})(ApplyWorkspaceEditRequest = exports.ApplyWorkspaceEditRequest || (exports.ApplyWorkspaceEditRequest = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedEditingRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide ranges that can be edited together.\n *\n * @since 3.16.0\n */\nvar LinkedEditingRangeRequest;\n(function (LinkedEditingRangeRequest) {\n LinkedEditingRangeRequest.method = 'textDocument/linkedEditingRange';\n LinkedEditingRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n LinkedEditingRangeRequest.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest.method);\n})(LinkedEditingRangeRequest = exports.LinkedEditingRangeRequest || (exports.LinkedEditingRangeRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MonikerRequest = exports.MonikerKind = exports.UniquenessLevel = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * Moniker uniqueness level to define scope of the moniker.\n *\n * @since 3.16.0\n */\nvar UniquenessLevel;\n(function (UniquenessLevel) {\n /**\n * The moniker is only unique inside a document\n */\n UniquenessLevel.document = 'document';\n /**\n * The moniker is unique inside a project for which a dump got created\n */\n UniquenessLevel.project = 'project';\n /**\n * The moniker is unique inside the group to which a project belongs\n */\n UniquenessLevel.group = 'group';\n /**\n * The moniker is unique inside the moniker scheme.\n */\n UniquenessLevel.scheme = 'scheme';\n /**\n * The moniker is globally unique\n */\n UniquenessLevel.global = 'global';\n})(UniquenessLevel = exports.UniquenessLevel || (exports.UniquenessLevel = {}));\n/**\n * The moniker kind.\n *\n * @since 3.16.0\n */\nvar MonikerKind;\n(function (MonikerKind) {\n /**\n * The moniker represent a symbol that is imported into a project\n */\n MonikerKind.$import = 'import';\n /**\n * The moniker represents a symbol that is exported from a project\n */\n MonikerKind.$export = 'export';\n /**\n * The moniker represents a symbol that is local to a project (e.g. a local\n * variable of a function, a class not visible outside the project, ...)\n */\n MonikerKind.local = 'local';\n})(MonikerKind = exports.MonikerKind || (exports.MonikerKind = {}));\n/**\n * A request to get the moniker of a symbol at a given text document position.\n * The request parameter is of type {@link TextDocumentPositionParams}.\n * The response is of type {@link Moniker Moniker[]} or `null`.\n */\nvar MonikerRequest;\n(function (MonikerRequest) {\n MonikerRequest.method = 'textDocument/moniker';\n MonikerRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n MonikerRequest.type = new messages_1.ProtocolRequestType(MonikerRequest.method);\n})(MonikerRequest = exports.MonikerRequest || (exports.MonikerRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidCloseNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification = exports.NotebookCellArrayChange = exports.DidOpenNotebookDocumentNotification = exports.NotebookDocumentSyncRegistrationType = exports.NotebookDocument = exports.NotebookCell = exports.ExecutionSummary = exports.NotebookCellKind = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = require(\"./utils/is\");\nconst messages_1 = require(\"./messages\");\n/**\n * A notebook cell kind.\n *\n * @since 3.17.0\n */\nvar NotebookCellKind;\n(function (NotebookCellKind) {\n /**\n * A markup-cell is formatted source that is used for display.\n */\n NotebookCellKind.Markup = 1;\n /**\n * A code-cell is source code.\n */\n NotebookCellKind.Code = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n NotebookCellKind.is = is;\n})(NotebookCellKind = exports.NotebookCellKind || (exports.NotebookCellKind = {}));\nvar ExecutionSummary;\n(function (ExecutionSummary) {\n function create(executionOrder, success) {\n const result = { executionOrder };\n if (success === true || success === false) {\n result.success = success;\n }\n return result;\n }\n ExecutionSummary.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.executionOrder) && (candidate.success === undefined || Is.boolean(candidate.success));\n }\n ExecutionSummary.is = is;\n function equals(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n return one.executionOrder === other.executionOrder && one.success === other.success;\n }\n ExecutionSummary.equals = equals;\n})(ExecutionSummary = exports.ExecutionSummary || (exports.ExecutionSummary = {}));\nvar NotebookCell;\n(function (NotebookCell) {\n function create(kind, document) {\n return { kind, document };\n }\n NotebookCell.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && NotebookCellKind.is(candidate.kind) && vscode_languageserver_types_1.DocumentUri.is(candidate.document) &&\n (candidate.metadata === undefined || Is.objectLiteral(candidate.metadata));\n }\n NotebookCell.is = is;\n function diff(one, two) {\n const result = new Set();\n if (one.document !== two.document) {\n result.add('document');\n }\n if (one.kind !== two.kind) {\n result.add('kind');\n }\n if (one.executionSummary !== two.executionSummary) {\n result.add('executionSummary');\n }\n if ((one.metadata !== undefined || two.metadata !== undefined) && !equalsMetadata(one.metadata, two.metadata)) {\n result.add('metadata');\n }\n if ((one.executionSummary !== undefined || two.executionSummary !== undefined) && !ExecutionSummary.equals(one.executionSummary, two.executionSummary)) {\n result.add('executionSummary');\n }\n return result;\n }\n NotebookCell.diff = diff;\n function equalsMetadata(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== 'object') {\n return false;\n }\n const oneArray = Array.isArray(one);\n const otherArray = Array.isArray(other);\n if (oneArray !== otherArray) {\n return false;\n }\n if (oneArray && otherArray) {\n if (one.length !== other.length) {\n return false;\n }\n for (let i = 0; i < one.length; i++) {\n if (!equalsMetadata(one[i], other[i])) {\n return false;\n }\n }\n }\n if (Is.objectLiteral(one) && Is.objectLiteral(other)) {\n const oneKeys = Object.keys(one);\n const otherKeys = Object.keys(other);\n if (oneKeys.length !== otherKeys.length) {\n return false;\n }\n oneKeys.sort();\n otherKeys.sort();\n if (!equalsMetadata(oneKeys, otherKeys)) {\n return false;\n }\n for (let i = 0; i < oneKeys.length; i++) {\n const prop = oneKeys[i];\n if (!equalsMetadata(one[prop], other[prop])) {\n return false;\n }\n }\n }\n return true;\n }\n})(NotebookCell = exports.NotebookCell || (exports.NotebookCell = {}));\nvar NotebookDocument;\n(function (NotebookDocument) {\n function create(uri, notebookType, version, cells) {\n return { uri, notebookType, version, cells };\n }\n NotebookDocument.create = create;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.uri) && vscode_languageserver_types_1.integer.is(candidate.version) && Is.typedArray(candidate.cells, NotebookCell.is);\n }\n NotebookDocument.is = is;\n})(NotebookDocument = exports.NotebookDocument || (exports.NotebookDocument = {}));\nvar NotebookDocumentSyncRegistrationType;\n(function (NotebookDocumentSyncRegistrationType) {\n NotebookDocumentSyncRegistrationType.method = 'notebookDocument/sync';\n NotebookDocumentSyncRegistrationType.messageDirection = messages_1.MessageDirection.clientToServer;\n NotebookDocumentSyncRegistrationType.type = new messages_1.RegistrationType(NotebookDocumentSyncRegistrationType.method);\n})(NotebookDocumentSyncRegistrationType = exports.NotebookDocumentSyncRegistrationType || (exports.NotebookDocumentSyncRegistrationType = {}));\n/**\n * A notification sent when a notebook opens.\n *\n * @since 3.17.0\n */\nvar DidOpenNotebookDocumentNotification;\n(function (DidOpenNotebookDocumentNotification) {\n DidOpenNotebookDocumentNotification.method = 'notebookDocument/didOpen';\n DidOpenNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidOpenNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenNotebookDocumentNotification.method);\n DidOpenNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidOpenNotebookDocumentNotification = exports.DidOpenNotebookDocumentNotification || (exports.DidOpenNotebookDocumentNotification = {}));\nvar NotebookCellArrayChange;\n(function (NotebookCellArrayChange) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.start) && vscode_languageserver_types_1.uinteger.is(candidate.deleteCount) && (candidate.cells === undefined || Is.typedArray(candidate.cells, NotebookCell.is));\n }\n NotebookCellArrayChange.is = is;\n function create(start, deleteCount, cells) {\n const result = { start, deleteCount };\n if (cells !== undefined) {\n result.cells = cells;\n }\n return result;\n }\n NotebookCellArrayChange.create = create;\n})(NotebookCellArrayChange = exports.NotebookCellArrayChange || (exports.NotebookCellArrayChange = {}));\nvar DidChangeNotebookDocumentNotification;\n(function (DidChangeNotebookDocumentNotification) {\n DidChangeNotebookDocumentNotification.method = 'notebookDocument/didChange';\n DidChangeNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeNotebookDocumentNotification.method);\n DidChangeNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidChangeNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification || (exports.DidChangeNotebookDocumentNotification = {}));\n/**\n * A notification sent when a notebook document is saved.\n *\n * @since 3.17.0\n */\nvar DidSaveNotebookDocumentNotification;\n(function (DidSaveNotebookDocumentNotification) {\n DidSaveNotebookDocumentNotification.method = 'notebookDocument/didSave';\n DidSaveNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidSaveNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveNotebookDocumentNotification.method);\n DidSaveNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidSaveNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification || (exports.DidSaveNotebookDocumentNotification = {}));\n/**\n * A notification sent when a notebook closes.\n *\n * @since 3.17.0\n */\nvar DidCloseNotebookDocumentNotification;\n(function (DidCloseNotebookDocumentNotification) {\n DidCloseNotebookDocumentNotification.method = 'notebookDocument/didClose';\n DidCloseNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidCloseNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseNotebookDocumentNotification.method);\n DidCloseNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidCloseNotebookDocumentNotification = exports.DidCloseNotebookDocumentNotification || (exports.DidCloseNotebookDocumentNotification = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkDoneProgressCancelNotification = exports.WorkDoneProgressCreateRequest = exports.WorkDoneProgress = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst messages_1 = require(\"./messages\");\nvar WorkDoneProgress;\n(function (WorkDoneProgress) {\n WorkDoneProgress.type = new vscode_jsonrpc_1.ProgressType();\n function is(value) {\n return value === WorkDoneProgress.type;\n }\n WorkDoneProgress.is = is;\n})(WorkDoneProgress = exports.WorkDoneProgress || (exports.WorkDoneProgress = {}));\n/**\n * The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress\n * reporting from the server.\n */\nvar WorkDoneProgressCreateRequest;\n(function (WorkDoneProgressCreateRequest) {\n WorkDoneProgressCreateRequest.method = 'window/workDoneProgress/create';\n WorkDoneProgressCreateRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n WorkDoneProgressCreateRequest.type = new messages_1.ProtocolRequestType(WorkDoneProgressCreateRequest.method);\n})(WorkDoneProgressCreateRequest = exports.WorkDoneProgressCreateRequest || (exports.WorkDoneProgressCreateRequest = {}));\n/**\n * The `window/workDoneProgress/cancel` notification is sent from the client to the server to cancel a progress\n * initiated on the server side.\n */\nvar WorkDoneProgressCancelNotification;\n(function (WorkDoneProgressCancelNotification) {\n WorkDoneProgressCancelNotification.method = 'window/workDoneProgress/cancel';\n WorkDoneProgressCancelNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n WorkDoneProgressCancelNotification.type = new messages_1.ProtocolNotificationType(WorkDoneProgressCancelNotification.method);\n})(WorkDoneProgressCancelNotification = exports.WorkDoneProgressCancelNotification || (exports.WorkDoneProgressCancelNotification = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectionRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide selection ranges in a document. The request's\n * parameter is of type {@link SelectionRangeParams}, the\n * response is of type {@link SelectionRange SelectionRange[]} or a Thenable\n * that resolves to such.\n */\nvar SelectionRangeRequest;\n(function (SelectionRangeRequest) {\n SelectionRangeRequest.method = 'textDocument/selectionRange';\n SelectionRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SelectionRangeRequest.type = new messages_1.ProtocolRequestType(SelectionRangeRequest.method);\n})(SelectionRangeRequest = exports.SelectionRangeRequest || (exports.SelectionRangeRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SemanticTokensRefreshRequest = exports.SemanticTokensRangeRequest = exports.SemanticTokensDeltaRequest = exports.SemanticTokensRequest = exports.SemanticTokensRegistrationType = exports.TokenFormat = void 0;\nconst messages_1 = require(\"./messages\");\n//------- 'textDocument/semanticTokens' -----\nvar TokenFormat;\n(function (TokenFormat) {\n TokenFormat.Relative = 'relative';\n})(TokenFormat = exports.TokenFormat || (exports.TokenFormat = {}));\nvar SemanticTokensRegistrationType;\n(function (SemanticTokensRegistrationType) {\n SemanticTokensRegistrationType.method = 'textDocument/semanticTokens';\n SemanticTokensRegistrationType.type = new messages_1.RegistrationType(SemanticTokensRegistrationType.method);\n})(SemanticTokensRegistrationType = exports.SemanticTokensRegistrationType || (exports.SemanticTokensRegistrationType = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRequest;\n(function (SemanticTokensRequest) {\n SemanticTokensRequest.method = 'textDocument/semanticTokens/full';\n SemanticTokensRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRequest.method);\n SemanticTokensRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensRequest = exports.SemanticTokensRequest || (exports.SemanticTokensRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensDeltaRequest;\n(function (SemanticTokensDeltaRequest) {\n SemanticTokensDeltaRequest.method = 'textDocument/semanticTokens/full/delta';\n SemanticTokensDeltaRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensDeltaRequest.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest.method);\n SemanticTokensDeltaRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensDeltaRequest = exports.SemanticTokensDeltaRequest || (exports.SemanticTokensDeltaRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRangeRequest;\n(function (SemanticTokensRangeRequest) {\n SemanticTokensRangeRequest.method = 'textDocument/semanticTokens/range';\n SemanticTokensRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n SemanticTokensRangeRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest.method);\n SemanticTokensRangeRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensRangeRequest = exports.SemanticTokensRangeRequest || (exports.SemanticTokensRangeRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRefreshRequest;\n(function (SemanticTokensRefreshRequest) {\n SemanticTokensRefreshRequest.method = `workspace/semanticTokens/refresh`;\n SemanticTokensRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n SemanticTokensRefreshRequest.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest.method);\n})(SemanticTokensRefreshRequest = exports.SemanticTokensRefreshRequest || (exports.SemanticTokensRefreshRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShowDocumentRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to show a document. This request might open an\n * external program depending on the value of the URI to open.\n * For example a request to open `https://code.visualstudio.com/`\n * will very likely open the URI in a WEB browser.\n *\n * @since 3.16.0\n*/\nvar ShowDocumentRequest;\n(function (ShowDocumentRequest) {\n ShowDocumentRequest.method = 'window/showDocument';\n ShowDocumentRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n ShowDocumentRequest.type = new messages_1.ProtocolRequestType(ShowDocumentRequest.method);\n})(ShowDocumentRequest = exports.ShowDocumentRequest || (exports.ShowDocumentRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDefinitionRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the type definition locations of a symbol at a given text\n * document position. The request's parameter is of type [TextDocumentPositionParams]\n * (#TextDocumentPositionParams) the response is of type {@link Definition} or a\n * Thenable that resolves to such.\n */\nvar TypeDefinitionRequest;\n(function (TypeDefinitionRequest) {\n TypeDefinitionRequest.method = 'textDocument/typeDefinition';\n TypeDefinitionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeDefinitionRequest.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest.method);\n})(TypeDefinitionRequest = exports.TypeDefinitionRequest || (exports.TypeDefinitionRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) TypeFox, Microsoft and others. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHierarchySubtypesRequest = exports.TypeHierarchySupertypesRequest = exports.TypeHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to result a `TypeHierarchyItem` in a document at a given position.\n * Can be used as an input to a subtypes or supertypes type hierarchy.\n *\n * @since 3.17.0\n */\nvar TypeHierarchyPrepareRequest;\n(function (TypeHierarchyPrepareRequest) {\n TypeHierarchyPrepareRequest.method = 'textDocument/prepareTypeHierarchy';\n TypeHierarchyPrepareRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(TypeHierarchyPrepareRequest.method);\n})(TypeHierarchyPrepareRequest = exports.TypeHierarchyPrepareRequest || (exports.TypeHierarchyPrepareRequest = {}));\n/**\n * A request to resolve the supertypes for a given `TypeHierarchyItem`.\n *\n * @since 3.17.0\n */\nvar TypeHierarchySupertypesRequest;\n(function (TypeHierarchySupertypesRequest) {\n TypeHierarchySupertypesRequest.method = 'typeHierarchy/supertypes';\n TypeHierarchySupertypesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchySupertypesRequest.type = new messages_1.ProtocolRequestType(TypeHierarchySupertypesRequest.method);\n})(TypeHierarchySupertypesRequest = exports.TypeHierarchySupertypesRequest || (exports.TypeHierarchySupertypesRequest = {}));\n/**\n * A request to resolve the subtypes for a given `TypeHierarchyItem`.\n *\n * @since 3.17.0\n */\nvar TypeHierarchySubtypesRequest;\n(function (TypeHierarchySubtypesRequest) {\n TypeHierarchySubtypesRequest.method = 'typeHierarchy/subtypes';\n TypeHierarchySubtypesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TypeHierarchySubtypesRequest.type = new messages_1.ProtocolRequestType(TypeHierarchySubtypesRequest.method);\n})(TypeHierarchySubtypesRequest = exports.TypeHierarchySubtypesRequest || (exports.TypeHierarchySubtypesRequest = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidChangeWorkspaceFoldersNotification = exports.WorkspaceFoldersRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.\n */\nvar WorkspaceFoldersRequest;\n(function (WorkspaceFoldersRequest) {\n WorkspaceFoldersRequest.method = 'workspace/workspaceFolders';\n WorkspaceFoldersRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n WorkspaceFoldersRequest.type = new messages_1.ProtocolRequestType0(WorkspaceFoldersRequest.method);\n})(WorkspaceFoldersRequest = exports.WorkspaceFoldersRequest || (exports.WorkspaceFoldersRequest = {}));\n/**\n * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace\n * folder configuration changes.\n */\nvar DidChangeWorkspaceFoldersNotification;\n(function (DidChangeWorkspaceFoldersNotification) {\n DidChangeWorkspaceFoldersNotification.method = 'workspace/didChangeWorkspaceFolders';\n DidChangeWorkspaceFoldersNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n DidChangeWorkspaceFoldersNotification.type = new messages_1.ProtocolNotificationType(DidChangeWorkspaceFoldersNotification.method);\n})(DidChangeWorkspaceFoldersNotification = exports.DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = {}));\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.objectLiteral = exports.typedArray = exports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\nfunction typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n}\nexports.typedArray = typedArray;\nfunction objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n}\nexports.objectLiteral = objectLiteral;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst node_1 = require(\"vscode-jsonrpc/node\");\n__exportStar(require(\"vscode-jsonrpc/node\"), exports);\n__exportStar(require(\"../common/api\"), exports);\nfunction createProtocolConnection(input, output, logger, options) {\n return (0, node_1.createMessageConnection)(input, output, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nexport var DocumentUri;\n(function (DocumentUri) {\n function is(value) {\n return typeof value === 'string';\n }\n DocumentUri.is = is;\n})(DocumentUri || (DocumentUri = {}));\nexport var URI;\n(function (URI) {\n function is(value) {\n return typeof value === 'string';\n }\n URI.is = is;\n})(URI || (URI = {}));\nexport var integer;\n(function (integer) {\n integer.MIN_VALUE = -2147483648;\n integer.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === 'number' && integer.MIN_VALUE <= value && value <= integer.MAX_VALUE;\n }\n integer.is = is;\n})(integer || (integer = {}));\nexport var uinteger;\n(function (uinteger) {\n uinteger.MIN_VALUE = 0;\n uinteger.MAX_VALUE = 2147483647;\n function is(value) {\n return typeof value === 'number' && uinteger.MIN_VALUE <= value && value <= uinteger.MAX_VALUE;\n }\n uinteger.is = is;\n})(uinteger || (uinteger = {}));\n/**\n * The Position namespace provides helper functions to work with\n * {@link Position} literals.\n */\nexport var Position;\n(function (Position) {\n /**\n * Creates a new Position literal from the given line and character.\n * @param line The position's line.\n * @param character The position's character.\n */\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n return { line: line, character: character };\n }\n Position.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Position} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position.is = is;\n})(Position || (Position = {}));\n/**\n * The Range namespace provides helper functions to work with\n * {@link Range} literals.\n */\nexport var Range;\n(function (Range) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return { start: Position.create(one, two), end: Position.create(three, four) };\n }\n else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n }\n else {\n throw new Error(\"Range#create called with invalid arguments[\".concat(one, \", \").concat(two, \", \").concat(three, \", \").concat(four, \"]\"));\n }\n }\n Range.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Range} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range.is = is;\n})(Range || (Range = {}));\n/**\n * The Location namespace provides helper functions to work with\n * {@link Location} literals.\n */\nexport var Location;\n(function (Location) {\n /**\n * Creates a Location literal.\n * @param uri The location's uri.\n * @param range The location's range.\n */\n function create(uri, range) {\n return { uri: uri, range: range };\n }\n Location.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Location} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n Location.is = is;\n})(Location || (Location = {}));\n/**\n * The LocationLink namespace provides helper functions to work with\n * {@link LocationLink} literals.\n */\nexport var LocationLink;\n(function (LocationLink) {\n /**\n * Creates a LocationLink literal.\n * @param targetUri The definition's uri.\n * @param targetRange The full range of the definition.\n * @param targetSelectionRange The span of the symbol definition at the target.\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\n */\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\n }\n LocationLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link LocationLink} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\n && Range.is(candidate.targetSelectionRange)\n && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink.is = is;\n})(LocationLink || (LocationLink = {}));\n/**\n * The Color namespace provides helper functions to work with\n * {@link Color} literals.\n */\nexport var Color;\n(function (Color) {\n /**\n * Creates a new Color literal.\n */\n function create(red, green, blue, alpha) {\n return {\n red: red,\n green: green,\n blue: blue,\n alpha: alpha,\n };\n }\n Color.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Color} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1)\n && Is.numberRange(candidate.green, 0, 1)\n && Is.numberRange(candidate.blue, 0, 1)\n && Is.numberRange(candidate.alpha, 0, 1);\n }\n Color.is = is;\n})(Color || (Color = {}));\n/**\n * The ColorInformation namespace provides helper functions to work with\n * {@link ColorInformation} literals.\n */\nexport var ColorInformation;\n(function (ColorInformation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(range, color) {\n return {\n range: range,\n color: color,\n };\n }\n ColorInformation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation.is = is;\n})(ColorInformation || (ColorInformation = {}));\n/**\n * The Color namespace provides helper functions to work with\n * {@link ColorPresentation} literals.\n */\nexport var ColorPresentation;\n(function (ColorPresentation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(label, textEdit, additionalTextEdits) {\n return {\n label: label,\n textEdit: textEdit,\n additionalTextEdits: additionalTextEdits,\n };\n }\n ColorPresentation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label)\n && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\n && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n ColorPresentation.is = is;\n})(ColorPresentation || (ColorPresentation = {}));\n/**\n * A set of predefined range kinds.\n */\nexport var FoldingRangeKind;\n(function (FoldingRangeKind) {\n /**\n * Folding range for a comment\n */\n FoldingRangeKind.Comment = 'comment';\n /**\n * Folding range for an import or include\n */\n FoldingRangeKind.Imports = 'imports';\n /**\n * Folding range for a region (e.g. `#region`)\n */\n FoldingRangeKind.Region = 'region';\n})(FoldingRangeKind || (FoldingRangeKind = {}));\n/**\n * The folding range namespace provides helper functions to work with\n * {@link FoldingRange} literals.\n */\nexport var FoldingRange;\n(function (FoldingRange) {\n /**\n * Creates a new FoldingRange literal.\n */\n function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n var result = {\n startLine: startLine,\n endLine: endLine\n };\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n if (Is.defined(collapsedText)) {\n result.collapsedText = collapsedText;\n }\n return result;\n }\n FoldingRange.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FoldingRange} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine)\n && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter))\n && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter))\n && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n FoldingRange.is = is;\n})(FoldingRange || (FoldingRange = {}));\n/**\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\n * {@link DiagnosticRelatedInformation} literals.\n */\nexport var DiagnosticRelatedInformation;\n(function (DiagnosticRelatedInformation) {\n /**\n * Creates a new DiagnosticRelatedInformation literal.\n */\n function create(location, message) {\n return {\n location: location,\n message: message\n };\n }\n DiagnosticRelatedInformation.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DiagnosticRelatedInformation} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation.is = is;\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\n/**\n * The diagnostic's severity.\n */\nexport var DiagnosticSeverity;\n(function (DiagnosticSeverity) {\n /**\n * Reports an error.\n */\n DiagnosticSeverity.Error = 1;\n /**\n * Reports a warning.\n */\n DiagnosticSeverity.Warning = 2;\n /**\n * Reports an information.\n */\n DiagnosticSeverity.Information = 3;\n /**\n * Reports a hint.\n */\n DiagnosticSeverity.Hint = 4;\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\n/**\n * The diagnostic tags.\n *\n * @since 3.15.0\n */\nexport var DiagnosticTag;\n(function (DiagnosticTag) {\n /**\n * Unused or unnecessary code.\n *\n * Clients are allowed to render diagnostics with this tag faded out instead of having\n * an error squiggle.\n */\n DiagnosticTag.Unnecessary = 1;\n /**\n * Deprecated or obsolete code.\n *\n * Clients are allowed to rendered diagnostics with this tag strike through.\n */\n DiagnosticTag.Deprecated = 2;\n})(DiagnosticTag || (DiagnosticTag = {}));\n/**\n * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n *\n * @since 3.16.0\n */\nexport var CodeDescription;\n(function (CodeDescription) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.href);\n }\n CodeDescription.is = is;\n})(CodeDescription || (CodeDescription = {}));\n/**\n * The Diagnostic namespace provides helper functions to work with\n * {@link Diagnostic} literals.\n */\nexport var Diagnostic;\n(function (Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */\n function create(range, message, severity, code, source, relatedInformation) {\n var result = { range: range, message: message };\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n if (Is.defined(code)) {\n result.code = code;\n }\n if (Is.defined(source)) {\n result.source = source;\n }\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n return result;\n }\n Diagnostic.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Diagnostic} interface.\n */\n function is(value) {\n var _a;\n var candidate = value;\n return Is.defined(candidate)\n && Range.is(candidate.range)\n && Is.string(candidate.message)\n && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\n && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\n && (Is.undefined(candidate.codeDescription) || (Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)))\n && (Is.string(candidate.source) || Is.undefined(candidate.source))\n && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n Diagnostic.is = is;\n})(Diagnostic || (Diagnostic = {}));\n/**\n * The Command namespace provides helper functions to work with\n * {@link Command} literals.\n */\nexport var Command;\n(function (Command) {\n /**\n * Creates a new Command literal.\n */\n function create(title, command) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var result = { title: title, command: command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n Command.create = create;\n /**\n * Checks whether the given literal conforms to the {@link Command} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n Command.is = is;\n})(Command || (Command = {}));\n/**\n * The TextEdit namespace provides helper function to create replace,\n * insert and delete edits more easily.\n */\nexport var TextEdit;\n(function (TextEdit) {\n /**\n * Creates a replace text edit.\n * @param range The range of text to be replaced.\n * @param newText The new text.\n */\n function replace(range, newText) {\n return { range: range, newText: newText };\n }\n TextEdit.replace = replace;\n /**\n * Creates an insert text edit.\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n */\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText: newText };\n }\n TextEdit.insert = insert;\n /**\n * Creates a delete text edit.\n * @param range The range of text to be deleted.\n */\n function del(range) {\n return { range: range, newText: '' };\n }\n TextEdit.del = del;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate)\n && Is.string(candidate.newText)\n && Range.is(candidate.range);\n }\n TextEdit.is = is;\n})(TextEdit || (TextEdit = {}));\nexport var ChangeAnnotation;\n(function (ChangeAnnotation) {\n function create(label, needsConfirmation, description) {\n var result = { label: label };\n if (needsConfirmation !== undefined) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== undefined) {\n result.description = description;\n }\n return result;\n }\n ChangeAnnotation.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.label) &&\n (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n ChangeAnnotation.is = is;\n})(ChangeAnnotation || (ChangeAnnotation = {}));\nexport var ChangeAnnotationIdentifier;\n(function (ChangeAnnotationIdentifier) {\n function is(value) {\n var candidate = value;\n return Is.string(candidate);\n }\n ChangeAnnotationIdentifier.is = is;\n})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\nexport var AnnotatedTextEdit;\n(function (AnnotatedTextEdit) {\n /**\n * Creates an annotated replace text edit.\n *\n * @param range The range of text to be replaced.\n * @param newText The new text.\n * @param annotation The annotation.\n */\n function replace(range, newText, annotation) {\n return { range: range, newText: newText, annotationId: annotation };\n }\n AnnotatedTextEdit.replace = replace;\n /**\n * Creates an annotated insert text edit.\n *\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n * @param annotation The annotation.\n */\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText: newText, annotationId: annotation };\n }\n AnnotatedTextEdit.insert = insert;\n /**\n * Creates an annotated delete text edit.\n *\n * @param range The range of text to be deleted.\n * @param annotation The annotation.\n */\n function del(range, annotation) {\n return { range: range, newText: '', annotationId: annotation };\n }\n AnnotatedTextEdit.del = del;\n function is(value) {\n var candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n AnnotatedTextEdit.is = is;\n})(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\n/**\n * The TextDocumentEdit namespace provides helper function to create\n * an edit that manipulates a text document.\n */\nexport var TextDocumentEdit;\n(function (TextDocumentEdit) {\n /**\n * Creates a new `TextDocumentEdit`\n */\n function create(textDocument, edits) {\n return { textDocument: textDocument, edits: edits };\n }\n TextDocumentEdit.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate)\n && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument)\n && Array.isArray(candidate.edits);\n }\n TextDocumentEdit.is = is;\n})(TextDocumentEdit || (TextDocumentEdit = {}));\nexport var CreateFile;\n(function (CreateFile) {\n function create(uri, options, annotation) {\n var result = {\n kind: 'create',\n uri: uri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n CreateFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n CreateFile.is = is;\n})(CreateFile || (CreateFile = {}));\nexport var RenameFile;\n(function (RenameFile) {\n function create(oldUri, newUri, options, annotation) {\n var result = {\n kind: 'rename',\n oldUri: oldUri,\n newUri: newUri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n RenameFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n RenameFile.is = is;\n})(RenameFile || (RenameFile = {}));\nexport var DeleteFile;\n(function (DeleteFile) {\n function create(uri, options, annotation) {\n var result = {\n kind: 'delete',\n uri: uri\n };\n if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n DeleteFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n DeleteFile.is = is;\n})(DeleteFile || (DeleteFile = {}));\nexport var WorkspaceEdit;\n(function (WorkspaceEdit) {\n function is(value) {\n var candidate = value;\n return candidate &&\n (candidate.changes !== undefined || candidate.documentChanges !== undefined) &&\n (candidate.documentChanges === undefined || candidate.documentChanges.every(function (change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n }\n else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n WorkspaceEdit.is = is;\n})(WorkspaceEdit || (WorkspaceEdit = {}));\nvar TextEditChangeImpl = /** @class */ (function () {\n function TextEditChangeImpl(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n TextEditChangeImpl.prototype.insert = function (position, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.insert(position, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.replace = function (range, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.replace(range, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range, newText, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.delete = function (range, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.del(range);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n }\n else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range, id);\n }\n this.edits.push(edit);\n if (id !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.add = function (edit) {\n this.edits.push(edit);\n };\n TextEditChangeImpl.prototype.all = function () {\n return this.edits;\n };\n TextEditChangeImpl.prototype.clear = function () {\n this.edits.splice(0, this.edits.length);\n };\n TextEditChangeImpl.prototype.assertChangeAnnotations = function (value) {\n if (value === undefined) {\n throw new Error(\"Text edit change is not configured to manage change annotations.\");\n }\n };\n return TextEditChangeImpl;\n}());\n/**\n * A helper class\n */\nvar ChangeAnnotations = /** @class */ (function () {\n function ChangeAnnotations(annotations) {\n this._annotations = annotations === undefined ? Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n ChangeAnnotations.prototype.all = function () {\n return this._annotations;\n };\n Object.defineProperty(ChangeAnnotations.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n ChangeAnnotations.prototype.manage = function (idOrAnnotation, annotation) {\n var id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n }\n else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== undefined) {\n throw new Error(\"Id \".concat(id, \" is already in use.\"));\n }\n if (annotation === undefined) {\n throw new Error(\"No annotation provided for id \".concat(id));\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n };\n ChangeAnnotations.prototype.nextId = function () {\n this._counter++;\n return this._counter.toString();\n };\n return ChangeAnnotations;\n}());\n/**\n * A workspace change helps constructing changes to a workspace.\n */\nvar WorkspaceChange = /** @class */ (function () {\n function WorkspaceChange(workspaceEdit) {\n var _this = this;\n this._textEditChanges = Object.create(null);\n if (workspaceEdit !== undefined) {\n this._workspaceEdit = workspaceEdit;\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach(function (change) {\n if (TextDocumentEdit.is(change)) {\n var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n }\n else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach(function (key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n }\n }\n else {\n this._workspaceEdit = {};\n }\n }\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\n /**\n * Returns the underlying {@link WorkspaceEdit} literal\n * use to be returned from a workspace edit operation like rename.\n */\n get: function () {\n this.initDocumentChanges();\n if (this._changeAnnotations !== undefined) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = undefined;\n }\n else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n },\n enumerable: false,\n configurable: true\n });\n WorkspaceChange.prototype.getTextEditChange = function (key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var textDocument = { uri: key.uri, version: key.version };\n var result = this._textEditChanges[textDocument.uri];\n if (!result) {\n var edits = [];\n var textDocumentEdit = {\n textDocument: textDocument,\n edits: edits\n };\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n return result;\n }\n else {\n this.initChanges();\n if (this._workspaceEdit.changes === undefined) {\n throw new Error('Workspace edit is not configured for normal text edit changes.');\n }\n var result = this._textEditChanges[key];\n if (!result) {\n var edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n };\n WorkspaceChange.prototype.initDocumentChanges = function () {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n };\n WorkspaceChange.prototype.initChanges = function () {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._workspaceEdit.changes = Object.create(null);\n }\n };\n WorkspaceChange.prototype.createFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = CreateFile.create(uri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n };\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = RenameFile.create(oldUri, newUri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n };\n WorkspaceChange.prototype.deleteFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = DeleteFile.create(uri, options);\n }\n else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== undefined) {\n return id;\n }\n };\n return WorkspaceChange;\n}());\nexport { WorkspaceChange };\n/**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * {@link TextDocumentIdentifier} literals.\n */\nexport var TextDocumentIdentifier;\n(function (TextDocumentIdentifier) {\n /**\n * Creates a new TextDocumentIdentifier literal.\n * @param uri The document's uri.\n */\n function create(uri) {\n return { uri: uri };\n }\n TextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier.is = is;\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\n/**\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link VersionedTextDocumentIdentifier} literals.\n */\nexport var VersionedTextDocumentIdentifier;\n(function (VersionedTextDocumentIdentifier) {\n /**\n * Creates a new VersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param version The document's version.\n */\n function create(uri, version) {\n return { uri: uri, version: version };\n }\n VersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier.is = is;\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\n/**\n * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link OptionalVersionedTextDocumentIdentifier} literals.\n */\nexport var OptionalVersionedTextDocumentIdentifier;\n(function (OptionalVersionedTextDocumentIdentifier) {\n /**\n * Creates a new OptionalVersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param version The document's version.\n */\n function create(uri, version) {\n return { uri: uri, version: version };\n }\n OptionalVersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n OptionalVersionedTextDocumentIdentifier.is = is;\n})(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\n/**\n * The TextDocumentItem namespace provides helper functions to work with\n * {@link TextDocumentItem} literals.\n */\nexport var TextDocumentItem;\n(function (TextDocumentItem) {\n /**\n * Creates a new TextDocumentItem literal.\n * @param uri The document's uri.\n * @param languageId The document's language identifier.\n * @param version The document's version number.\n * @param text The document's text.\n */\n function create(uri, languageId, version, text) {\n return { uri: uri, languageId: languageId, version: version, text: text };\n }\n TextDocumentItem.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentItem} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n TextDocumentItem.is = is;\n})(TextDocumentItem || (TextDocumentItem = {}));\n/**\n * Describes the content type that a client supports in various\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\n *\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\n * are reserved for internal usage.\n */\nexport var MarkupKind;\n(function (MarkupKind) {\n /**\n * Plain text is supported as a content format\n */\n MarkupKind.PlainText = 'plaintext';\n /**\n * Markdown is supported as a content format\n */\n MarkupKind.Markdown = 'markdown';\n /**\n * Checks whether the given value is a value of the {@link MarkupKind} type.\n */\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n MarkupKind.is = is;\n})(MarkupKind || (MarkupKind = {}));\nexport var MarkupContent;\n(function (MarkupContent) {\n /**\n * Checks whether the given value conforms to the {@link MarkupContent} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent.is = is;\n})(MarkupContent || (MarkupContent = {}));\n/**\n * The kind of a completion entry.\n */\nexport var CompletionItemKind;\n(function (CompletionItemKind) {\n CompletionItemKind.Text = 1;\n CompletionItemKind.Method = 2;\n CompletionItemKind.Function = 3;\n CompletionItemKind.Constructor = 4;\n CompletionItemKind.Field = 5;\n CompletionItemKind.Variable = 6;\n CompletionItemKind.Class = 7;\n CompletionItemKind.Interface = 8;\n CompletionItemKind.Module = 9;\n CompletionItemKind.Property = 10;\n CompletionItemKind.Unit = 11;\n CompletionItemKind.Value = 12;\n CompletionItemKind.Enum = 13;\n CompletionItemKind.Keyword = 14;\n CompletionItemKind.Snippet = 15;\n CompletionItemKind.Color = 16;\n CompletionItemKind.File = 17;\n CompletionItemKind.Reference = 18;\n CompletionItemKind.Folder = 19;\n CompletionItemKind.EnumMember = 20;\n CompletionItemKind.Constant = 21;\n CompletionItemKind.Struct = 22;\n CompletionItemKind.Event = 23;\n CompletionItemKind.Operator = 24;\n CompletionItemKind.TypeParameter = 25;\n})(CompletionItemKind || (CompletionItemKind = {}));\n/**\n * Defines whether the insert text in a completion item should be interpreted as\n * plain text or a snippet.\n */\nexport var InsertTextFormat;\n(function (InsertTextFormat) {\n /**\n * The primary text to be inserted is treated as a plain string.\n */\n InsertTextFormat.PlainText = 1;\n /**\n * The primary text to be inserted is treated as a snippet.\n *\n * A snippet can define tab stops and placeholders with `$1`, `$2`\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n * the end of the snippet. Placeholders with equal identifiers are linked,\n * that is typing in one will update others too.\n *\n * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax\n */\n InsertTextFormat.Snippet = 2;\n})(InsertTextFormat || (InsertTextFormat = {}));\n/**\n * Completion item tags are extra annotations that tweak the rendering of a completion\n * item.\n *\n * @since 3.15.0\n */\nexport var CompletionItemTag;\n(function (CompletionItemTag) {\n /**\n * Render a completion as obsolete, usually using a strike-out.\n */\n CompletionItemTag.Deprecated = 1;\n})(CompletionItemTag || (CompletionItemTag = {}));\n/**\n * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n *\n * @since 3.16.0\n */\nexport var InsertReplaceEdit;\n(function (InsertReplaceEdit) {\n /**\n * Creates a new insert / replace edit\n */\n function create(newText, insert, replace) {\n return { newText: newText, insert: insert, replace: replace };\n }\n InsertReplaceEdit.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface.\n */\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n InsertReplaceEdit.is = is;\n})(InsertReplaceEdit || (InsertReplaceEdit = {}));\n/**\n * How whitespace and indentation is handled during completion\n * item insertion.\n *\n * @since 3.16.0\n */\nexport var InsertTextMode;\n(function (InsertTextMode) {\n /**\n * The insertion or replace strings is taken as it is. If the\n * value is multi line the lines below the cursor will be\n * inserted using the indentation defined in the string value.\n * The client will not apply any kind of adjustments to the\n * string.\n */\n InsertTextMode.asIs = 1;\n /**\n * The editor adjusts leading whitespace of new lines so that\n * they match the indentation up to the cursor of the line for\n * which the item is accepted.\n *\n * Consider a line like this: <2tabs><3tabs>foo. Accepting a\n * multi line completion item is indented using 2 tabs and all\n * following lines inserted will be indented using 2 tabs as well.\n */\n InsertTextMode.adjustIndentation = 2;\n})(InsertTextMode || (InsertTextMode = {}));\nexport var CompletionItemLabelDetails;\n(function (CompletionItemLabelDetails) {\n function is(value) {\n var candidate = value;\n return candidate && (Is.string(candidate.detail) || candidate.detail === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n CompletionItemLabelDetails.is = is;\n})(CompletionItemLabelDetails || (CompletionItemLabelDetails = {}));\n/**\n * The CompletionItem namespace provides functions to deal with\n * completion items.\n */\nexport var CompletionItem;\n(function (CompletionItem) {\n /**\n * Create a completion item and seed it with a label.\n * @param label The completion item's label\n */\n function create(label) {\n return { label: label };\n }\n CompletionItem.create = create;\n})(CompletionItem || (CompletionItem = {}));\n/**\n * The CompletionList namespace provides functions to deal with\n * completion lists.\n */\nexport var CompletionList;\n(function (CompletionList) {\n /**\n * Creates a new completion list.\n *\n * @param items The completion items.\n * @param isIncomplete The list is not complete.\n */\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n CompletionList.create = create;\n})(CompletionList || (CompletionList = {}));\nexport var MarkedString;\n(function (MarkedString) {\n /**\n * Creates a marked string from plain text.\n *\n * @param plainText The plain text.\n */\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n }\n MarkedString.fromPlainText = fromPlainText;\n /**\n * Checks whether the given value conforms to the {@link MarkedString} type.\n */\n function is(value) {\n var candidate = value;\n return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\n }\n MarkedString.is = is;\n})(MarkedString || (MarkedString = {}));\nexport var Hover;\n(function (Hover) {\n /**\n * Checks whether the given value conforms to the {@link Hover} interface.\n */\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\n MarkedString.is(candidate.contents) ||\n Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range.is(value.range));\n }\n Hover.is = is;\n})(Hover || (Hover = {}));\n/**\n * The ParameterInformation namespace provides helper functions to work with\n * {@link ParameterInformation} literals.\n */\nexport var ParameterInformation;\n(function (ParameterInformation) {\n /**\n * Creates a new parameter information literal.\n *\n * @param label A label string.\n * @param documentation A doc string.\n */\n function create(label, documentation) {\n return documentation ? { label: label, documentation: documentation } : { label: label };\n }\n ParameterInformation.create = create;\n})(ParameterInformation || (ParameterInformation = {}));\n/**\n * The SignatureInformation namespace provides helper functions to work with\n * {@link SignatureInformation} literals.\n */\nexport var SignatureInformation;\n(function (SignatureInformation) {\n function create(label, documentation) {\n var parameters = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n parameters[_i - 2] = arguments[_i];\n }\n var result = { label: label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n }\n else {\n result.parameters = [];\n }\n return result;\n }\n SignatureInformation.create = create;\n})(SignatureInformation || (SignatureInformation = {}));\n/**\n * A document highlight kind.\n */\nexport var DocumentHighlightKind;\n(function (DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind.Text = 1;\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind.Read = 2;\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind.Write = 3;\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\n/**\n * DocumentHighlight namespace to provide helper functions to work with\n * {@link DocumentHighlight} literals.\n */\nexport var DocumentHighlight;\n(function (DocumentHighlight) {\n /**\n * Create a DocumentHighlight object.\n * @param range The range the highlight applies to.\n * @param kind The highlight kind\n */\n function create(range, kind) {\n var result = { range: range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight.create = create;\n})(DocumentHighlight || (DocumentHighlight = {}));\n/**\n * A symbol kind.\n */\nexport var SymbolKind;\n(function (SymbolKind) {\n SymbolKind.File = 1;\n SymbolKind.Module = 2;\n SymbolKind.Namespace = 3;\n SymbolKind.Package = 4;\n SymbolKind.Class = 5;\n SymbolKind.Method = 6;\n SymbolKind.Property = 7;\n SymbolKind.Field = 8;\n SymbolKind.Constructor = 9;\n SymbolKind.Enum = 10;\n SymbolKind.Interface = 11;\n SymbolKind.Function = 12;\n SymbolKind.Variable = 13;\n SymbolKind.Constant = 14;\n SymbolKind.String = 15;\n SymbolKind.Number = 16;\n SymbolKind.Boolean = 17;\n SymbolKind.Array = 18;\n SymbolKind.Object = 19;\n SymbolKind.Key = 20;\n SymbolKind.Null = 21;\n SymbolKind.EnumMember = 22;\n SymbolKind.Struct = 23;\n SymbolKind.Event = 24;\n SymbolKind.Operator = 25;\n SymbolKind.TypeParameter = 26;\n})(SymbolKind || (SymbolKind = {}));\n/**\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\n *\n * @since 3.16\n */\nexport var SymbolTag;\n(function (SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */\n SymbolTag.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nexport var SymbolInformation;\n(function (SymbolInformation) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the location of the symbol.\n * @param uri The resource of the location of symbol.\n * @param containerName The name of the symbol containing the symbol.\n */\n function create(name, kind, range, uri, containerName) {\n var result = {\n name: name,\n kind: kind,\n location: { uri: uri, range: range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation.create = create;\n})(SymbolInformation || (SymbolInformation = {}));\nexport var WorkspaceSymbol;\n(function (WorkspaceSymbol) {\n /**\n * Create a new workspace symbol.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param uri The resource of the location of the symbol.\n * @param range An options range of the location.\n * @returns A WorkspaceSymbol.\n */\n function create(name, kind, uri, range) {\n return range !== undefined\n ? { name: name, kind: kind, location: { uri: uri, range: range } }\n : { name: name, kind: kind, location: { uri: uri } };\n }\n WorkspaceSymbol.create = create;\n})(WorkspaceSymbol || (WorkspaceSymbol = {}));\nexport var DocumentSymbol;\n(function (DocumentSymbol) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param detail The detail of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the symbol.\n * @param selectionRange The selectionRange of the symbol.\n * @param children Children of the symbol.\n */\n function create(name, detail, kind, range, selectionRange, children) {\n var result = {\n name: name,\n detail: detail,\n kind: kind,\n range: range,\n selectionRange: selectionRange\n };\n if (children !== undefined) {\n result.children = children;\n }\n return result;\n }\n DocumentSymbol.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n */\n function is(value) {\n var candidate = value;\n return candidate &&\n Is.string(candidate.name) && Is.number(candidate.kind) &&\n Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\n (candidate.detail === undefined || Is.string(candidate.detail)) &&\n (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) &&\n (candidate.children === undefined || Array.isArray(candidate.children)) &&\n (candidate.tags === undefined || Array.isArray(candidate.tags));\n }\n DocumentSymbol.is = is;\n})(DocumentSymbol || (DocumentSymbol = {}));\n/**\n * A set of predefined code action kinds\n */\nexport var CodeActionKind;\n(function (CodeActionKind) {\n /**\n * Empty kind.\n */\n CodeActionKind.Empty = '';\n /**\n * Base kind for quickfix actions: 'quickfix'\n */\n CodeActionKind.QuickFix = 'quickfix';\n /**\n * Base kind for refactoring actions: 'refactor'\n */\n CodeActionKind.Refactor = 'refactor';\n /**\n * Base kind for refactoring extraction actions: 'refactor.extract'\n *\n * Example extract actions:\n *\n * - Extract method\n * - Extract function\n * - Extract variable\n * - Extract interface from class\n * - ...\n */\n CodeActionKind.RefactorExtract = 'refactor.extract';\n /**\n * Base kind for refactoring inline actions: 'refactor.inline'\n *\n * Example inline actions:\n *\n * - Inline function\n * - Inline variable\n * - Inline constant\n * - ...\n */\n CodeActionKind.RefactorInline = 'refactor.inline';\n /**\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n *\n * Example rewrite actions:\n *\n * - Convert JavaScript function to class\n * - Add or remove parameter\n * - Encapsulate field\n * - Make method static\n * - Move method to base class\n * - ...\n */\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\n * Base kind for source actions: `source`\n *\n * Source code actions apply to the entire file.\n */\n CodeActionKind.Source = 'source';\n /**\n * Base kind for an organize imports source action: `source.organizeImports`\n */\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n /**\n * Base kind for auto-fix source actions: `source.fixAll`.\n *\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n *\n * @since 3.15.0\n */\n CodeActionKind.SourceFixAll = 'source.fixAll';\n})(CodeActionKind || (CodeActionKind = {}));\n/**\n * The reason why code actions were requested.\n *\n * @since 3.17.0\n */\nexport var CodeActionTriggerKind;\n(function (CodeActionTriggerKind) {\n /**\n * Code actions were explicitly requested by the user or by an extension.\n */\n CodeActionTriggerKind.Invoked = 1;\n /**\n * Code actions were requested automatically.\n *\n * This typically happens when current selection in a file changes, but can\n * also be triggered when file content changes.\n */\n CodeActionTriggerKind.Automatic = 2;\n})(CodeActionTriggerKind || (CodeActionTriggerKind = {}));\n/**\n * The CodeActionContext namespace provides helper functions to work with\n * {@link CodeActionContext} literals.\n */\nexport var CodeActionContext;\n(function (CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */\n function create(diagnostics, only, triggerKind) {\n var result = { diagnostics: diagnostics };\n if (only !== undefined && only !== null) {\n result.only = only;\n }\n if (triggerKind !== undefined && triggerKind !== null) {\n result.triggerKind = triggerKind;\n }\n return result;\n }\n CodeActionContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is)\n && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string))\n && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n }\n CodeActionContext.is = is;\n})(CodeActionContext || (CodeActionContext = {}));\nexport var CodeAction;\n(function (CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = { title: title };\n var checkKind = true;\n if (typeof kindOrCommandOrEdit === 'string') {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n }\n else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n }\n else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n CodeAction.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) &&\n (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\n (candidate.kind === undefined || Is.string(candidate.kind)) &&\n (candidate.edit !== undefined || candidate.command !== undefined) &&\n (candidate.command === undefined || Command.is(candidate.command)) &&\n (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) &&\n (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction.is = is;\n})(CodeAction || (CodeAction = {}));\n/**\n * The CodeLens namespace provides helper functions to work with\n * {@link CodeLens} literals.\n */\nexport var CodeLens;\n(function (CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */\n function create(range, data) {\n var result = { range: range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n CodeLens.create = create;\n /**\n * Checks whether the given literal conforms to the {@link CodeLens} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n CodeLens.is = is;\n})(CodeLens || (CodeLens = {}));\n/**\n * The FormattingOptions namespace provides helper functions to work with\n * {@link FormattingOptions} literals.\n */\nexport var FormattingOptions;\n(function (FormattingOptions) {\n /**\n * Creates a new FormattingOptions literal.\n */\n function create(tabSize, insertSpaces) {\n return { tabSize: tabSize, insertSpaces: insertSpaces };\n }\n FormattingOptions.create = create;\n /**\n * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions.is = is;\n})(FormattingOptions || (FormattingOptions = {}));\n/**\n * The DocumentLink namespace provides helper functions to work with\n * {@link DocumentLink} literals.\n */\nexport var DocumentLink;\n(function (DocumentLink) {\n /**\n * Creates a new DocumentLink literal.\n */\n function create(range, target, data) {\n return { range: range, target: target, data: data };\n }\n DocumentLink.create = create;\n /**\n * Checks whether the given literal conforms to the {@link DocumentLink} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n DocumentLink.is = is;\n})(DocumentLink || (DocumentLink = {}));\n/**\n * The SelectionRange namespace provides helper function to work with\n * SelectionRange literals.\n */\nexport var SelectionRange;\n(function (SelectionRange) {\n /**\n * Creates a new SelectionRange\n * @param range the range.\n * @param parent an optional parent.\n */\n function create(range, parent) {\n return { range: range, parent: parent };\n }\n SelectionRange.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n }\n SelectionRange.is = is;\n})(SelectionRange || (SelectionRange = {}));\n/**\n * A set of predefined token types. This set is not fixed\n * an clients can specify additional token types via the\n * corresponding client capabilities.\n *\n * @since 3.16.0\n */\nexport var SemanticTokenTypes;\n(function (SemanticTokenTypes) {\n SemanticTokenTypes[\"namespace\"] = \"namespace\";\n /**\n * Represents a generic type. Acts as a fallback for types which can't be mapped to\n * a specific type like class or enum.\n */\n SemanticTokenTypes[\"type\"] = \"type\";\n SemanticTokenTypes[\"class\"] = \"class\";\n SemanticTokenTypes[\"enum\"] = \"enum\";\n SemanticTokenTypes[\"interface\"] = \"interface\";\n SemanticTokenTypes[\"struct\"] = \"struct\";\n SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n SemanticTokenTypes[\"parameter\"] = \"parameter\";\n SemanticTokenTypes[\"variable\"] = \"variable\";\n SemanticTokenTypes[\"property\"] = \"property\";\n SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n SemanticTokenTypes[\"event\"] = \"event\";\n SemanticTokenTypes[\"function\"] = \"function\";\n SemanticTokenTypes[\"method\"] = \"method\";\n SemanticTokenTypes[\"macro\"] = \"macro\";\n SemanticTokenTypes[\"keyword\"] = \"keyword\";\n SemanticTokenTypes[\"modifier\"] = \"modifier\";\n SemanticTokenTypes[\"comment\"] = \"comment\";\n SemanticTokenTypes[\"string\"] = \"string\";\n SemanticTokenTypes[\"number\"] = \"number\";\n SemanticTokenTypes[\"regexp\"] = \"regexp\";\n SemanticTokenTypes[\"operator\"] = \"operator\";\n /**\n * @since 3.17.0\n */\n SemanticTokenTypes[\"decorator\"] = \"decorator\";\n})(SemanticTokenTypes || (SemanticTokenTypes = {}));\n/**\n * A set of predefined token modifiers. This set is not fixed\n * an clients can specify additional token types via the\n * corresponding client capabilities.\n *\n * @since 3.16.0\n */\nexport var SemanticTokenModifiers;\n(function (SemanticTokenModifiers) {\n SemanticTokenModifiers[\"declaration\"] = \"declaration\";\n SemanticTokenModifiers[\"definition\"] = \"definition\";\n SemanticTokenModifiers[\"readonly\"] = \"readonly\";\n SemanticTokenModifiers[\"static\"] = \"static\";\n SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\n SemanticTokenModifiers[\"abstract\"] = \"abstract\";\n SemanticTokenModifiers[\"async\"] = \"async\";\n SemanticTokenModifiers[\"modification\"] = \"modification\";\n SemanticTokenModifiers[\"documentation\"] = \"documentation\";\n SemanticTokenModifiers[\"defaultLibrary\"] = \"defaultLibrary\";\n})(SemanticTokenModifiers || (SemanticTokenModifiers = {}));\n/**\n * @since 3.16.0\n */\nexport var SemanticTokens;\n(function (SemanticTokens) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') &&\n Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n }\n SemanticTokens.is = is;\n})(SemanticTokens || (SemanticTokens = {}));\n/**\n * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n *\n * @since 3.17.0\n */\nexport var InlineValueText;\n(function (InlineValueText) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, text) {\n return { range: range, text: text };\n }\n InlineValueText.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n }\n InlineValueText.is = is;\n})(InlineValueText || (InlineValueText = {}));\n/**\n * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n *\n * @since 3.17.0\n */\nexport var InlineValueVariableLookup;\n(function (InlineValueVariableLookup) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, variableName, caseSensitiveLookup) {\n return { range: range, variableName: variableName, caseSensitiveLookup: caseSensitiveLookup };\n }\n InlineValueVariableLookup.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup)\n && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n }\n InlineValueVariableLookup.is = is;\n})(InlineValueVariableLookup || (InlineValueVariableLookup = {}));\n/**\n * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n *\n * @since 3.17.0\n */\nexport var InlineValueEvaluatableExpression;\n(function (InlineValueEvaluatableExpression) {\n /**\n * Creates a new InlineValueEvaluatableExpression literal.\n */\n function create(range, expression) {\n return { range: range, expression: expression };\n }\n InlineValueEvaluatableExpression.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range)\n && (Is.string(candidate.expression) || candidate.expression === undefined);\n }\n InlineValueEvaluatableExpression.is = is;\n})(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {}));\n/**\n * The InlineValueContext namespace provides helper functions to work with\n * {@link InlineValueContext} literals.\n *\n * @since 3.17.0\n */\nexport var InlineValueContext;\n(function (InlineValueContext) {\n /**\n * Creates a new InlineValueContext literal.\n */\n function create(frameId, stoppedLocation) {\n return { frameId: frameId, stoppedLocation: stoppedLocation };\n }\n InlineValueContext.create = create;\n /**\n * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n InlineValueContext.is = is;\n})(InlineValueContext || (InlineValueContext = {}));\n/**\n * Inlay hint kinds.\n *\n * @since 3.17.0\n */\nexport var InlayHintKind;\n(function (InlayHintKind) {\n /**\n * An inlay hint that for a type annotation.\n */\n InlayHintKind.Type = 1;\n /**\n * An inlay hint that is for a parameter.\n */\n InlayHintKind.Parameter = 2;\n function is(value) {\n return value === 1 || value === 2;\n }\n InlayHintKind.is = is;\n})(InlayHintKind || (InlayHintKind = {}));\nexport var InlayHintLabelPart;\n(function (InlayHintLabelPart) {\n function create(value) {\n return { value: value };\n }\n InlayHintLabelPart.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate)\n && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n && (candidate.location === undefined || Location.is(candidate.location))\n && (candidate.command === undefined || Command.is(candidate.command));\n }\n InlayHintLabelPart.is = is;\n})(InlayHintLabelPart || (InlayHintLabelPart = {}));\nexport var InlayHint;\n(function (InlayHint) {\n function create(position, label, kind) {\n var result = { position: position, label: label };\n if (kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n InlayHint.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.position)\n && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is))\n && (candidate.kind === undefined || InlayHintKind.is(candidate.kind))\n && (candidate.textEdits === undefined) || Is.typedArray(candidate.textEdits, TextEdit.is)\n && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft))\n && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight));\n }\n InlayHint.is = is;\n})(InlayHint || (InlayHint = {}));\nexport var WorkspaceFolder;\n(function (WorkspaceFolder) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n }\n WorkspaceFolder.is = is;\n})(WorkspaceFolder || (WorkspaceFolder = {}));\nexport var EOL = ['\\n', '\\r\\n', '\\r'];\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new ITextDocument literal from the given uri and content.\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's version.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Checks whether the given literal conforms to the {@link ITextDocument} interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount)\n && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n TextDocument.is = is;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits, function (a, b) {\n var diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n var lastModifiedOffset = text.length;\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\n var e = sortedEdits[i];\n var startOffset = document.offsetAt(e.range.start);\n var endOffset = document.offsetAt(e.range.end);\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n var p = (data.length / 2) | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n})(TextDocument || (TextDocument = {}));\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nvar FullTextDocument = /** @class */ (function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument.prototype.getText = function (range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n };\n FullTextDocument.prototype.update = function (event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = undefined;\n };\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\n var lineOffsets = [];\n var text = this._content;\n var isLineStart = true;\n for (var i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n var ch = text.charAt(i);\n isLineStart = (ch === '\\r' || ch === '\\n');\n if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n i++;\n }\n }\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n this._lineOffsets = lineOffsets;\n }\n return this._lineOffsets;\n };\n FullTextDocument.prototype.positionAt = function (offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n return FullTextDocument;\n}());\nvar Is;\n(function (Is) {\n var toString = Object.prototype.toString;\n function defined(value) {\n return typeof value !== 'undefined';\n }\n Is.defined = defined;\n function undefined(value) {\n return typeof value === 'undefined';\n }\n Is.undefined = undefined;\n function boolean(value) {\n return value === true || value === false;\n }\n Is.boolean = boolean;\n function string(value) {\n return toString.call(value) === '[object String]';\n }\n Is.string = string;\n function number(value) {\n return toString.call(value) === '[object Number]';\n }\n Is.number = number;\n function numberRange(value, min, max) {\n return toString.call(value) === '[object Number]' && min <= value && value <= max;\n }\n Is.numberRange = numberRange;\n function integer(value) {\n return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n }\n Is.integer = integer;\n function uinteger(value) {\n return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n }\n Is.uinteger = uinteger;\n function func(value) {\n return toString.call(value) === '[object Function]';\n }\n Is.func = func;\n function objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n }\n Is.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n Is.typedArray = typedArray;\n})(Is || (Is = {}));\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","module.exports = require(\"vscode\");","module.exports = require(\"child_process\");","module.exports = require(\"crypto\");","module.exports = require(\"fs\");","module.exports = require(\"net\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"util\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { ExtensionContext, commands, window, workspace } from \"vscode\";\r\nimport {\r\n\tLanguageClient,\r\n\tLanguageClientOptions,\r\n\tServerOptions,\r\n} from \"vscode-languageclient/node\";\r\nimport { showReferences } from \"./commands\";\r\n\r\nlet client: LanguageClient | undefined;\r\n\r\nasync function startLanguageClient(context: ExtensionContext) {\r\n\ttry {\r\n\t\tconst executablePath = (() => {\r\n\t\t\tlet executablePath = workspace\r\n\t\t\t\t.getConfiguration(\"pylyzer\")\r\n\t\t\t\t.get(\"executablePath\", \"\");\r\n\t\t\treturn executablePath === \"\" ? \"pylyzer\" : executablePath;\r\n\t\t})();\r\n\t\tconst enableInlayHints = workspace.getConfiguration(\"pylyzer\").get(\"inlayHints\", false);\r\n\t\tconst enableSemanticTokens = workspace.getConfiguration(\"pylyzer\").get(\"semanticTokens\", true);\r\n\t\tconst enableHover = workspace.getConfiguration(\"pylyzer\").get(\"hover\", true);\r\n\t\tconst smartCompletion = workspace.getConfiguration(\"pylyzer\").get(\"smartCompletion\", true);\r\n\t\t/* optional features */\r\n\t\tconst checkOnType = workspace.getConfiguration(\"pylyzer\").get(\"checkOnType\", false);\r\n\t\tlet args = [\"--server\"];\r\n\t\tif (!(enableInlayHints && enableSemanticTokens && enableHover && smartCompletion) || checkOnType) {\r\n\t\t\targs.push(\"--\");\r\n\t\t}\r\n\t\tif (!enableInlayHints) {\r\n\t\t\targs.push(\"--disable\");\r\n\t\t\targs.push(\"inlayHints\");\r\n\t\t}\r\n\t\tif (!enableSemanticTokens) {\r\n\t\t\targs.push(\"--disable\");\r\n\t\t\targs.push(\"semanticTokens\");\r\n\t\t}\r\n\t\tif (!enableHover) {\r\n\t\t\targs.push(\"--disable\");\r\n\t\t\targs.push(\"hover\");\r\n\t\t}\r\n\t\tif (!smartCompletion) {\r\n\t\t\targs.push(\"--disable\");\r\n\t\t\targs.push(\"smartCompletion\");\r\n\t\t}\r\n\t\tif (checkOnType) {\r\n\t\t\targs.push(\"--enable\");\r\n\t\t\targs.push(\"checkOnType\");\r\n\t\t}\r\n\t\tlet serverOptions: ServerOptions = {\r\n\t\t\tcommand: executablePath,\r\n\t\t\targs,\r\n\t\t};\r\n\t\tconst clientOptions: LanguageClientOptions = {\r\n\t\t\tdocumentSelector: [\r\n\t\t\t\t{\r\n\t\t\t\t\tscheme: \"file\",\r\n\t\t\t\t\tlanguage: \"python\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t\tclient = new LanguageClient(\"pylyzer\", serverOptions, clientOptions);\r\n\t\tawait client.start();\r\n\t} catch (e) {\r\n\t\twindow.showErrorMessage(\r\n\t\t\t\"Failed to start the pylyzer language server. Please make sure you have pylyzer installed.\",\r\n\t\t);\r\n\t}\r\n}\r\n\r\nasync function restartLanguageClient() {\r\n\ttry {\r\n\t\tif (client === undefined) {\r\n\t\t\tthrow new Error();\r\n\t\t}\r\n\t\tawait client.restart();\r\n\t} catch (e) {\r\n\t\twindow.showErrorMessage(\"Failed to restart the pylyzer language server.\");\r\n\t}\r\n}\r\n\r\nexport async function activate(context: ExtensionContext) {\r\n\tcontext.subscriptions.push(\r\n\t\tcommands.registerCommand(\"pylyzer.restartLanguageServer\", () => restartLanguageClient())\r\n\t);\r\n\tcontext.subscriptions.push(\r\n\t\tcommands.registerCommand(\"pylyzer.showReferences\", async (uri, position, locations) => {\r\n\t\t\tawait showReferences(client, uri, position, locations)\r\n\t\t})\r\n\t);\r\n\tawait startLanguageClient(context);\r\n}\r\n\r\nexport function deactivate() {\r\n\tif (client) {\r\n\t\treturn client.stop();\r\n\t}\r\n}\r\n"],"names":["balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","result","ai","indexOf","bi","i","push","pop","module","exports","substr","expand","split","join","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","map","unescapeBraces","Math","random","numeric","parseInt","charCodeAt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","el","test","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","c","String","fromCharCode","need","z","Array","j","Yallist","MAX","Symbol","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","get","self","key","doUse","node","hit","value","isStale","del","now","Date","unshiftNode","maxAge","diff","trim","walker","tail","prev","delete","removeNode","Entry","constructor","this","forEachStep","fn","thisp","undefined","call","options","TypeError","Infinity","lc","stale","dispose","noDisposeOnSet","updateAgeOnGet","reset","mL","allowStale","mA","lengthCalculator","lC","forEach","itemCount","rforEach","head","next","keys","toArray","values","Map","dump","v","e","filter","h","dumpLru","set","len","has","item","unshift","peek","load","arr","l","expiresAt","prune","isWindows","process","platform","sep","minimatch","pattern","assertValidPattern","nocomment","charAt","Minimatch","path","GLOBSTAR","plTypes","open","close","qmark","star","charSet","s","reduce","reSpecials","addPatternStartSet","slashSplit","list","ext","t","Object","defaults","def","orig","super","makeRe","braceExpand","nobrace","SUBPARSE","mm","f","nonull","windowsPathsNoEscape","allowWindowsEscape","replace","regexp","negate","comment","empty","partial","make","debug","parseNegate","globSet","args","console","error","globParts","si","parse","nonegate","negateOffset","matchOne","file","fi","pi","fl","pl","fr","pr","dot","swallowee","Error","isSub","noglobstar","re","hasMagic","escaping","patternListStack","negativeLists","stateChar","cs","sp","inClass","reClassStart","classStart","dotTravAllowed","dotFileAllowed","subPatternStart","clearStateChar","noext","plEntry","type","reStart","assign","reEnd","substring","er","_","$1","$2","addPatternStart","nl","nlBefore","nlFirst","nlAfter","nlLast","closeParensBefore","openParensBefore","cleanAfter","nocase","toUpperCase","toLowerCase","globUnescape","flags","_glob","_src","twoStar","ex","filename","matchBase","flipNegate","static","ANY","Comparator","comp","parseOptions","loose","semver","operator","version","COMPARATORLOOSE","COMPARATOR","SemVer","toString","cmp","intersects","includePrerelease","Range","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","raw","format","parseRange","first","isNullSet","isAny","comps","memoKey","cached","cache","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","rangeList","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","parseComparator","replaceGTE0","rangeMap","comparators","size","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","testSet","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","id","replaceTilde","TILDELOOSE","TILDE","M","ret","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","prerelease","allowed","major","minor","patch","MAX_LENGTH","MAX_SAFE_INTEGER","compareIdentifiers","LOOSE","FULL","num","build","compare","other","compareMain","comparePre","compareBuild","inc","release","identifier","isNaN","eq","neq","gt","lt","op","Number","SEMVER_SPEC_VERSION","MAX_SAFE_COMPONENT_LENGTH","env","NODE_DEBUG","anum","bnum","rcompareIdentifiers","opts","o","src","R","createToken","name","isGlobal","index","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","LONECARET","async","client","uri","position","locations","commands","executeCommand","Uri","protocol2CodeConverter","asPosition","asLocation","defineProperty","ProgressType","ProgressToken","createMessageConnection","NullLogger","ConnectionOptions","ConnectionStrategy","AbstractMessageBuffer","WriteableStreamMessageWriter","AbstractMessageWriter","MessageWriter","ReadableStreamMessageReader","AbstractMessageReader","MessageReader","SharedArrayReceiverStrategy","SharedArraySenderStrategy","CancellationToken","CancellationTokenSource","Emitter","Event","Disposable","LRUCache","Touch","LinkedMap","ParameterStructures","NotificationType9","NotificationType8","NotificationType7","NotificationType6","NotificationType5","NotificationType4","NotificationType3","NotificationType2","NotificationType1","NotificationType0","NotificationType","ErrorCodes","ResponseError","RequestType9","RequestType8","RequestType7","RequestType6","RequestType5","RequestType4","RequestType3","RequestType2","RequestType1","RequestType0","RequestType","Message","RAL","MessageStrategy","CancellationStrategy","CancellationSenderStrategy","CancellationReceiverStrategy","ConnectionError","ConnectionErrors","LogTraceNotification","SetTraceNotification","TraceFormat","TraceValues","Trace","messages_1","enumerable","linkedMap_1","disposable_1","events_1","cancellation_1","sharedArrayCancellation_1","messageReader_1","messageWriter_1","messageBuffer_1","connection_1","ral_1","default","Is","None","freeze","isCancellationRequested","onCancellationRequested","Cancelled","is","candidate","boolean","shortcutEvent","callback","context","handle","timer","setTimeout","bind","MutableToken","_isCancelled","cancel","_emitter","fire","event","token","_token","RequestCancellationReceiverStrategy","IdCancellationReceiverStrategy","CancelNotification","ProgressNotification","StarRequestHandler","ConnectionState","func","warn","info","log","Off","Messages","Compact","Verbose","fromString","string","JSON","Text","code","message","setPrototypeOf","prototype","cancelUndispatched","kind","createCancellationTokenSource","sendCancellation","conn","sendNotification","cleanup","receiver","sender","handleMessage","cancellationStrategy","connectionStrategy","messageStrategy","messageReader","messageWriter","_logger","logger","sequenceNumber","notificationSequenceNumber","unknownResponseSequenceNumber","starRequestHandler","requestHandlers","starNotificationHandler","notificationHandlers","progressHandlers","tracer","messageQueue","responsePromises","knownCanceledRequests","Set","requestTokens","trace","traceFormat","state","New","errorEmitter","closeEmitter","unhandledNotificationEmitter","unhandledProgressEmitter","disposeEmitter","createRequestQueueKey","_message","isListening","Listening","isClosed","Closed","isDisposed","Disposed","closeHandler","triggerMessageQueue","setImmediate","processMessageQueue","isRequest","requestMessage","reply","resultOrError","method","startTime","jsonrpc","toJson","traceSendingResponse","write","catch","replyError","data","params","stringifyTrace","logLSPMessage","traceReceivedRequest","element","requestHandler","handler","tokenKey","cancellationSource","handlerResult","numberOfParams","InvalidParams","isArray","parameterStructures","byName","byPosition","promise","then","InternalError","replySuccess","MethodNotFound","handleRequest","isNotification","notificationHandler","cancelId","traceReceivedNotification","handleNotification","isResponse","responseMessage","stringify","responsePromise","timerStart","traceReceivedResponse","reject","resolve","handleResponse","number","responseHandler","handleInvalidMessage","onClose","onError","toCancel","strategy","response","cancellationToken","add","queue","addMessageToQueue","lspMessage","isLSPMessage","timestamp","throwIfClosedOrDisposed","undefinedToNull","param","nullToUndefined","isNamedParam","computeSingleParam","auto","computeMessageParams","connection","messageParams","paramStart","paramEnd","notificationMessage","traceSendingNotification","onNotification","onProgress","_type","sendProgress","onUnhandledProgress","sendRequest","throwIfNotListening","last","disposable","Promise","traceSendingRequest","enableCancellation","MessageWriteError","onRequest","hasPendingResponse","_value","_tracer","sendNotificationOrTraceOptions","_sendNotification","_traceFormat","onUnhandledNotification","onDispose","PendingResponseRejected","listen","AlreadyListening","throwIfListening","inspect","verbose","create","_disposable","CallbackList","bucket","_callbacks","_contexts","remove","foundCallbackWithDifferentContext","splice","invoke","callbacks","contexts","isEmpty","_options","_event","listener","thisArgs","disposables","onFirstListenerAdd","_noop","onLastListenerRemove","array","stringArray","elem","_a","First","AsOld","Last","AsNew","_map","_head","_tail","_size","_state","clear","touch","previous","addItemLast","addItemFirst","removeItem","callbackfn","thisArg","current","iterator","done","entries","toStringTag","trimOld","newSize","currentSize","toJSON","fromJSON","limit","ratio","_limit","_ratio","min","checkTrim","round","encoding","_encoding","_chunks","_totalLength","append","chunk","toAppend","byteLength","tryReadHeaders","lowerCaseKeys","chunkIndex","offset","chunkBytesRead","row","buffer","_read","headers","header","tryReadBody","numberOfBytes","byteCount","emptyBuffer","asNative","allocNative","resultOffset","chunkPart","semaphore_1","ResolvedMessageReaderOptions","onPartialMessage","partialMessageEmitter","fireError","asError","fireClose","firePartialMessage","fromOptions","charset","contentDecoder","contentDecoders","contentTypeDecoder","contentTypeDecoders","decoder","applicationJson","readable","messageBuffer","_partialMessageTimeout","nextMessageLength","messageToken","readSemaphore","Semaphore","partialMessageTimeout","timeout","partialMessageTimer","onData","contentLength","setPartialMessageTimer","clearPartialMessageTimer","lock","bytes","decode","waitingTime","ResolvedMessageWriterOptions","count","contentTypeEncoder","encoder","contentEncoder","writable","errorCount","writeSemaphore","msg","encode","doWrite","handleError","AbstractMessageSignature","ParseError","InvalidRequest","jsonrpcReservedErrorRangeStart","serverErrorStart","MessageReadError","ConnectionInactive","ServerNotInitialized","UnknownErrorCode","jsonrpcReservedErrorRangeEnd","serverErrorEnd","_parameterStructures","_ral","install","ral","capacity","_capacity","_active","_waiting","thunk","runNext","active","doRunNext","err","CancellationState","Continue","buffers","request","SharedArrayBuffer","Int32Array","$cancellationData","_conn","Atomics","store","SharedArrayBufferCancellationToken","SharedArrayBufferCancellationTokenSource","__createBinding","k2","desc","getOwnPropertyDescriptor","__esModule","configurable","__exportStar","hasOwnProperty","createServerSocketTransport","createClientSocketTransport","createServerPipeTransport","createClientPipeTransport","generateRandomPipeName","StreamMessageWriter","StreamMessageReader","SocketMessageWriter","SocketMessageReader","PortMessageWriter","PortMessageReader","IPCMessageWriter","IPCMessageReader","ril_1","os","crypto_1","net_1","api_1","eventEmitter","on","off","send","port","postMessage","socket","stream","asReadableStream","asWritableStream","destroy","XDG_RUNTIME_DIR","safeIpcPathLengths","randomSuffix","randomBytes","tmpdir","pipeName","connectResolve","connected","_reject","server","createServer","removeListener","onConnected","createConnection","input","output","reader","read","addListener","isReadableStream","writer","isWritableStream","util_1","MessageBuffer","Buffer","TextDecoder","allocUnsafe","ReadableStreamWrapper","onEnd","WritableStreamWrapper","_ril","ms","clearTimeout","clearImmediate","setInterval","clearInterval","RIL","DiagnosticPullMode","vsdiag","diagnostic_1","CallHierarchyFeature","vscode_1","vscode_languageserver_protocol_1","features_1","CallHierarchyProvider","middleware","prepareCallHierarchy","document","code2ProtocolConverter","asTextDocumentPositionParams","CallHierarchyPrepareRequest","asCallHierarchyItems","handleFailedRequest","provideCallHierarchyIncomingCalls","asCallHierarchyItem","CallHierarchyIncomingCallsRequest","asCallHierarchyIncomingCalls","provideCallHierarchyOutgoingCalls","CallHierarchyOutgoingCallsRequest","asCallHierarchyOutgoingCalls","TextDocumentLanguageFeature","fillClientCapabilities","cap","capabilities","ensure","dynamicRegistration","initialize","documentSelector","getRegistration","callHierarchyProvider","register","registerOptions","registerLanguageProvider","_client","provider","languages","registerCallHierarchyProvider","asDocumentSelector","ProposedFeatures","BaseLanguageClient","MessageTransports","SuspendMode","State","CloseAction","ErrorAction","RevealOutputChannelOn","c2p","p2c","async_1","UUID","progressPart_1","notebook_1","configuration_1","textSynchronization_1","completion_1","hover_1","definition_1","signatureHelp_1","documentHighlight_1","documentSymbol_1","workspaceSymbol_1","reference_1","codeAction_1","codeLens_1","formatting_1","rename_1","documentLink_1","executeCommand_1","fileSystemWatcher_1","colorProvider_1","implementation_1","typeDefinition_1","workspaceFolder_1","foldingRange_1","declaration_1","selectionRange_1","progress_1","callHierarchy_1","semanticTokens_1","fileOperations_1","linkedEditingRange_1","typeHierarchy_1","inlineValue_1","inlayHint_1","ClientState","DefaultErrorHandler","maxRestartCount","restarts","_error","action","Shutdown","closed","Restart","DoNotRestart","clientOptions","_diagnosticQueue","_diagnosticQueueState","_features","_dynamicFeatures","workspaceEditLock","_id","_name","markdown","isTrusted","supportHtml","_clientOptions","synchronize","diagnosticCollectionName","outputChannelName","revealOutputChannelOn","stdioEncoding","initializationOptions","initializationFailedHandler","progressOnInitialization","errorHandler","createDefaultErrorHandler","connectionOptions","uriConverters","workspaceFolder","diagnosticPullOptions","onChange","onSave","notebookDocumentOptions","Initial","_ignoredRegistrations","_listeners","_notificationHandlers","_pendingNotificationHandlers","_notificationDisposables","_requestHandlers","_pendingRequestHandlers","_requestDisposables","_progressHandlers","_pendingProgressHandlers","_progressDisposables","_connection","_initializeResult","outputChannel","_outputChannel","_disposeOutputChannel","_traceOutputChannel","traceOutputChannel","_diagnostics","_pendingOpenNotifications","_pendingChangeSemaphore","_pendingChangeDelayer","Delayer","_fileEvents","_fileEventDelayer","_onStop","_telemetryEmitter","_stateChangeEmitter","_trace","messageOrDataObject","logTrace","logObjectTrace","_c2p","createConverter","code2Protocol","_p2c","protocol2Code","_syncedDocuments","registerBuiltinFeatures","onTelemetry","onDidChangeState","window","createOutputChannel","diagnostics","getPublicState","$state","oldState","newState","Starting","Running","Stopped","initializeResult","StartFailed","Stopping","$start","_didChangeTextDocumentFeature","syncKind","TextDocumentSyncKind","Full","sendPendingFullTextDocumentChanges","activeConnection","needsPendingFullTextDocumentSync","openNotification","DidOpenTextDocumentNotification","textDocument","handleWorkDoneProgress","realHandler","WorkDoneProgress","data2String","responseError","stack","showNotification","appendLine","toLocaleTimeString","Info","showNotificationMessage","MessageType","Warn","Warning","showErrorMessage","showWarningMessage","showInformationMessage","selection","show","needsStart","needsStop","isRunning","_disposed","_onStart","createOnStartPromise","createDiagnosticCollection","LogMessageNotification","ShowMessageNotification","ShowMessageRequest","messageFunc","actions","TelemetryEventNotification","ShowDocumentRequest","showDocument","asUri","external","success","openExternal","asRange","takeFocus","preserveFocus","showTextDocument","_resolve","refreshTrace","initOption","rootPath","workspaceFolders","fsPath","_clientGetRootPath","initParams","processId","clientInfo","appName","locale","getLocale","rootUri","computeClientCapabilities","fillInitializeParams","doInitialize","generateUuid","part","ProgressPart","workDoneToken","positionEncoding","PositionEncodingKind","UTF16","textDocumentSyncOptions","textDocumentSync","openClose","change","save","includeText","_capabilities","resolvedTextDocumentSync","PublishDiagnosticsNotification","handleDiagnostics","RegistrationRequest","handleRegistrationRequest","UnregistrationRequest","handleUnregistrationRequest","ApplyWorkspaceEditRequest","handleApplyWorkspaceEdit","InitializedNotification","hookFileEvents","hookConfigurationChanged","initializeFeatures","stop","retry","title","folders","workspace","folder","scheme","shutdown","mode","cleanUp","exit","race","finally","cleanUpChannel","feature","entry","reverse","_idleInterval","notifyFileEvent","didChangeWatchedFile","trigger","DidChangeWatchedFilesNotification","changes","workSpaceMiddleware","getPendingDocumentChanges","asChangeTextDocumentParams","DidChangeTextDocumentNotification","notificationSent","triggerPendingChangeDelivery","tokenSource","triggerDiagnosticQueue","workDiagnosticQueue","asDiagnostics","converted","setDiagnostics","language","transports","createMessageTransports","ConsoleLogger","createProtocolConnection","defaultTraceOptions","InitializeRequest","ShutdownRequest","ExitNotification","handleConnectionError","handleConnectionClosed","handled","onDidChangeConfiguration","config","getConfiguration","traceConfig","watchers","fileEvents","registerRaw","registerFeatures","features","registerFeature","DynamicFeature","registrationType","getFeature","hasDedicatedTextSynchronizationFeature","NotebookDocumentSyncRegistrationType","NotebookDocumentSyncFeature","handles","pendingFullTextDocumentChanges","ConfigurationFeature","DidOpenTextDocumentFeature","DidChangeTextDocumentFeature","onPendingChangeAdded","WillSaveFeature","WillSaveWaitUntilFeature","DidSaveTextDocumentFeature","DidCloseTextDocumentFeature","FileSystemWatcherFeature","CompletionItemFeature","HoverFeature","SignatureHelpFeature","DefinitionFeature","ReferencesFeature","DocumentHighlightFeature","DocumentSymbolFeature","WorkspaceSymbolFeature","CodeActionFeature","CodeLensFeature","DocumentFormattingFeature","DocumentRangeFormattingFeature","DocumentOnTypeFormattingFeature","RenameFeature","DocumentLinkFeature","ExecuteCommandFeature","SyncConfigurationFeature","TypeDefinitionFeature","ImplementationFeature","ColorProviderFeature","WorkspaceFoldersFeature","FoldingRangeFeature","DeclarationFeature","SelectionRangeFeature","ProgressFeature","SemanticTokensFeature","LinkedEditingFeature","DidCreateFilesFeature","DidRenameFilesFeature","DidDeleteFilesFeature","WillCreateFilesFeature","WillRenameFilesFeature","WillDeleteFilesFeature","TypeHierarchyFeature","InlineValueFeature","InlayHintsFeature","DiagnosticFeature","registerProposedFeatures","createAll","applyEdit","workspaceEdit","documentChanges","resourceOperations","ResourceOperationKind","Create","Rename","Delete","failureHandling","FailureHandlingKind","TextOnlyTransactional","normalizesLineEndings","changeAnnotationSupport","groupsOnLabel","relatedInformation","versionSupport","tagSupport","valueSet","DiagnosticTag","Unnecessary","Deprecated","codeDescriptionSupport","dataSupport","windowCapabilities","messageActionItem","additionalPropertiesSupport","support","generalCapabilities","staleRequestSupport","retryOnContentModified","RequestsToCancelOnContentModified","regularExpressions","engine","parser","positionEncodings","allowedTags","preInitialize","registration","registrations","unregistration","unregisterations","unregister","edit","asWorkspaceEdit","openTextDocuments","textDocuments","versionMismatch","TextDocumentEdit","changeUri","applied","asPromise","defaultValue","LSPErrorCodes","RequestCancelled","ServerCancelled","LSPCancellationError","CancellationError","ContentModified","CancellableResolveCalls","SemanticTokensRequest","SemanticTokensRangeRequest","SemanticTokensDeltaRequest","CompletionResolveRequest","CodeLensResolveRequest","CodeActionResolveRequest","InlayHintResolveRequest","DocumentLinkResolveRequest","WorkspaceSymbolResolveRequest","CodeActionRequest","isPreferredSupport","disabledSupport","resolveSupport","properties","codeActionLiteralSupport","codeActionKind","CodeActionKind","Empty","QuickFix","Refactor","RefactorExtract","RefactorInline","RefactorRewrite","Source","SourceOrganizeImports","honorsChangeAnnotations","getRegistrationOptions","codeActionProvider","selector","provideCodeActions","_provideCodeActions","asTextDocumentIdentifier","asCodeActionContext","asCodeActionResult","resolveCodeAction","resolveProvider","asCodeAction","registerCodeActionsProvider","codeActionKinds","providedCodeActionKinds","asCodeActionKinds","proto","protocolCompletionItem_1","protocolCodeLens_1","protocolDocumentLink_1","protocolCodeAction_1","protocolDiagnostic_1","protocolCallHierarchyItem_1","protocolTypeHierarchyItem_1","protocolWorkspaceSymbol_1","protocolInlayHint_1","InsertReplaceRange","inserting","replacing","uriConverter","_uriConverter","asTextDocumentItem","languageId","text","getText","asTextDocumentSaveReason","reason","TextDocumentSaveReason","Manual","AfterDelay","FocusOut","asCompletionTriggerKind","triggerKind","CompletionTriggerKind","TriggerCharacter","TriggerForIncompleteCompletions","Invoked","asSignatureHelpTriggerKind","SignatureHelpTriggerKind","Invoke","ContentChange","asParameterInformation","label","asSignatureInformation","parameters","asWorkerPosition","line","character","uinteger","MAX_VALUE","Location","asDiagnosticSeverity","DiagnosticSeverity","Information","Hint","asDiagnosticTag","tag","asRelatedInformation","location","asDiagnostic","Diagnostic","protocolDiagnostic","ProtocolDiagnostic","target","asDiagnosticCode","DiagnosticCode","hasDiagnosticCode","codeDescription","href","severity","tags","asDiagnosticTags","source","items","asCompletionItemTag","CompletionItemTag","asTextEdit","newText","asTextEdits","edits","asSymbolKind","SymbolKind","TypeParameter","Property","asSymbolTag","asSymbolTags","asCommand","Command","command","arguments","asInlayHintLabelPart","InlayHintLabelPart","tooltip","asTooltip","MarkupKind","Markdown","asVersionedTextDocumentIdentifier","asOpenTextDocumentParams","arg0","arg1","arg2","isTextDocument","contentChanges","isTextDocumentChangeEvent","rangeLength","asCloseTextDocumentParams","asSaveTextDocumentParams","includeContent","asWillSaveTextDocumentParams","asDidCreateFilesParams","files","fileUri","asDidRenameFilesParams","oldUri","newUri","asDidDeleteFilesParams","asWillCreateFilesParams","asWillRenameFilesParams","asWillDeleteFilesParams","asCompletionParams","triggerCharacter","asSignatureHelpParams","isRetrigger","activeSignatureHelp","signatures","activeSignature","activeParameter","asPositions","asCompletionItem","labelDetailsSupport","labelDetails","detail","description","protocolItem","original","documentation","documentationFormat","PlainText","asDocumentation","filterText","InsertTextFormat","textEdit","insertText","SnippetString","Snippet","insertTextFormat","fromEdit","InsertReplaceEdit","asCompletionTextEdit","fillPrimaryInsertText","originalItemKind","sortText","additionalTextEdits","commitCharacters","preselect","asCompletionItemTags","deprecated","insertTextMode","keepWhitespace","InsertTextMode","adjustIndentation","asReferenceParams","includeDeclaration","CodeAction","asCodeActionKind","isPreferred","disabled","only","CodeActionContext","CodeActionTriggerKind","Automatic","asCodeActionTriggerKind","asInlineValueContext","InlineValueContext","frameId","stoppedLocation","asCodeLens","CodeLens","asFormattingOptions","fileOptions","tabSize","insertSpaces","trimTrailingWhitespace","trimFinalNewlines","insertFinalNewline","asDocumentSymbolParams","asCodeLensParams","asDocumentLink","DocumentLink","asDocumentLinkParams","selectionRange","asTypeHierarchyItem","asInlayHint","InlayHint","textEdits","paddingLeft","paddingRight","asWorkspaceSymbol","hasRange","containerName","CodeLensRequest","refreshSupport","CodeLensRefreshRequest","getAllProviders","onDidChangeCodeLensEmitter","codeLensProvider","EventEmitter","onDidChangeCodeLenses","provideCodeLenses","asCodeLenses","resolveCodeLens","codeLens","registerCodeLensProvider","DocumentColorRequest","colorProvider","provideColorPresentations","color","requestParams","ColorPresentationRequest","asColorPresentations","provideDocumentColors","asColorInformations","registerColorProvider","SupportedCompletionItemKinds","CompletionItemKind","Method","Function","Constructor","Field","Variable","Class","Interface","Module","Unit","Value","Enum","Keyword","Color","File","Reference","Folder","EnumMember","Constant","Struct","Operator","CompletionRequest","completion","contextSupport","completionItem","snippetSupport","commitCharactersSupport","deprecatedSupport","preselectSupport","insertReplaceSupport","insertTextModeSupport","asIs","completionItemKind","completionList","itemDefaults","completionProvider","triggerCharacters","defaultCommitCharacters","allCommitCharacters","provideCompletionItems","asCompletionResult","provideCompletionItem","resolveCompletionItem","registerCompletionItemProvider","toJSONObject","obj","res","getState","configuration","ConfigurationRequest","resource","scopeUri","section","lastIndexOf","DidChangeConfigurationNotification","configurationSection","sections","affectsConfiguration","didChangeConfiguration","settings","extractSettingsInformation","ensurePath","DeclarationRequest","declarationSupport","linkSupport","declarationProvider","provideDeclaration","asDeclarationResult","registerProvider","registerDeclarationProvider","DefinitionRequest","definitionSupport","definitionProvider","provideDefinition","asDefinitionResult","registerDefinitionProvider","uuid_1","RequestStateKind","PullState","DocumentOrUri","DocumentDiagnosticReportKind","Tabs","_onOpen","_onClose","fillTabResources","tabGroups","onDidChangeTabs","opened","oldTabs","currentTabs","tab","toFire","onOpen","isActive","activeTextEditor","isVisible","getTabResources","strings","uris","seen","group","all","tabs","TabInputText","TabInputTextDiff","modified","asKey","DocumentPullStateTracker","documentPullStates","workspacePullStates","track","states","pulledVersion","resultId","update","unTrack","tracks","getResultId","getAllResultIds","DiagnosticRequestor","onDidChangeDiagnosticsEmitter","createProvider","openRequests","documentStates","workspaceErrorCounter","knows","forget","pull","cb","pullAsync","isUri","currentRequestState","documentState","report","afterState","provideDiagnostics","full","DiagnosticServerCancellationData","retriggerRequest","outDated","reschedule","forgetDocument","workspaceDiagnostics","pullWorkspace","pullWorkspaceAsync","workspaceTimeout","provideWorkspaceDiagnostics","workspaceCancellation","previousResultIds","onDidChangeDiagnostics","previousResultId","DocumentDiagnosticRequest","unChanged","resultIds","resultReporter","convertReport","convertPreviousResultIds","partialResultToken","WorkspaceDiagnosticRequest","partialResult","BackgroundScheduler","diagnosticRequestor","documents","endDocumentKey","endDocument","intervalHandle","DiagnosticFeatureProviderImpl","matches","TextDocumentFilter","matcher","matchResource","isActiveDocument","activeTextDocument","backgroundScheduler","addToBackgroundIfNeeded","interFileDependencies","onDidChangeActiveTextEditor","editor","oldActive","openFeature","onNotificationSent","uriStr","pulledTextDocuments","onTabs","changeFeature","onType","saveFeature","DidSaveTextDocumentNotification","closeFeature","DidCloseTextDocumentNotification","cleanUpDocument","capability","relatedDocumentSupport","DiagnosticRefreshRequest","diagnosticProvider","DocumentHighlightRequest","documentHighlightProvider","provideDocumentHighlights","_provideDocumentHighlights","asDocumentHighlights","registerDocumentHighlightProvider","DocumentLinkRequest","documentLinkCapabilities","tooltipSupport","documentLinkProvider","provideDocumentLinks","asDocumentLinks","resolveDocumentLink","link","registerDocumentLinkProvider","SupportedSymbolTags","SupportedSymbolKinds","Namespace","Package","Boolean","Key","Null","SymbolTag","DocumentSymbolRequest","symbolCapabilities","symbolKind","hierarchicalDocumentSymbolSupport","labelSupport","documentSymbolProvider","provideDocumentSymbols","_provideDocumentSymbols","DocumentSymbol","asDocumentSymbols","asSymbolInformations","metaData","registerDocumentSymbolProvider","_commands","ExecuteCommandRequest","executeCommandProvider","registerCommand","WorkspaceFeature","TextDocumentEventFeature","DynamicDocumentFeature","StaticFeature","selectors","getDocumentSelectors","createParams","selectorFilter","_middleware","_createParams","_textDocument","_selectorFilter","_selectors","_onNotificationSent","getStateInfo","_listener","doSend","getTextDocument","getProvider","_registrationType","_registrations","TextDocumentRegistrationOptions","StaticRegistrationOptions","hasId","WorkDoneProgressOptions","getProviders","FileOperationFeature","clientCapability","serverCapability","_clientCapability","_serverCapability","_filters","filterSize","fileOperations","filters","minimatchFilter","glob","asMinimatchOptions","getFileType","prop","fileMatches","fileType","FileType","FileOperationPatternKind","Directory","fs","stat","ignoreCase","NotificationFileOperationFeature","notificationType","accessUri","_notificationType","_accessUri","originalEvent","filteredEvent","CachingNotificationFileOperationFeature","_fsPathFileTypes","clearFileTypeCache","_willListener","onDidCreateFiles","DidCreateFilesNotification","didCreateFiles","onDidRenameFiles","DidRenameFilesNotification","onWillRenameFiles","willRename","waitUntil","cacheFileTypes","didRenameFiles","onDidDeleteFiles","DidDeleteFilesNotification","onWillDeleteFiles","willDelete","didDeleteFiles","RequestFileOperationFeature","requestType","_requestType","onWillCreateFiles","WillCreateFilesRequest","willCreateFiles","WillRenameFilesRequest","willRenameFiles","WillDeleteFilesRequest","willDeleteFiles","_notifyFileEvent","_watchers","relativePatternSupport","_documentSelector","watcher","globPattern","asGlobPattern","watchCreate","watchChange","watchDelete","WatchKind","Change","fileSystemWatcher","createFileSystemWatcher","hookListeners","fileSystemWatchers","listeners","onDidCreate","FileChangeType","Created","onDidChange","Changed","onDidDelete","Deleted","FoldingRangeRequest","rangeLimit","lineFoldingOnly","foldingRangeKind","FoldingRangeKind","Comment","Imports","Region","foldingRange","collapsedText","foldingRangeProvider","provideFoldingRanges","asFoldingRanges","registerFoldingRangeProvider","FileFormattingOptions","fromConfiguration","filesConfig","DocumentFormattingRequest","documentFormattingProvider","provideDocumentFormattingEdits","registerDocumentFormattingEditProvider","DocumentRangeFormattingRequest","documentRangeFormattingProvider","provideDocumentRangeFormattingEdits","registerDocumentRangeFormattingEditProvider","DocumentOnTypeFormattingRequest","documentOnTypeFormattingProvider","provideOnTypeFormattingEdits","ch","moreTriggerCharacter","registerOnTypeFormattingEditProvider","firstTriggerCharacter","HoverRequest","hoverCapability","contentFormat","hoverProvider","provideHover","asHover","registerHoverProvider","ImplementationRequest","implementationSupport","implementationProvider","provideImplementation","registerImplementationProvider","InlayHintRequest","inlayHint","InlayHintRefreshRequest","onDidChangeInlayHints","inlayHintProvider","provideInlayHints","viewPort","asInlayHints","resolveInlayHint","hint","registerInlayHintsProvider","InlineValueRequest","InlineValueRefreshRequest","onDidChangeInlineValues","inlineValueProvider","provideInlineValues","asInlineValues","registerInlineValuesProvider","LinkedEditingRangeRequest","linkedEditingRangeProvider","provideLinkedEditingRanges","provideLinkedEditing","asLinkedEditingRanges","provideLinkedEditingRange","registerLinkedEditingRangeProvider","vscode","Converter","$NotebookCell","$NotebookDocumentFilter","$NotebookDocumentSyncOptions","SyncInfo","asNotebookCells","cells","base","cell","asNotebookCell","asMetadata","metadata","deepCopy","NotebookCell","NotebookCellKind","Markup","Code","asNotebookCellKind","executionSummary","executionOrder","props","asVersionedNotebookDocumentIdentifier","notebookDocument","asNotebookDocument","NotebookDocument","notebookType","asTextContentChange","asNotebookDocumentChangeEvent","changedCells","structure","deleteCount","didOpen","didClose","textContent","equals","one","compareMetaData","endTime","equalsTiming","timing","equalsExecution","equalsMetadata","oneArray","otherArray","isObjectLiteral","oneKeys","otherKeys","sort","computeDiff","originalCells","modifiedCells","compareMetadata","originalLength","modifiedLength","startIndex","originalEndIndex","modifiedEndIndex","newCells","matchNotebook","asDocumentFilter","notebook","notebookSelector","NotebookDocumentSyncFeatureProvider","notebookSyncInfo","notebookDidOpen","onDidOpenNotebookDocument","notebookDocuments","onDidChangeNotebookDocument","didChangeNotebookDocument","onDidSaveNotebookDocument","didSave","onDidCloseNotebookDocument","getMatchingCells","didOpenNotebookCellTextDocument","syncInfo","cellMatches","cellIsSynced","matchingCells","doSendChange","doSendOpen","didChangeNotebookCellTextDocument","didCloseNotebookCellTextDocument","cellUri","findIndex","doSendClose","deleted","newEvent","doSendSave","syncedCells","getCells","nb","cellDocuments","DidOpenNotebookDocumentNotification","cellTextDocuments","notebooks","DidChangeNotebookDocumentNotification","didChange","DidSaveNotebookDocumentNotification","DidCloseNotebookDocumentNotification","matchingCellsSet","cellChanges","cellChange","oldCells","addedCells","removedCells","filtered","filterCells","cellSelector","cellLanguage","onDidOpenTextDocument","CellScheme","notebookCell","findNotebookDocumentAndCell","onDidChangeTextDocument","onDidCloseTextDocument","synchronization","executionSummarySupport","notebookDocumentSync","dedicatedChannel","activeParts","WorkDoneProgressCreateRequest","workDoneProgress","deleteHandler","_reported","_infinite","_lspProgressDisposable","begin","percentage","withProgress","ProgressLocation","Window","cancellable","progress","_progress","_cancellationToken","_tokenDisposable","WorkDoneProgressCancelNotification","delta","increment","ProtocolCallHierarchyItem","CallHierarchyItem","ProtocolCodeAction","ProtocolCodeLens","ProtocolCompletionItem","CompletionItem","ls","CodeBlock","trustMarkdown","diagnostic","CodeDescription","diagnosticCode","DiagnosticRelatedInformation","Position","asRanges","asMarkdownString","MarkdownString","appendText","defaultRange","defaultInsertTextMode","defaultInsertTextFormat","defaultData","CompletionItemLabelDetails","asCompletionItemLabel","insert","textEditText","asCompletionInsertText","itemKind","asTextEditsSync","TextEdit","asSignatureInformations","mapAsync","SignatureInformation","asParameterInformations","ParameterInformation","asLocationLink","targetUri","targetRange","originSelectionRange","targetSelectionRange","asLocationResult","LocationLink","links","asDocumentHighlight","DocumentHighlight","asDocumentHighlightKind","DocumentHighlightKind","Read","Write","asSymbolInformation","SymbolInformation","fillTags","asDocumentSymbol","children","child","includes","concat","kindMapping","asDiagnosticsSync","sharedMetadata","changeAnnotations","annotation","needsConfirmation","asWorkspaceEditEntryMetadata","WorkspaceEdit","CreateFile","createFile","annotationId","RenameFile","renameFile","DeleteFile","deleteFile","AnnotatedTextEdit","asColor","red","green","blue","alpha","asColorInformation","ci","ColorInformation","asColorPresentation","cp","presentation","ColorPresentation","asFoldingRangeKind","asFoldingRange","FoldingRange","startLine","endLine","asSelectionRange","SelectionRange","parent","asInlineValue","inlineValue","InlineValueText","InlineValueVariableLookup","variableName","caseSensitiveLookup","InlineValueEvaluatableExpression","expression","asCallHierarchyIncomingCall","CallHierarchyIncomingCall","fromRanges","asCallHierarchyOutgoingCall","CallHierarchyOutgoingCall","asSemanticTokensEdit","SemanticTokensEdit","Uint32Array","NotebookCellTextDocumentFilter","hover","Hover","appendCodeblock","appendMarkdown","asHoverContent","contents","rangeDefaults","editRange","getCompletionItemDefaults","CompletionList","isIncomplete","asSignatureHelp","SignatureHelp","asReferences","asCommands","foldingRanges","colorInformation","colorPresentations","asSelectionRanges","selectionRanges","inlineValues","asSemanticTokensLegend","asSemanticTokens","SemanticTokens","asSemanticTokensEdits","SemanticTokensEdits","LinkedEditingRanges","ranges","asRegularExpression","wordPattern","asTypeHierarchyItems","RelativePattern","URI","baseUri","WorkspaceFolder","getWorkspaceFolder","ProtocolDocumentLink","ProtocolInlayHint","ProtocolTypeHierarchyItem","TypeHierarchyItem","WorkspaceSymbol","locationOrUri","ReferencesRequest","referencesProvider","provideReferences","_providerReferences","registerReferenceProvider","RenameRequest","rename","prepareSupport","prepareSupportDefaultBehavior","PrepareSupportDefaultBehavior","Identifier","renameProvider","prepareProvider","provideRenameEdits","newName","prepareRename","PrepareRenameRequest","isDefaultBehavior","defaultBehavior","placeholder","registerRenameProvider","SelectionRangeRequest","selectionRangeProvider","provideSelectionRanges","positions","registerSelectionRangeProvider","SemanticTokensRegistrationType","tokenTypes","SemanticTokenTypes","namespace","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","function","macro","keyword","modifier","decorator","tokenModifiers","SemanticTokenModifiers","declaration","definition","readonly","abstract","modification","defaultLibrary","formats","TokenFormat","Relative","requests","multilineTokenSupport","overlappingTokenSupport","serverCancelSupport","augmentsSyntaxTokens","SemanticTokensRefreshRequest","onDidChangeSemanticTokensEmitter","semanticTokensProvider","fullProvider","hasEditProvider","documentProvider","onDidChangeSemanticTokens","provideDocumentSemanticTokens","provideDocumentSemanticTokensEdits","rangeProvider","provideDocumentRangeSemanticTokens","legend","registerDocumentSemanticTokensProvider","registerDocumentRangeSemanticTokensProvider","SignatureHelpRequest","signatureInformation","parameterInformation","labelOffsetSupport","activeParameterSupport","signatureHelpProvider","provideSignatureHelp","providerSignatureHelp","retriggerCharacters","registerSignatureHelpProvider","syncedDocuments","textDocumentFilter","openDocuments","pendingTextDocumentChanges","_pendingTextDocumentChanges","_changeData","_onPendingChangeAdded","_syncKind","updateSyncKind","promises","changeData","Incremental","eventUri","excludes","onWillSaveTextDocument","WillSaveTextDocumentNotification","willSave","willSaveEvent","WillSaveTextDocumentWaitUntilRequest","willSaveWaitUntil","vEdits","onDidSaveTextDocument","_includeText","saveOptions","TypeDefinitionRequest","typeDefinitionSupport","typeDefinitionProvider","provideTypeDefinition","registerTypeDefinitionProvider","TypeHierarchyProvider","prepareTypeHierarchy","TypeHierarchyPrepareRequest","provideTypeHierarchySupertypes","TypeHierarchySupertypesRequest","provideTypeHierarchySubtypes","TypeHierarchySubtypesRequest","typeHierarchyProvider","registerTypeHierarchyProvider","clearTestMode","setTestMode","defaultDelay","completionPromise","onSuccess","task","delay","cancelTimeout","forceDelivery","isTriggered","$test","Timer","yieldAfter","counter","total","counterInterval","shouldYield","timeTaken","timeLeft","convertBatch","yieldCallback","runBatch","thenable","typedArray","check","resolved","isUUID","v4","ValueUUID","asHex","V4UUID","_randomHex","_oneOf","_timeHighBits","floor","_chars","_UUIDPattern","arrayDiff","access","DidChangeWorkspaceFoldersNotification","initializeWithFolders","asProtocol","currentWorkspaceFolders","_initialFolders","WorkspaceFoldersRequest","sendInitialEvent","removed","added","doSendEvent","addedFolders","removedFolders","onDidChangeWorkspaceFolders","didChangeWorkspaceFolders","WorkspaceSymbolRequest","workspaceSymbolProvider","provideWorkspaceSymbols","query","resolveWorkspaceSymbol","registerWorkspaceSymbolProvider","SettingMonitor","LanguageClient","TransportKind","client_1","processes_1","node_1","semverParse","semverSatisfies","REQUIRED_VSCODE_VERSION","Transport","Executable","NodeModule","StreamInfo","ChildProcessInfo","isSocket","detached","arg3","arg4","arg5","serverOptions","forceDebug","_serverOptions","_forceDebug","_isInDebugMode","checkVersion","codeVersion","isInDebugMode","_serverProcess","toCheck","_isDetached","checkProcessDied","childProcess","pid","kill","terminate","getEnvironment","fork","debugStartWith","debugEquals","assertStdio","stdin","stdout","stderr","json","runDebug","run","execArgv","arg","startsWith","startedInDebugMode","_getServerWorkingDir","serverWorkingDir","transport","stdio","runtime","ipc","pipe","cwd","silent","protocol","execOptions","_getRuntimePath","serverProcess","spawn","handleChildProcessStartError","serverWorkingDirectory","isAbsolute","mainRootPath","_mainGetRootPath","existsSync","lstat","stats","isDirectory","_setting","primary","rest","enabled","path_1","isMacintosh","isLinux","execFileSync","cmd","__dirname","spawnSync","lspReservedErrorRangeStart","RequestFailed","lspReservedErrorRangeEnd","vscode_jsonrpc_1","ProtocolNotificationType","ProtocolNotificationType0","ProtocolRequestType","ProtocolRequestType0","RegistrationType","MessageDirection","messageDirection","clientToServer","serverToClient","Unchanged","TextDocumentContentChangeEvent","InitializeErrorCodes","DocumentSelector","NotebookDocumentFilter","MonikerRequest","MonikerKind","UniquenessLevel","NotebookCellArrayChange","ExecutionSummary","vscode_languageserver_types_1","protocol_implementation_1","protocol_typeDefinition_1","protocol_workspaceFolder_1","protocol_configuration_1","protocol_colorProvider_1","protocol_foldingRange_1","protocol_declaration_1","protocol_selectionRange_1","protocol_progress_1","protocol_callHierarchy_1","protocol_semanticTokens_1","protocol_showDocument_1","protocol_linkedEditingRange_1","protocol_fileOperations_1","protocol_moniker_1","protocol_typeHierarchy_1","protocol_inlineValue_1","protocol_inlayHint_1","protocol_diagnostic_1","protocol_notebook_1","objectLiteral","Abort","Transactional","Undo","UTF8","UTF32","hasWorkDoneProgress","unknownProtocolVersion","Log","isIncremental","isFull","project","global","$import","$export","local","DocumentUri","two","integer","registrationMethod","ChangeAnnotation","ChangeAnnotationIdentifier","MIN_VALUE","three","four","numberRange","startCharacter","endCharacter","defined","_i","OptionalVersionedTextDocumentIdentifier","overwrite","ignoreIfExists","recursive","ignoreIfNotExists","TextDocumentIdentifier","VersionedTextDocumentIdentifier","TextDocumentItem","MarkupContent","MarkedString","FormattingOptions","InlayHintKind","TextEditChangeImpl","assertChangeAnnotations","manage","ChangeAnnotations","annotations","_annotations","_counter","idOrAnnotation","nextId","WorkspaceChange","_this","_textEditChanges","_workspaceEdit","_changeAnnotations","textEditChange","initDocumentChanges","getTextEditChange","textDocumentEdit","initChanges","optionsOrAnnotation","operation","fromPlainText","plainText","SourceFixAll","kindOrCommandOrEdit","checkKind","Type","Parameter","TextDocument","EOL","mergeSort","leftIdx","rightIdx","content","FullTextDocument","lineCount","positionAt","offsetAt","applyEdits","sortedEdits","lastModifiedOffset","startOffset","endOffset","_uri","_languageId","_version","_content","_lineOffsets","getLineOffsets","lineOffsets","isLineStart","low","high","mid","lineOffset","nextLineOffset","Node","pushNode","forEachReverse","getReverse","mapReverse","initial","acc","reduceReverse","toArrayReverse","sliceReverse","nodes","inserted","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","subscriptions","restart","restartLanguageClient","showReferences","executablePath","enableInlayHints","enableSemanticTokens","enableHover","smartCompletion","checkOnType","startLanguageClient"],"sourceRoot":""} diff --git a/extension/extension.js b/extension/extension.js deleted file mode 100644 index 8fc160f..0000000 --- a/extension/extension.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -const vscode = require("vscode"); -const languageclient = require("vscode-languageclient"); - -let client; - -function activate(context) { - try { - const serverOptions = { - command: "pylyzer", - args: ["--server", "--", "--disable", "inlayHints"] - }; - const clientOptions = { - documentSelector: [ - { - scheme: "file", - language: "python", - } - ], - }; - client = new languageclient.LanguageClient("pylyzer", serverOptions, clientOptions); - context.subscriptions.push(client.start()); - } catch (e) { - vscode.window.showErrorMessage("failed to start pylyzer."); - } -} - -function deactivate() { - if (client) return client.stop(); -} - -module.exports = { activate, deactivate } diff --git a/extension/package-lock.json b/extension/package-lock.json index daf26f5..04b5526 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -10,15 +10,585 @@ "dependencies": { "vscode-languageclient": "^8.0.2" }, + "devDependencies": { + "@types/glob": "^8.0.0", + "@types/mocha": "^10.0.1", + "@types/node": "18.x", + "@types/vscode": "^1.70.0", + "@vscode/test-electron": "^2.2.1", + "glob": "^8.0.3", + "mocha": "^10.2.0", + "rome": "^10.0.1", + "ts-loader": "^9.4.2", + "typescript": "^4.9.4", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.1" + }, "engines": { "vscode": "^1.70.0" } }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@rometools/cli-darwin-arm64": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@rometools/cli-darwin-arm64/-/cli-darwin-arm64-10.0.1.tgz", + "integrity": "sha512-MwQjk3uhZrCu6LgIwJHREAsVt/mUQTGv7p8iosfaF8lCIxMVjyS+akbF/QcBufyW5sFtHYNWUEe/uKPHK4E//A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rometools/cli-darwin-x64": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@rometools/cli-darwin-x64/-/cli-darwin-x64-10.0.1.tgz", + "integrity": "sha512-n010Wc/z9L8wRkRnR5boMhdWgDVGrTG/i7zL8u/3+F5aSUgLCywf9F/b3ex74tCJJfcwBLlhaAqAVQX6U1bIkA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rometools/cli-linux-arm64": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@rometools/cli-linux-arm64/-/cli-linux-arm64-10.0.1.tgz", + "integrity": "sha512-JljZsnud1KCfe36VNsVh/LrYdAzgbKbcsCTzeCjW9ROkMyNj8pmQ/gIUFxZ+PyhMFgowHIDGihoNf4m+pgpxkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rometools/cli-linux-x64": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@rometools/cli-linux-x64/-/cli-linux-x64-10.0.1.tgz", + "integrity": "sha512-jXIqd9iDyZUexk63CRfAXDA4zNDUHpErUmCejjGab3dhDt1KA40fDqKb+kxZpAhY3tQoWNSNQyo750zX5NawLw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rometools/cli-win32-arm64": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@rometools/cli-win32-arm64/-/cli-win32-arm64-10.0.1.tgz", + "integrity": "sha512-G/toRrKPhhi7SMYMyROq/E2c8/4xRX/67vFhVihuMvDDzhanIb99hEt5MMbM4HbYK1nnZBPyLN6LxVsxm9M9hA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rometools/cli-win32-x64": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@rometools/cli-win32-x64/-/cli-win32-x64-10.0.1.tgz", + "integrity": "sha512-y299+VGoBufZntZj0Xz7w9DODU+6E5giXStfBDoa0fspXGNkYyYfD+HC6j9gUv4zpMZJ607XVvVHjpfwM/3ftA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/eslint": { + "version": "8.21.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.2.tgz", + "integrity": "sha512-EMpxUyystd3uZVByZap1DACsMXvb82ypQnGn89e1Y0a+LYu3JJscUd/gqhRsVFDkaD2MIiWo0MT8EfXr3DGRKw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.2.tgz", + "integrity": "sha512-sDPHm2wfx2QhrMDK0pOt2J4KLJMAcerqWNvnED0itPRJWvI+bK+uNHzcH1dFsBlf7G3u8tqXmRF3wkvL9yUwMw==", + "dev": true + }, + "node_modules/@types/vscode": { + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.76.0.tgz", + "integrity": "sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==", + "dev": true + }, + "node_modules/@vscode/test-electron": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.0.tgz", + "integrity": "sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", + "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", + "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", + "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -27,6 +597,853 @@ "balanced-match": "^1.0.0" } }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001465", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001465.tgz", + "integrity": "sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz", + "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -38,6 +1455,46 @@ "node": ">=10" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -49,6 +1506,469 @@ "node": ">=10" } }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rome": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rome/-/rome-10.0.1.tgz", + "integrity": "sha512-RfaDa+cSustBsjX6bj3fWqEhoNxXrK1uNgKHpkCHAqp20QMJXnCRtbokhirNMe0utyGI9GTO/sDoK7hJP7O8Bw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "rome": "bin/rome" + }, + "engines": { + "node": ">=14.*" + }, + "optionalDependencies": { + "@rometools/cli-darwin-arm64": "10.0.1", + "@rometools/cli-darwin-x64": "10.0.1", + "@rometools/cli-linux-arm64": "10.0.1", + "@rometools/cli-linux-x64": "10.0.1", + "@rometools/cli-win32-arm64": "10.0.1", + "@rometools/cli-win32-x64": "10.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -63,6 +1983,302 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", + "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", @@ -98,10 +2314,259 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.76.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", + "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", + "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.0.1", + "@webpack-cli/info": "^2.0.1", + "@webpack-cli/serve": "^2.0.1", + "colorette": "^2.0.14", + "commander": "^9.4.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/extension/package.json b/extension/package.json index 01ae48e..5d9567a 100644 --- a/extension/package.json +++ b/extension/package.json @@ -3,7 +3,7 @@ "displayName": "pylyzer", "description": "A fast Python static code analyzer & language server for VSCode", "publisher": "pylyzer", - "version": "0.1.1", + "version": "0.1.2", "engines": { "vscode": "^1.70.0" }, @@ -15,11 +15,18 @@ "type": "git", "url": "https://github.com/mtshiba/pylyzer.git" }, - "main": "./extension.js", + "main": "./dist/extension.js", "activationEvents": [ "onLanguage:python" ], "contributes": { + "commands": [ + { + "title": "Restart the pylyzer language server", + "category": "python", + "command": "pylyzer.restartLanguageServer" + } + ], "languages": [ { "id": "python", @@ -31,9 +38,65 @@ ".py" ] } - ] + ], + "configuration": { + "type": "object", + "title": "pylyzer", + "properties": { + "pylyzer.inlayHints": { + "type": "boolean", + "default": false, + "markdownDescription": "Enable inlay hints (this feature is unstable)" + }, + "pylyzer.smartCompletion": { + "type": "boolean", + "default": true, + "markdownDescription": "Enable smart completion (see [ELS features](https://github.com/erg-lang/erg/blob/main/crates/els/doc/features.md))" + }, + "pylyzer.checkOnType": { + "type": "boolean", + "default": false, + "markdownDescription": "Perform checking each time any character is entered. This improves the accuracy of completion, etc., but may slow down the execution" + } + } + } + }, + "scripts": { + "vscode:publish": "vsce publish", + "vscode:prepublish": "npm run package", + "vscode:package": "vsce package", + "compile": "webpack", + "watch": "webpack --watch", + "package": "webpack --mode production --devtool hidden-source-map", + "compile-tests": "tsc -p . --outDir out", + "watch-tests": "tsc -p . -w --outDir out", + "pretest": "npm run compile-tests && npm run compile && npm run lint", + "test": "node ./out/test/runTest.js", + "type-check": "tsc --noEmit", + "lint": "rome check .", + "format": "rome format .", + "lint:fix": "rome check --apply .", + "lint:fix-suggested": "rome check --apply-suggested .", + "format:fix": "rome format --write ." }, "dependencies": { "vscode-languageclient": "^8.0.2" + }, + "devDependencies": { + "@types/glob": "^8.0.0", + "@types/mocha": "^10.0.1", + "@types/node": "18.x", + "@types/vscode": "^1.70.0", + "@vscode/test-electron": "^2.2.1", + "glob": "^8.0.3", + "mocha": "^10.2.0", + "rome": "^10.0.1", + "ts-loader": "^9.4.2", + "typescript": "^4.9.4", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.1" + }, + "lint-staged": { + "*": "rome format --write" } } diff --git a/extension/rome.json b/extension/rome.json new file mode 100644 index 0000000..8bcf6a9 --- /dev/null +++ b/extension/rome.json @@ -0,0 +1,11 @@ +{ + "linter": { + "rules": { + "recommended": true + }, + "ignore": ["/dist/", "/out/", "/.vscode-test/"] + }, + "formatter": { + "ignore": ["/dist/", "/out/", "/.vscode-test/"] + } +} diff --git a/extension/src/commands.ts b/extension/src/commands.ts new file mode 100644 index 0000000..efc7194 --- /dev/null +++ b/extension/src/commands.ts @@ -0,0 +1,19 @@ +// copied and modified from https://github.com/rust-lang/rust-analyzer/blob/27239fbb58a115915ffc1ce65ededc951eb00fd2/editors/code/src/commands.ts +import { LanguageClient, Location, Position } from 'vscode-languageclient/node'; +import { Uri, commands } from 'vscode'; + +export async function showReferences( + client: LanguageClient | undefined, + uri: string, + position: Position, + locations: Location[] +) { + if (client) { + await commands.executeCommand( + "editor.action.showReferences", + Uri.parse(uri), + client.protocol2CodeConverter.asPosition(position), + locations.map(client.protocol2CodeConverter.asLocation) + ); + } +} diff --git a/extension/src/extension.ts b/extension/src/extension.ts new file mode 100644 index 0000000..ad60318 --- /dev/null +++ b/extension/src/extension.ts @@ -0,0 +1,97 @@ +import { ExtensionContext, commands, window, workspace } from "vscode"; +import { + LanguageClient, + LanguageClientOptions, + ServerOptions, +} from "vscode-languageclient/node"; +import { showReferences } from "./commands"; + +let client: LanguageClient | undefined; + +async function startLanguageClient(context: ExtensionContext) { + try { + const executablePath = (() => { + let executablePath = workspace + .getConfiguration("pylyzer") + .get("executablePath", ""); + return executablePath === "" ? "pylyzer" : executablePath; + })(); + const enableInlayHints = workspace.getConfiguration("pylyzer").get("inlayHints", false); + const enableSemanticTokens = workspace.getConfiguration("pylyzer").get("semanticTokens", true); + const enableHover = workspace.getConfiguration("pylyzer").get("hover", true); + const smartCompletion = workspace.getConfiguration("pylyzer").get("smartCompletion", true); + /* optional features */ + const checkOnType = workspace.getConfiguration("pylyzer").get("checkOnType", false); + let args = ["--server"]; + if (!(enableInlayHints && enableSemanticTokens && enableHover && smartCompletion) || checkOnType) { + args.push("--"); + } + if (!enableInlayHints) { + args.push("--disable"); + args.push("inlayHints"); + } + if (!enableSemanticTokens) { + args.push("--disable"); + args.push("semanticTokens"); + } + if (!enableHover) { + args.push("--disable"); + args.push("hover"); + } + if (!smartCompletion) { + args.push("--disable"); + args.push("smartCompletion"); + } + if (checkOnType) { + args.push("--enable"); + args.push("checkOnType"); + } + let serverOptions: ServerOptions = { + command: executablePath, + args, + }; + const clientOptions: LanguageClientOptions = { + documentSelector: [ + { + scheme: "file", + language: "python", + }, + ], + }; + client = new LanguageClient("pylyzer", serverOptions, clientOptions); + await client.start(); + } catch (e) { + window.showErrorMessage( + "Failed to start the pylyzer language server. Please make sure you have pylyzer installed.", + ); + } +} + +async function restartLanguageClient() { + try { + if (client === undefined) { + throw new Error(); + } + await client.restart(); + } catch (e) { + window.showErrorMessage("Failed to restart the pylyzer language server."); + } +} + +export async function activate(context: ExtensionContext) { + context.subscriptions.push( + commands.registerCommand("pylyzer.restartLanguageServer", () => restartLanguageClient()) + ); + context.subscriptions.push( + commands.registerCommand("pylyzer.showReferences", async (uri, position, locations) => { + await showReferences(client, uri, position, locations) + }) + ); + await startLanguageClient(context); +} + +export function deactivate() { + if (client) { + return client.stop(); + } +} diff --git a/extension/src/test/runTest.ts b/extension/src/test/runTest.ts new file mode 100644 index 0000000..f6867cc --- /dev/null +++ b/extension/src/test/runTest.ts @@ -0,0 +1,23 @@ +import * as path from "path"; + +import { runTests } from "@vscode/test-electron"; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, "../../"); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, "./suite/index"); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error("Failed to run tests"); + process.exit(1); + } +} + +main(); diff --git a/extension/src/test/suite/extension.test.ts b/extension/src/test/suite/extension.test.ts new file mode 100644 index 0000000..8857ba1 --- /dev/null +++ b/extension/src/test/suite/extension.test.ts @@ -0,0 +1,15 @@ +import * as assert from "assert"; + +// You can import and use all API from the 'vscode' module +// as well as import your extension to test it +import * as vscode from "vscode"; +// import * as myExtension from '../../extension'; + +suite("Extension Test Suite", () => { + vscode.window.showInformationMessage("Start all tests."); + + test("Sample test", () => { + assert.strictEqual(-1, [1, 2, 3].indexOf(5)); + assert.strictEqual(-1, [1, 2, 3].indexOf(0)); + }); +}); diff --git a/extension/src/test/suite/index.ts b/extension/src/test/suite/index.ts new file mode 100644 index 0000000..44c0027 --- /dev/null +++ b/extension/src/test/suite/index.ts @@ -0,0 +1,38 @@ +import * as path from "path"; +import Mocha from "mocha"; +import glob from "glob"; + +export function run(): Promise { + // Create the mocha test + const mocha = new Mocha({ + ui: "tdd", + color: true, + }); + + const testsRoot = path.resolve(__dirname, ".."); + + return new Promise((c, e) => { + glob("**/**.test.js", { cwd: testsRoot }, (err, files) => { + if (err) { + return e(err); + } + + // Add files to the test suite + files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run((failures) => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + console.error(err); + e(err); + } + }); + }); +} diff --git a/extension/tsconfig.json b/extension/tsconfig.json new file mode 100644 index 0000000..6c98958 --- /dev/null +++ b/extension/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES2020", + "moduleResolution": "node", + "lib": ["ES2020"], + "sourceMap": true, + "esModuleInterop": true, + "rootDir": "src", + "strict": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + }, + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/extension/webpack.config.js b/extension/webpack.config.js new file mode 100644 index 0000000..6afa5b9 --- /dev/null +++ b/extension/webpack.config.js @@ -0,0 +1,48 @@ +//@ts-check + +"use strict"; + +const path = require("path"); + +//@ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +/** @type WebpackConfig */ +const extensionConfig = { + target: "node", // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + mode: "none", // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + + entry: "./src/extension.ts", // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { + // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, "dist"), + filename: "extension.js", + libraryTarget: "commonjs2", + }, + externals: { + vscode: "commonjs vscode", // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // modules added here also need to be added in the .vscodeignore file + }, + resolve: { + // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader + extensions: [".ts", ".js"], + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: "ts-loader", + }, + ], + }, + ], + }, + devtool: "nosources-source-map", + infrastructureLogging: { + level: "log", // enables logging required for problem matchers + }, +}; +module.exports = [extensionConfig];