devsense-php-mcp 1.0.19264
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/index.js +62 -0
- package/package.json +30 -0
- package/update.ps1 +8 -0
package/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Devsense' PHP MCP Server
|
|
2
|
+
|
|
3
|
+
Standalone MCP Server built on `devsense-php-ls`, the DEVSENSE PHP Language Server.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install `devsense-php-mcp` package as a global command line tool:
|
|
8
|
+
|
|
9
|
+
> npm install -g devsense-php-mcp
|
|
10
|
+
|
|
11
|
+
## Sample usage
|
|
12
|
+
|
|
13
|
+
> devsense-php-mcp -p 9101 .
|
|
14
|
+
|
|
15
|
+
## Available options
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Usage: devsense-php-mcp [options] [path...]
|
|
19
|
+
|
|
20
|
+
Arguments:
|
|
21
|
+
path Files or directories to be indexed. `**/*.php` by default.
|
|
22
|
+
|
|
23
|
+
Options:
|
|
24
|
+
-p, --mcp-port Specify the MCP server port number.
|
|
25
|
+
-r, --root Root PHP workspace directory. Current directory by default.
|
|
26
|
+
-h, --help Display help for command
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Background
|
|
30
|
+
|
|
31
|
+
The tool uses [PHP Tools](https://www.devsense.com/)' language server which provides MCP Server functionality.
|
|
32
|
+
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
"use strict";var Fi=Object.create;var mn=Object.defineProperty;var Wi=Object.getOwnPropertyDescriptor;var Bi=Object.getOwnPropertyNames;var Ui=Object.getPrototypeOf,zi=Object.prototype.hasOwnProperty;var x=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var Ji=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Bi(e))!zi.call(i,n)&&n!==t&&mn(i,n,{get:()=>e[n],enumerable:!(r=Wi(e,n))||r.enumerable});return i};var _e=(i,e,t)=>(t=i!=null?Fi(Ui(i)):{},Ji(e||!i||!i.__esModule?mn(t,"default",{value:i,enumerable:!0}):t,i));var Re=x(wt=>{var Ie=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},vt=class extends Ie{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};wt.CommanderError=Ie;wt.InvalidArgumentError=vt});var Ve=x(Ot=>{var{InvalidArgumentError:Gi}=Re(),Ct=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new Gi(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Ki(i){let e=i.name()+(i.variadic===!0?"...":"");return i.required?"<"+e+">":"["+e+"]"}Ot.Argument=Ct;Ot.humanReadableArgName=Ki});var xt=x(Et=>{var{humanReadableArgName:Qi}=Ve(),St=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter(n=>!n._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((n,s)=>n.name().localeCompare(s.name())),t}compareOptions(e,t){let r=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),r=e._getHelpOption();if(r&&!r.hidden){let n=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!n&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!n&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let n=r.options.filter(s=>!s.hidden);t.push(...n)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>Qi(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(n)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,n)=>Math.max(r,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(n)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let n=e.parent;n;n=n.parent)r=n.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),n=t.helpWidth??80;function s(_,A){return t.formatItem(_,r,A,t)}let a=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],d=t.commandDescription(e);d.length>0&&(a=a.concat([t.boxWrap(t.styleCommandDescription(d),n),""]));let l=t.visibleArguments(e).map(_=>s(t.styleArgumentTerm(t.argumentTerm(_)),t.styleArgumentDescription(t.argumentDescription(_))));l.length>0&&(a=a.concat([t.styleTitle("Arguments:"),...l,""]));let p=t.visibleOptions(e).map(_=>s(t.styleOptionTerm(t.optionTerm(_)),t.styleOptionDescription(t.optionDescription(_))));if(p.length>0&&(a=a.concat([t.styleTitle("Options:"),...p,""])),t.showGlobalOptions){let _=t.visibleGlobalOptions(e).map(A=>s(t.styleOptionTerm(t.optionTerm(A)),t.styleOptionDescription(t.optionDescription(A))));_.length>0&&(a=a.concat([t.styleTitle("Global Options:"),..._,""]))}let f=t.visibleCommands(e).map(_=>s(t.styleSubcommandTerm(t.subcommandTerm(_)),t.styleSubcommandDescription(t.subcommandDescription(_))));return f.length>0&&(a=a.concat([t.styleTitle("Commands:"),...f,""])),a.join(`
|
|
3
|
+
`)}displayWidth(e){return yn(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t==="[command]"?this.styleSubcommandText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleCommandText(t)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleSubcommandText(t)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,t,r,n){let a=" ".repeat(2);if(!r)return a+e;let d=e.padEnd(t+e.length-n.displayWidth(e)),l=2,f=(this.helpWidth??80)-t-l-2,_;return f<this.minWidthToWrap||n.preformatted(r)?_=r:_=n.boxWrap(r,f).replace(/\n/g,`
|
|
4
|
+
`+" ".repeat(t+l)),a+d+" ".repeat(l)+_.replace(/\n/g,`
|
|
5
|
+
${a}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let r=e.split(/\r\n|\n/),n=/[\s]*[^\s]+/g,s=[];return r.forEach(a=>{let d=a.match(n);if(d===null){s.push("");return}let l=[d.shift()],p=this.displayWidth(l[0]);d.forEach(f=>{let _=this.displayWidth(f);if(p+_<=t){l.push(f),p+=_;return}s.push(l.join(""));let A=f.trimStart();l=[A],p=this.displayWidth(A)}),s.push(l.join(""))}),s.join(`
|
|
6
|
+
`)}};function yn(i){let e=/\x1b\[\d*(;\d*)*m/g;return i.replace(e,"")}Et.Help=St;Et.stripColor=yn});var Rt=x(kt=>{var{InvalidArgumentError:Yi}=Re(),Tt=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=Xi(e);this.short=r.shortFlag,this.long=r.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new Yi(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?bn(this.name().replace(/^no-/,"")):bn(this.name())}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Pt=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let n=this.negativeOptions.get(r).presetArg,s=n!==void 0?n:!1;return t.negate===(s===e)}};function bn(i){return i.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Xi(i){let e,t,r=/^-[^-]$/,n=/^--[^-]/,s=i.split(/[ |,]+/).concat("guard");if(r.test(s[0])&&(e=s.shift()),n.test(s[0])&&(t=s.shift()),!e&&r.test(s[0])&&(e=s.shift()),!e&&n.test(s[0])&&(e=t,t=s.shift()),s[0].startsWith("-")){let a=s[0],d=`option creation failed due to '${a}' in option flags '${i}'`;throw/^-[^-][^-]/.test(a)?new Error(`${d}
|
|
7
|
+
- a short flag is a single dash and a single character
|
|
8
|
+
- either use a single dash and a single character (for a short flag)
|
|
9
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):r.test(a)?new Error(`${d}
|
|
10
|
+
- too many short flags`):n.test(a)?new Error(`${d}
|
|
11
|
+
- too many long flags`):new Error(`${d}
|
|
12
|
+
- unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:e,longFlag:t}}kt.Option=Tt;kt.DualOptions=Pt});var wn=x(vn=>{function Zi(i,e){if(Math.abs(i.length-e.length)>3)return Math.max(i.length,e.length);let t=[];for(let r=0;r<=i.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let n=1;n<=i.length;n++){let s=1;i[n-1]===e[r-1]?s=0:s=1,t[n][r]=Math.min(t[n-1][r]+1,t[n][r-1]+1,t[n-1][r-1]+s),n>1&&r>1&&i[n-1]===e[r-2]&&i[n-2]===e[r-1]&&(t[n][r]=Math.min(t[n][r],t[n-2][r-2]+1))}return t[i.length][e.length]}function es(i,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=i.startsWith("--");t&&(i=i.slice(2),e=e.map(a=>a.slice(2)));let r=[],n=3,s=.4;return e.forEach(a=>{if(a.length<=1)return;let d=Zi(i,a),l=Math.max(i.length,a.length);(l-d)/l>s&&(d<n?(n=d,r=[a]):d===n&&r.push(a))}),r.sort((a,d)=>a.localeCompare(d)),t&&(r=r.map(a=>`--${a}`)),r.length>1?`
|
|
13
|
+
(Did you mean one of ${r.join(", ")}?)`:r.length===1?`
|
|
14
|
+
(Did you mean ${r[0]}?)`:""}vn.suggestSimilar=es});var En=x($t=>{var ts=require("node:events").EventEmitter,At=require("node:child_process"),X=require("node:path"),He=require("node:fs"),C=require("node:process"),{Argument:rs,humanReadableArgName:ns}=Ve(),{CommanderError:Nt}=Re(),{Help:is,stripColor:ss}=xt(),{Option:Cn,DualOptions:os}=Rt(),{suggestSimilar:On}=wn(),Mt=class i extends ts{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:t=>C.stdout.write(t),writeErr:t=>C.stderr.write(t),outputError:(t,r)=>r(t),getOutHelpWidth:()=>C.stdout.isTTY?C.stdout.columns:void 0,getErrHelpWidth:()=>C.stderr.isTTY?C.stderr.columns:void 0,getOutHasColors:()=>Dt()??(C.stdout.isTTY&&C.stdout.hasColors?.()),getErrHasColors:()=>Dt()??(C.stderr.isTTY&&C.stderr.hasColors?.()),stripColor:t=>ss(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,r){let n=t,s=r;typeof n=="object"&&n!==null&&(s=n,n=null),s=s||{};let[,a,d]=e.match(/([^ ]+) *(.*)/),l=this.createCommand(a);return n&&(l.description(n),l._executableHandler=!0),s.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(s.noHelp||s.hidden),l._executableFile=s.executableFile||null,d&&l.arguments(d),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),n?this:l}createCommand(e){return new i(e)}createHelp(){return Object.assign(new is,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
15
|
+
- specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new rs(e,t)}argument(e,t,r,n){let s=this.createArgument(e,t);return typeof r=="function"?s.default(n).argParser(r):s.default(r),this.addArgument(s),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,r,n]=e.match(/([^ ]+) *(.*)/),s=t??"display help for command",a=this.createCommand(r);return a.helpOption(!1),n&&a.arguments(n),s&&a.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=a,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
|
|
16
|
+
Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,r){this._exitCallback&&this._exitCallback(new Nt(e,t,r)),C.exit(e)}action(e){let t=r=>{let n=this.registeredArguments.length,s=r.slice(0,n);return this._storeOptionsAsProperties?s[n]=this:s[n]=this.opts(),s.push(this),e.apply(this,s)};return this._actionHandler=t,this}createOption(e,t){return new Cn(e,t)}_callParseArg(e,t,r,n){try{return e.parseArg(t,r)}catch(s){if(s.code==="commander.invalidArgument"){let a=`${n} ${s.message}`;this.error(a,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let r=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${r}'
|
|
17
|
+
- already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=n=>[n.name()].concat(n.aliases()),r=t(e).find(n=>this._findCommand(n));if(r){let n=t(this._findCommand(r)).join("|"),s=t(e).join("|");throw new Error(`cannot add command '${s}' as already have command '${n}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),r=e.attributeName();if(e.negate){let s=e.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let n=(s,a,d)=>{s==null&&e.presetArg!==void 0&&(s=e.presetArg);let l=this.getOptionValue(r);s!==null&&e.parseArg?s=this._callParseArg(e,s,l,a):s!==null&&e.variadic&&(s=e._concatValue(s,l)),s==null&&(e.negate?s=!1:e.isBoolean()||e.optional?s=!0:s=""),this.setOptionValueWithSource(r,s,d)};return this.on("option:"+t,s=>{let a=`error: option '${e.flags}' argument '${s}' is invalid.`;n(s,a,"cli")}),e.envVar&&this.on("optionEnv:"+t,s=>{let a=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;n(s,a,"env")}),this}_optionEx(e,t,r,n,s){if(typeof t=="object"&&t instanceof Cn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let a=this.createOption(t,r);if(a.makeOptionMandatory(!!e.mandatory),typeof n=="function")a.default(s).argParser(n);else if(n instanceof RegExp){let d=n;n=(l,p)=>{let f=d.exec(l);return f?f[0]:p},a.default(s).argParser(n)}else a.default(n);return this.addOption(a)}option(e,t,r,n){return this._optionEx({},e,t,r,n)}requiredOption(e,t,r,n){return this._optionEx({mandatory:!0},e,t,r,n)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){C.versions?.electron&&(t.from="electron");let n=C.execArgv??[];(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))&&(t.from="eval")}e===void 0&&(e=C.argv),this.rawArgs=e.slice();let r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":C.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",r}parse(e,t){this._prepareForParse();let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){this._prepareForParse();let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
18
|
+
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,r){if(He.existsSync(e))return;let n=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",s=`'${e}' does not exist
|
|
19
|
+
- if '${r}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
20
|
+
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
21
|
+
- ${n}`;throw new Error(s)}_executeSubCommand(e,t){t=t.slice();let r=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function s(f,_){let A=X.resolve(f,_);if(He.existsSync(A))return A;if(n.includes(X.extname(_)))return;let Q=n.find(xe=>He.existsSync(`${A}${xe}`));if(Q)return`${A}${Q}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let a=e._executableFile||`${this._name}-${e._name}`,d=this._executableDir||"";if(this._scriptPath){let f;try{f=He.realpathSync(this._scriptPath)}catch{f=this._scriptPath}d=X.resolve(X.dirname(f),d)}if(d){let f=s(d,a);if(!f&&!e._executableFile&&this._scriptPath){let _=X.basename(this._scriptPath,X.extname(this._scriptPath));_!==this._name&&(f=s(d,`${_}-${e._name}`))}a=f||a}r=n.includes(X.extname(a));let l;C.platform!=="win32"?r?(t.unshift(a),t=Sn(C.execArgv).concat(t),l=At.spawn(C.argv[0],t,{stdio:"inherit"})):l=At.spawn(a,t,{stdio:"inherit"}):(this._checkForMissingExecutable(a,d,e._name),t.unshift(a),t=Sn(C.execArgv).concat(t),l=At.spawn(C.execPath,t,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(_=>{C.on(_,()=>{l.killed===!1&&l.exitCode===null&&l.kill(_)})});let p=this._exitCallback;l.on("close",f=>{f=f??1,p?p(new Nt(f,"commander.executeSubCommandAsync","(close)")):C.exit(f)}),l.on("error",f=>{if(f.code==="ENOENT")this._checkForMissingExecutable(a,d,e._name);else if(f.code==="EACCES")throw new Error(`'${a}' not executable`);if(!p)C.exit(1);else{let _=new Nt(1,"commander.executeSubCommandAsync","(error)");_.nestedError=f,p(_)}}),this.runningCommand=l}_dispatchSubcommand(e,t,r){let n=this._findCommand(e);n||this.help({error:!0}),n._prepareForParse();let s;return s=this._chainOrCallSubCommandHook(s,n,"preSubcommand"),s=this._chainOrCall(s,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(r));else return n._parseCommand(t,r)}),s}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(r,n,s)=>{let a=n;if(n!==null&&r.parseArg){let d=`error: command-argument value '${n}' is invalid for argument '${r.name()}'.`;a=this._callParseArg(r,n,s,d)}return a};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,n)=>{let s=r.defaultValue;r.variadic?n<this.args.length?(s=this.args.slice(n),r.parseArg&&(s=s.reduce((a,d)=>e(r,d,a),r.defaultValue))):s===void 0&&(s=[]):n<this.args.length&&(s=this.args[n],r.parseArg&&(s=e(r,s,r.defaultValue))),t[n]=s}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let r=e,n=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[t]!==void 0).forEach(s=>{s._lifeCycleHooks[t].forEach(a=>{n.push({hookedCommand:s,callback:a})})}),t==="postAction"&&n.reverse(),n.forEach(s=>{r=this._chainOrCall(r,()=>s.callback(s.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let n=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(s=>{n=this._chainOrCall(n,()=>s(this,t))}),n}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let n=()=>{r.unknown.length>0&&this.unknownOption(r.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){n(),this._processArguments();let a;return a=this._chainOrCallHooks(a,"preAction"),a=this._chainOrCall(a,()=>this._actionHandler(this.processedArgs)),this.parent&&(a=this._chainOrCall(a,()=>{this.parent.emit(s,e,t)})),a=this._chainOrCallHooks(a,"postAction"),a}if(this.parent&&this.parent.listenerCount(s))n(),this._processArguments(),this.parent.emit(s,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(n(),this._processArguments())}else this.commands.length?(n(),this.help({error:!0})):(n(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(r=>{let n=r.attributeName();return this.getOptionValue(n)===void 0?!1:this.getOptionValueSource(n)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let n=e.find(s=>r.conflictsWith.includes(s.attributeName()));n&&this._conflictingOption(r,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],n=t,s=e.slice();function a(l){return l.length>1&&l[0]==="-"}let d=null;for(;s.length;){let l=s.shift();if(l==="--"){n===r&&n.push(l),n.push(...s);break}if(d&&!a(l)){this.emit(`option:${d.name()}`,l);continue}if(d=null,a(l)){let p=this._findOption(l);if(p){if(p.required){let f=s.shift();f===void 0&&this.optionMissingArgument(p),this.emit(`option:${p.name()}`,f)}else if(p.optional){let f=null;s.length>0&&!a(s[0])&&(f=s.shift()),this.emit(`option:${p.name()}`,f)}else this.emit(`option:${p.name()}`);d=p.variadic?p:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let p=this._findOption(`-${l[1]}`);if(p){p.required||p.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${p.name()}`,l.slice(2)):(this.emit(`option:${p.name()}`),s.unshift(`-${l.slice(2)}`));continue}}if(/^--[^=]+=/.test(l)){let p=l.indexOf("="),f=this._findOption(l.slice(0,p));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,l.slice(p+1));continue}}if(a(l)&&(n=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(l)){t.push(l),s.length>0&&r.push(...s);break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l),s.length>0&&t.push(...s);break}else if(this._defaultCommandName){r.push(l),s.length>0&&r.push(...s);break}}if(this._passThroughOptions){n.push(l),s.length>0&&n.push(...s);break}n.push(l)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let n=this.options[r].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
|
|
22
|
+
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
23
|
+
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
24
|
+
`),this.outputHelp({error:!0}));let r=t||{},n=r.exitCode||1,s=r.code||"commander.error";this._exit(n,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in C.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,C.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new os(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(n=>!t(n)).forEach(n=>{this.setOptionValueWithSource(n,r.implied[n],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let r=a=>{let d=a.attributeName(),l=this.getOptionValue(d),p=this.options.find(_=>_.negate&&d===_.attributeName()),f=this.options.find(_=>!_.negate&&d===_.attributeName());return p&&(p.presetArg===void 0&&l===!1||p.presetArg!==void 0&&l===p.presetArg)?p:f||a},n=a=>{let d=r(a),l=d.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${d.envVar}'`:`option '${d.flags}'`},s=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],s=this;do{let a=s.createHelp().visibleOptions(s).filter(d=>d.long).map(d=>d.long);n=n.concat(a),s=s.parent}while(s&&!s._enablePositionalOptions);t=On(e,n)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(s=>{n.push(s.name()),s.alias()&&n.push(s.alias())}),t=On(e,n)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let n=this.createOption(t,r);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
25
|
+
`),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let n=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(r=>ns(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=X.basename(e,X.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),r=this._getOutputContext(e);t.prepareContext({error:r.error,helpWidth:r.helpWidth,outputHasColors:r.hasColors});let n=t.formatHelp(this,t);return r.hasColors?n:this._outputConfiguration.stripColor(n)}_getOutputContext(e){e=e||{};let t=!!e.error,r,n,s;return t?(r=d=>this._outputConfiguration.writeErr(d),n=this._outputConfiguration.getErrHasColors(),s=this._outputConfiguration.getErrHelpWidth()):(r=d=>this._outputConfiguration.writeOut(d),n=this._outputConfiguration.getOutHasColors(),s=this._outputConfiguration.getOutHelpWidth()),{error:t,write:d=>(n||(d=this._outputConfiguration.stripColor(d)),r(d)),hasColors:n,helpWidth:s}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getOutputContext(e),n={error:r.error,write:r.write,command:this};this._getCommandAndAncestors().reverse().forEach(a=>a.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let s=this.helpInformation({error:r.error});if(t&&(s=t(s),typeof s!="string"&&!Buffer.isBuffer(s)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(s),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(a=>a.emit("afterAllHelp",n))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=Number(C.exitCode??0);t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
|
|
26
|
+
Expecting one of '${r.join("', '")}'`);let n=`${e}Help`;return this.on(n,s=>{let a;typeof t=="function"?a=t({error:s.error,command:s.command}):a=t,a&&s.write(`${a}
|
|
27
|
+
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(n=>t.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Sn(i){return i.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="127.0.0.1",n="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?t=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=s[1],/^\d+$/.test(s[3])?n=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=s[1],r=s[3],n=s[4]),t&&n!=="0"?`${t}=${r}:${parseInt(n)+1}`:e})}function Dt(){if(C.env.NO_COLOR||C.env.FORCE_COLOR==="0"||C.env.FORCE_COLOR==="false")return!1;if(C.env.FORCE_COLOR||C.env.CLICOLOR_FORCE!==void 0)return!0}$t.Command=Mt;$t.useColor=Dt});var kn=x(z=>{var{Argument:xn}=Ve(),{Command:jt}=En(),{CommanderError:as,InvalidArgumentError:Tn}=Re(),{Help:cs}=xt(),{Option:Pn}=Rt();z.program=new jt;z.createCommand=i=>new jt(i);z.createOption=(i,e)=>new Pn(i,e);z.createArgument=(i,e)=>new xn(i,e);z.Command=jt;z.Option=Pn;z.Argument=xn;z.Help=cs;z.CommanderError=as;z.InvalidArgumentError=Tn;z.InvalidOptionArgumentError=Tn});var ye=x(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.stringArray=V.array=V.func=V.error=V.number=V.string=V.boolean=void 0;function us(i){return i===!0||i===!1}V.boolean=us;function Nn(i){return typeof i=="string"||i instanceof String}V.string=Nn;function ls(i){return typeof i=="number"||i instanceof Number}V.number=ls;function ds(i){return i instanceof Error}V.error=ds;function hs(i){return typeof i=="function"}V.func=hs;function Mn(i){return Array.isArray(i)}V.array=Mn;function fs(i){return Mn(i)&&i.every(e=>Nn(e))}V.stringArray=fs});var ar=x(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.Message=g.NotificationType9=g.NotificationType8=g.NotificationType7=g.NotificationType6=g.NotificationType5=g.NotificationType4=g.NotificationType3=g.NotificationType2=g.NotificationType1=g.NotificationType0=g.NotificationType=g.RequestType9=g.RequestType8=g.RequestType7=g.RequestType6=g.RequestType5=g.RequestType4=g.RequestType3=g.RequestType2=g.RequestType1=g.RequestType=g.RequestType0=g.AbstractMessageSignature=g.ParameterStructures=g.ResponseError=g.ErrorCodes=void 0;var de=ye(),Lt;(function(i){i.ParseError=-32700,i.InvalidRequest=-32600,i.MethodNotFound=-32601,i.InvalidParams=-32602,i.InternalError=-32603,i.jsonrpcReservedErrorRangeStart=-32099,i.serverErrorStart=-32099,i.MessageWriteError=-32099,i.MessageReadError=-32098,i.PendingResponseRejected=-32097,i.ConnectionInactive=-32096,i.ServerNotInitialized=-32002,i.UnknownErrorCode=-32001,i.jsonrpcReservedErrorRangeEnd=-32e3,i.serverErrorEnd=-32e3})(Lt||(g.ErrorCodes=Lt={}));var qt=class i extends Error{constructor(e,t,r){super(t),this.code=de.number(e)?e:Lt.UnknownErrorCode,this.data=r,Object.setPrototypeOf(this,i.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};g.ResponseError=qt;var W=class i{constructor(e){this.kind=e}static is(e){return e===i.auto||e===i.byName||e===i.byPosition}toString(){return this.kind}};g.ParameterStructures=W;W.auto=new W("auto");W.byPosition=new W("byPosition");W.byName=new W("byName");var R=class{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return W.auto}};g.AbstractMessageSignature=R;var It=class extends R{constructor(e){super(e,0)}};g.RequestType0=It;var Vt=class extends R{constructor(e,t=W.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};g.RequestType=Vt;var Ht=class extends R{constructor(e,t=W.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};g.RequestType1=Ht;var Ft=class extends R{constructor(e){super(e,2)}};g.RequestType2=Ft;var Wt=class extends R{constructor(e){super(e,3)}};g.RequestType3=Wt;var Bt=class extends R{constructor(e){super(e,4)}};g.RequestType4=Bt;var Ut=class extends R{constructor(e){super(e,5)}};g.RequestType5=Ut;var zt=class extends R{constructor(e){super(e,6)}};g.RequestType6=zt;var Jt=class extends R{constructor(e){super(e,7)}};g.RequestType7=Jt;var Gt=class extends R{constructor(e){super(e,8)}};g.RequestType8=Gt;var Kt=class extends R{constructor(e){super(e,9)}};g.RequestType9=Kt;var Qt=class extends R{constructor(e,t=W.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};g.NotificationType=Qt;var Yt=class extends R{constructor(e){super(e,0)}};g.NotificationType0=Yt;var Xt=class extends R{constructor(e,t=W.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};g.NotificationType1=Xt;var Zt=class extends R{constructor(e){super(e,2)}};g.NotificationType2=Zt;var er=class extends R{constructor(e){super(e,3)}};g.NotificationType3=er;var tr=class extends R{constructor(e){super(e,4)}};g.NotificationType4=tr;var rr=class extends R{constructor(e){super(e,5)}};g.NotificationType5=rr;var nr=class extends R{constructor(e){super(e,6)}};g.NotificationType6=nr;var ir=class extends R{constructor(e){super(e,7)}};g.NotificationType7=ir;var sr=class extends R{constructor(e){super(e,8)}};g.NotificationType8=sr;var or=class extends R{constructor(e){super(e,9)}};g.NotificationType9=or;var Dn;(function(i){function e(n){let s=n;return s&&de.string(s.method)&&(de.string(s.id)||de.number(s.id))}i.isRequest=e;function t(n){let s=n;return s&&de.string(s.method)&&n.id===void 0}i.isNotification=t;function r(n){let s=n;return s&&(s.result!==void 0||!!s.error)&&(de.string(s.id)||de.number(s.id)||s.id===null)}i.isResponse=r})(Dn||(g.Message=Dn={}))});var ur=x(se=>{"use strict";var $n;Object.defineProperty(se,"__esModule",{value:!0});se.LRUCache=se.LinkedMap=se.Touch=void 0;var H;(function(i){i.None=0,i.First=1,i.AsOld=i.First,i.Last=2,i.AsNew=i.Last})(H||(se.Touch=H={}));var Fe=class{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=H.None){let r=this._map.get(e);if(r)return t!==H.None&&this.touch(r,t),r.value}set(e,t,r=H.None){let n=this._map.get(e);if(n)n.value=t,r!==H.None&&this.touch(n,r);else{switch(n={key:e,value:t,next:void 0,previous:void 0},r){case H.None:this.addItemLast(n);break;case H.First:this.addItemFirst(n);break;case H.Last:this.addItemLast(n);break;default:this.addItemLast(n);break}this._map.set(e,n),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let 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");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){let r=this._state,n=this._head;for(;n;){if(t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");n=n.next}}keys(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let n={value:t.key,done:!1};return t=t.next,n}else return{value:void 0,done:!0}}};return r}values(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let n={value:t.value,done:!1};return t=t.next,n}else return{value:void 0,done:!0}}};return r}entries(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let n={value:[t.key,t.value],done:!1};return t=t.next,n}else return{value:void 0,done:!0}}};return r}[($n=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,r=this.size;for(;t&&r>e;)this._map.delete(t.key),t=t.next,r--;this._head=t,this._size=r,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");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{let t=e.next,r=e.previous;if(!t||!r)throw new Error("Invalid list");t.previous=r,r.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!==H.First&&t!==H.Last)){if(t===H.First){if(e===this._head)return;let r=e.next,n=e.previous;e===this._tail?(n.next=void 0,this._tail=n):(r.previous=n,n.next=r),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===H.Last){if(e===this._tail)return;let r=e.next,n=e.previous;e===this._head?(r.previous=void 0,this._head=r):(r.previous=n,n.next=r),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((t,r)=>{e.push([r,t])}),e}fromJSON(e){this.clear();for(let[t,r]of e)this.set(t,r)}};se.LinkedMap=Fe;var cr=class extends Fe{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=H.AsNew){return super.get(e,t)}peek(e){return super.get(e,H.None)}set(e,t){return super.set(e,t,H.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};se.LRUCache=cr});var Ln=x(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We.Disposable=void 0;var jn;(function(i){function e(t){return{dispose:t}}i.create=e})(jn||(We.Disposable=jn={}))});var oe=x(hr=>{"use strict";Object.defineProperty(hr,"__esModule",{value:!0});var lr;function dr(){if(lr===void 0)throw new Error("No runtime abstraction layer installed");return lr}(function(i){function e(t){if(t===void 0)throw new Error("No runtime abstraction layer provided");lr=t}i.install=e})(dr||(dr={}));hr.default=dr});var ve=x(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.Emitter=be.Event=void 0;var ps=oe(),qn;(function(i){let e={dispose(){}};i.None=function(){return e}})(qn||(be.Event=qn={}));var fr=class{add(e,t=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(r)&&r.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let r=!1;for(let n=0,s=this._callbacks.length;n<s;n++)if(this._callbacks[n]===e)if(this._contexts[n]===t){this._callbacks.splice(n,1),this._contexts.splice(n,1);return}else r=!0;if(r)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];let t=[],r=this._callbacks.slice(0),n=this._contexts.slice(0);for(let s=0,a=r.length;s<a;s++)try{t.push(r[s].apply(n[s],e))}catch(d){(0,ps.default)().console.error(d)}return t}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}},Be=class i{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,t,r)=>{this._callbacks||(this._callbacks=new fr),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);let n={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),n.dispose=i._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(r)&&r.push(n),n}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};be.Emitter=Be;Be._noop=function(){}});var Je=x(we=>{"use strict";Object.defineProperty(we,"__esModule",{value:!0});we.CancellationTokenSource=we.CancellationToken=void 0;var ms=oe(),gs=ye(),pr=ve(),Ue;(function(i){i.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:pr.Event.None}),i.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:pr.Event.None});function e(t){let r=t;return r&&(r===i.None||r===i.Cancelled||gs.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}i.is=e})(Ue||(we.CancellationToken=Ue={}));var _s=Object.freeze(function(i,e){let t=(0,ms.default)().timer.setTimeout(i.bind(e),0);return{dispose(){t.dispose()}}}),ze=class{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?_s:(this._emitter||(this._emitter=new pr.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},mr=class{get token(){return this._token||(this._token=new ze),this._token}cancel(){this._token?this._token.cancel():this._token=Ue.Cancelled}dispose(){this._token?this._token instanceof ze&&this._token.dispose():this._token=Ue.None}};we.CancellationTokenSource=mr});var In=x(Ce=>{"use strict";Object.defineProperty(Ce,"__esModule",{value:!0});Ce.SharedArrayReceiverStrategy=Ce.SharedArraySenderStrategy=void 0;var ys=Je(),Ae;(function(i){i.Continue=0,i.Cancelled=1})(Ae||(Ae={}));var gr=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let t=new SharedArrayBuffer(4),r=new Int32Array(t,0,1);r[0]=Ae.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){let r=this.buffers.get(t);if(r===void 0)return;let n=new Int32Array(r,0,1);Atomics.store(n,0,Ae.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};Ce.SharedArraySenderStrategy=gr;var _r=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===Ae.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},yr=class{constructor(e){this.token=new _r(e)}cancel(){}dispose(){}},br=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let t=e.$cancellationData;return t===void 0?new ys.CancellationTokenSource:new yr(t)}};Ce.SharedArrayReceiverStrategy=br});var wr=x(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.Semaphore=void 0;var bs=oe(),vr=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,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,bs.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let t=e.thunk();t instanceof Promise?t.then(r=>{this._active--,e.resolve(r),this.runNext()},r=>{this._active--,e.reject(r),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};Ge.Semaphore=vr});var Hn=x(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.ReadableStreamMessageReader=ae.AbstractMessageReader=ae.MessageReader=void 0;var Or=oe(),Oe=ye(),Cr=ve(),vs=wr(),Vn;(function(i){function e(t){let r=t;return r&&Oe.func(r.listen)&&Oe.func(r.dispose)&&Oe.func(r.onError)&&Oe.func(r.onClose)&&Oe.func(r.onPartialMessage)}i.is=e})(Vn||(ae.MessageReader=Vn={}));var Ke=class{constructor(){this.errorEmitter=new Cr.Emitter,this.closeEmitter=new Cr.Emitter,this.partialMessageEmitter=new Cr.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: ${Oe.string(e.message)?e.message:"unknown"}`)}};ae.AbstractMessageReader=Ke;var Sr;(function(i){function e(t){let r,n,s,a=new Map,d,l=new Map;if(t===void 0||typeof t=="string")r=t??"utf-8";else{if(r=t.charset??"utf-8",t.contentDecoder!==void 0&&(s=t.contentDecoder,a.set(s.name,s)),t.contentDecoders!==void 0)for(let p of t.contentDecoders)a.set(p.name,p);if(t.contentTypeDecoder!==void 0&&(d=t.contentTypeDecoder,l.set(d.name,d)),t.contentTypeDecoders!==void 0)for(let p of t.contentTypeDecoders)l.set(p.name,p)}return d===void 0&&(d=(0,Or.default)().applicationJson.decoder,l.set(d.name,d)),{charset:r,contentDecoder:s,contentDecoders:a,contentTypeDecoder:d,contentTypeDecoders:l}}i.fromOptions=e})(Sr||(Sr={}));var Er=class extends Ke{constructor(e,t){super(),this.readable=e,this.options=Sr.fromOptions(t),this.buffer=(0,Or.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new vs.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;let t=this.readable.onData(r=>{this.onData(r)});return this.readable.onError(r=>this.fireError(r)),this.readable.onClose(()=>this.fireClose()),t}onData(e){try{for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let r=this.buffer.tryReadHeaders(!0);if(!r)return;let n=r.get("content-length");if(!n){this.fireError(new Error(`Header must provide a Content-Length property.
|
|
28
|
+
${JSON.stringify(Object.fromEntries(r))}`));return}let s=parseInt(n);if(isNaN(s)){this.fireError(new Error(`Content-Length value must be a number. Got ${n}`));return}this.nextMessageLength=s}let t=this.buffer.tryReadBody(this.nextMessageLength);if(t===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let r=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(t):t,n=await this.options.contentTypeDecoder.decode(r,this.options);this.callback(n)}).catch(r=>{this.fireError(r)})}}catch(t){this.fireError(t)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,Or.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))}};ae.ReadableStreamMessageReader=Er});var zn=x(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.WriteableStreamMessageWriter=ce.AbstractMessageWriter=ce.MessageWriter=void 0;var Fn=oe(),Ne=ye(),ws=wr(),Wn=ve(),Cs="Content-Length: ",Bn=`\r
|
|
29
|
+
`,Un;(function(i){function e(t){let r=t;return r&&Ne.func(r.dispose)&&Ne.func(r.onClose)&&Ne.func(r.onError)&&Ne.func(r.write)}i.is=e})(Un||(ce.MessageWriter=Un={}));var Qe=class{constructor(){this.errorEmitter=new Wn.Emitter,this.closeEmitter=new Wn.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,r){this.errorEmitter.fire([this.asError(e),t,r])}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: ${Ne.string(e.message)?e.message:"unknown"}`)}};ce.AbstractMessageWriter=Qe;var xr;(function(i){function e(t){return t===void 0||typeof t=="string"?{charset:t??"utf-8",contentTypeEncoder:(0,Fn.default)().applicationJson.encoder}:{charset:t.charset??"utf-8",contentEncoder:t.contentEncoder,contentTypeEncoder:t.contentTypeEncoder??(0,Fn.default)().applicationJson.encoder}}i.fromOptions=e})(xr||(xr={}));var Tr=class extends Qe{constructor(e,t){super(),this.writable=e,this.options=xr.fromOptions(t),this.errorCount=0,this.writeSemaphore=new ws.Semaphore(1),this.writable.onError(r=>this.fireError(r)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(r=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(r):r).then(r=>{let n=[];return n.push(Cs,r.byteLength.toString(),Bn),n.push(Bn),this.doWrite(e,n,r)},r=>{throw this.fireError(r),r}))}async doWrite(e,t,r){try{return await this.writable.write(t.join(""),"ascii"),this.writable.write(r)}catch(n){return this.handleError(n,e),Promise.reject(n)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}};ce.WriteableStreamMessageWriter=Tr});var Jn=x(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.AbstractMessageBuffer=void 0;var Os=13,Ss=10,Es=`\r
|
|
30
|
+
`,Pr=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let t=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let t=0,r=0,n=0,s=0;e:for(;r<this._chunks.length;){let p=this._chunks[r];for(n=0;n<p.length;){switch(p[n]){case Os:switch(t){case 0:t=1;break;case 2:t=3;break;default:t=0}break;case Ss:switch(t){case 1:t=2;break;case 3:t=4,n++;break e;default:t=0}break;default:t=0}n++}s+=p.byteLength,r++}if(t!==4)return;let a=this._read(s+n),d=new Map,l=this.toString(a,"ascii").split(Es);if(l.length<2)return d;for(let p=0;p<l.length-2;p++){let f=l[p],_=f.indexOf(":");if(_===-1)throw new Error(`Message header must separate key and value using ':'
|
|
31
|
+
${f}`);let A=f.substr(0,_),Q=f.substr(_+1).trim();d.set(e?A.toLowerCase():A,Q)}return d}tryReadBody(e){if(!(this._totalLength<e))return this._read(e)}get numberOfBytes(){return this._totalLength}_read(e){if(e===0)return this.emptyBuffer();if(e>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let s=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(s)}if(this._chunks[0].byteLength>e){let s=this._chunks[0],a=this.asNative(s,e);return this._chunks[0]=s.slice(e),this._totalLength-=e,a}let t=this.allocNative(e),r=0,n=0;for(;e>0;){let s=this._chunks[n];if(s.byteLength>e){let a=s.slice(0,e);t.set(a,r),r+=e,this._chunks[n]=s.slice(e),this._totalLength-=e,e-=e}else t.set(s,r),r+=s.byteLength,this._chunks.shift(),this._totalLength-=s.byteLength,e-=s.byteLength}return t}};Ye.AbstractMessageBuffer=Pr});var Xn=x(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.createMessageConnection=b.ConnectionOptions=b.MessageStrategy=b.CancellationStrategy=b.CancellationSenderStrategy=b.CancellationReceiverStrategy=b.RequestCancellationReceiverStrategy=b.IdCancellationReceiverStrategy=b.ConnectionStrategy=b.ConnectionError=b.ConnectionErrors=b.LogTraceNotification=b.SetTraceNotification=b.TraceFormat=b.TraceValues=b.Trace=b.NullLogger=b.ProgressType=b.ProgressToken=void 0;var Gn=oe(),M=ye(),y=ar(),Kn=ur(),Me=ve(),kr=Je(),je;(function(i){i.type=new y.NotificationType("$/cancelRequest")})(je||(je={}));var Rr;(function(i){function e(t){return typeof t=="string"||typeof t=="number"}i.is=e})(Rr||(b.ProgressToken=Rr={}));var De;(function(i){i.type=new y.NotificationType("$/progress")})(De||(De={}));var Ar=class{constructor(){}};b.ProgressType=Ar;var Nr;(function(i){function e(t){return M.func(t)}i.is=e})(Nr||(Nr={}));b.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var O;(function(i){i[i.Off=0]="Off",i[i.Messages=1]="Messages",i[i.Compact=2]="Compact",i[i.Verbose=3]="Verbose"})(O||(b.Trace=O={}));var Qn;(function(i){i.Off="off",i.Messages="messages",i.Compact="compact",i.Verbose="verbose"})(Qn||(b.TraceValues=Qn={}));(function(i){function e(r){if(!M.string(r))return i.Off;switch(r=r.toLowerCase(),r){case"off":return i.Off;case"messages":return i.Messages;case"compact":return i.Compact;case"verbose":return i.Verbose;default:return i.Off}}i.fromString=e;function t(r){switch(r){case i.Off:return"off";case i.Messages:return"messages";case i.Compact:return"compact";case i.Verbose:return"verbose";default:return"off"}}i.toString=t})(O||(b.Trace=O={}));var B;(function(i){i.Text="text",i.JSON="json"})(B||(b.TraceFormat=B={}));(function(i){function e(t){return M.string(t)?(t=t.toLowerCase(),t==="json"?i.JSON:i.Text):i.Text}i.fromString=e})(B||(b.TraceFormat=B={}));var Mr;(function(i){i.type=new y.NotificationType("$/setTrace")})(Mr||(b.SetTraceNotification=Mr={}));var Xe;(function(i){i.type=new y.NotificationType("$/logTrace")})(Xe||(b.LogTraceNotification=Xe={}));var $e;(function(i){i[i.Closed=1]="Closed",i[i.Disposed=2]="Disposed",i[i.AlreadyListening=3]="AlreadyListening"})($e||(b.ConnectionErrors=$e={}));var Se=class i extends Error{constructor(e,t){super(t),this.code=e,Object.setPrototypeOf(this,i.prototype)}};b.ConnectionError=Se;var Dr;(function(i){function e(t){let r=t;return r&&M.func(r.cancelUndispatched)}i.is=e})(Dr||(b.ConnectionStrategy=Dr={}));var Ze;(function(i){function e(t){let r=t;return r&&(r.kind===void 0||r.kind==="id")&&M.func(r.createCancellationTokenSource)&&(r.dispose===void 0||M.func(r.dispose))}i.is=e})(Ze||(b.IdCancellationReceiverStrategy=Ze={}));var $r;(function(i){function e(t){let r=t;return r&&r.kind==="request"&&M.func(r.createCancellationTokenSource)&&(r.dispose===void 0||M.func(r.dispose))}i.is=e})($r||(b.RequestCancellationReceiverStrategy=$r={}));var et;(function(i){i.Message=Object.freeze({createCancellationTokenSource(t){return new kr.CancellationTokenSource}});function e(t){return Ze.is(t)||$r.is(t)}i.is=e})(et||(b.CancellationReceiverStrategy=et={}));var tt;(function(i){i.Message=Object.freeze({sendCancellation(t,r){return t.sendNotification(je.type,{id:r})},cleanup(t){}});function e(t){let r=t;return r&&M.func(r.sendCancellation)&&M.func(r.cleanup)}i.is=e})(tt||(b.CancellationSenderStrategy=tt={}));var rt;(function(i){i.Message=Object.freeze({receiver:et.Message,sender:tt.Message});function e(t){let r=t;return r&&et.is(r.receiver)&&tt.is(r.sender)}i.is=e})(rt||(b.CancellationStrategy=rt={}));var nt;(function(i){function e(t){let r=t;return r&&M.func(r.handleMessage)}i.is=e})(nt||(b.MessageStrategy=nt={}));var Yn;(function(i){function e(t){let r=t;return r&&(rt.is(r.cancellationStrategy)||Dr.is(r.connectionStrategy)||nt.is(r.messageStrategy))}i.is=e})(Yn||(b.ConnectionOptions=Yn={}));var G;(function(i){i[i.New=1]="New",i[i.Listening=2]="Listening",i[i.Closed=3]="Closed",i[i.Disposed=4]="Disposed"})(G||(G={}));function xs(i,e,t,r){let n=t!==void 0?t:b.NullLogger,s=0,a=0,d=0,l="2.0",p,f=new Map,_,A=new Map,Q=new Map,xe,ue=new Kn.LinkedMap,te=new Map,Le=new Set,Y=new Map,P=O.Off,le=B.Text,j,re=G.New,gt=new Me.Emitter,tn=new Me.Emitter,rn=new Me.Emitter,nn=new Me.Emitter,sn=new Me.Emitter,ne=r&&r.cancellationStrategy?r.cancellationStrategy:rt.Message;function on(o){if(o===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+o.toString()}function Oi(o){return o===null?"res-unknown-"+(++d).toString():"res-"+o.toString()}function Si(){return"not-"+(++a).toString()}function Ei(o,u){y.Message.isRequest(u)?o.set(on(u.id),u):y.Message.isResponse(u)?o.set(Oi(u.id),u):o.set(Si(),u)}function xi(o){}function an(){return re===G.Listening}function cn(){return re===G.Closed}function pe(){return re===G.Disposed}function un(){(re===G.New||re===G.Listening)&&(re=G.Closed,tn.fire(void 0))}function Ti(o){gt.fire([o,void 0,void 0])}function Pi(o){gt.fire(o)}i.onClose(un),i.onError(Ti),e.onClose(un),e.onError(Pi);function ln(){xe||ue.size===0||(xe=(0,Gn.default)().timer.setImmediate(()=>{xe=void 0,ki()}))}function dn(o){y.Message.isRequest(o)?Ai(o):y.Message.isNotification(o)?Mi(o):y.Message.isResponse(o)?Ni(o):Di(o)}function ki(){if(ue.size===0)return;let o=ue.shift();try{let u=r?.messageStrategy;nt.is(u)?u.handleMessage(o,dn):dn(o)}finally{ln()}}let Ri=o=>{try{if(y.Message.isNotification(o)&&o.method===je.type.method){let u=o.params.id,h=on(u),m=ue.get(h);if(y.Message.isRequest(m)){let E=r?.connectionStrategy,D=E&&E.cancelUndispatched?E.cancelUndispatched(m,xi):void 0;if(D&&(D.error!==void 0||D.result!==void 0)){ue.delete(h),Y.delete(u),D.id=m.id,qe(D,o.method,Date.now()),e.write(D).catch(()=>n.error("Sending response for canceled message failed."));return}}let k=Y.get(u);if(k!==void 0){k.cancel(),_t(o);return}else Le.add(u)}Ei(ue,o)}finally{ln()}};function Ai(o){if(pe())return;function u(w,N,S){let L={jsonrpc:l,id:o.id};w instanceof y.ResponseError?L.error=w.toJson():L.result=w===void 0?null:w,qe(L,N,S),e.write(L).catch(()=>n.error("Sending response failed."))}function h(w,N,S){let L={jsonrpc:l,id:o.id,error:w.toJson()};qe(L,N,S),e.write(L).catch(()=>n.error("Sending response failed."))}function m(w,N,S){w===void 0&&(w=null);let L={jsonrpc:l,id:o.id,result:w};qe(L,N,S),e.write(L).catch(()=>n.error("Sending response failed."))}Li(o);let k=f.get(o.method),E,D;k&&(E=k.type,D=k.handler);let $=Date.now();if(D||p){let w=o.id??String(Date.now()),N=Ze.is(ne.receiver)?ne.receiver.createCancellationTokenSource(w):ne.receiver.createCancellationTokenSource(o);o.id!==null&&Le.has(o.id)&&N.cancel(),o.id!==null&&Y.set(w,N);try{let S;if(D)if(o.params===void 0){if(E!==void 0&&E.numberOfParams!==0){h(new y.ResponseError(y.ErrorCodes.InvalidParams,`Request ${o.method} defines ${E.numberOfParams} params but received none.`),o.method,$);return}S=D(N.token)}else if(Array.isArray(o.params)){if(E!==void 0&&E.parameterStructures===y.ParameterStructures.byName){h(new y.ResponseError(y.ErrorCodes.InvalidParams,`Request ${o.method} defines parameters by name but received parameters by position`),o.method,$);return}S=D(...o.params,N.token)}else{if(E!==void 0&&E.parameterStructures===y.ParameterStructures.byPosition){h(new y.ResponseError(y.ErrorCodes.InvalidParams,`Request ${o.method} defines parameters by position but received parameters by name`),o.method,$);return}S=D(o.params,N.token)}else p&&(S=p(o.method,o.params,N.token));let L=S;S?L.then?L.then(F=>{Y.delete(w),u(F,o.method,$)},F=>{Y.delete(w),F instanceof y.ResponseError?h(F,o.method,$):F&&M.string(F.message)?h(new y.ResponseError(y.ErrorCodes.InternalError,`Request ${o.method} failed with message: ${F.message}`),o.method,$):h(new y.ResponseError(y.ErrorCodes.InternalError,`Request ${o.method} failed unexpectedly without providing any details.`),o.method,$)}):(Y.delete(w),u(S,o.method,$)):(Y.delete(w),m(S,o.method,$))}catch(S){Y.delete(w),S instanceof y.ResponseError?u(S,o.method,$):S&&M.string(S.message)?h(new y.ResponseError(y.ErrorCodes.InternalError,`Request ${o.method} failed with message: ${S.message}`),o.method,$):h(new y.ResponseError(y.ErrorCodes.InternalError,`Request ${o.method} failed unexpectedly without providing any details.`),o.method,$)}}else h(new y.ResponseError(y.ErrorCodes.MethodNotFound,`Unhandled method ${o.method}`),o.method,$)}function Ni(o){if(!pe())if(o.id===null)o.error?n.error(`Received response message without id: Error is:
|
|
32
|
+
${JSON.stringify(o.error,void 0,4)}`):n.error("Received response message without id. No further error information provided.");else{let u=o.id,h=te.get(u);if(qi(o,h),h!==void 0){te.delete(u);try{if(o.error){let m=o.error;h.reject(new y.ResponseError(m.code,m.message,m.data))}else if(o.result!==void 0)h.resolve(o.result);else throw new Error("Should never happen.")}catch(m){m.message?n.error(`Response handler '${h.method}' failed with message: ${m.message}`):n.error(`Response handler '${h.method}' failed unexpectedly.`)}}}}function Mi(o){if(pe())return;let u,h;if(o.method===je.type.method){let m=o.params.id;Le.delete(m),_t(o);return}else{let m=A.get(o.method);m&&(h=m.handler,u=m.type)}if(h||_)try{if(_t(o),h)if(o.params===void 0)u!==void 0&&u.numberOfParams!==0&&u.parameterStructures!==y.ParameterStructures.byName&&n.error(`Notification ${o.method} defines ${u.numberOfParams} params but received none.`),h();else if(Array.isArray(o.params)){let m=o.params;o.method===De.type.method&&m.length===2&&Rr.is(m[0])?h({token:m[0],value:m[1]}):(u!==void 0&&(u.parameterStructures===y.ParameterStructures.byName&&n.error(`Notification ${o.method} defines parameters by name but received parameters by position`),u.numberOfParams!==o.params.length&&n.error(`Notification ${o.method} defines ${u.numberOfParams} params but received ${m.length} arguments`)),h(...m))}else u!==void 0&&u.parameterStructures===y.ParameterStructures.byPosition&&n.error(`Notification ${o.method} defines parameters by position but received parameters by name`),h(o.params);else _&&_(o.method,o.params)}catch(m){m.message?n.error(`Notification handler '${o.method}' failed with message: ${m.message}`):n.error(`Notification handler '${o.method}' failed unexpectedly.`)}else rn.fire(o)}function Di(o){if(!o){n.error("Received empty message.");return}n.error(`Received message which is neither a response nor a notification message:
|
|
33
|
+
${JSON.stringify(o,null,4)}`);let u=o;if(M.string(u.id)||M.number(u.id)){let h=u.id,m=te.get(h);m&&m.reject(new Error("The received response has neither a result nor an error property."))}}function ie(o){if(o!=null)switch(P){case O.Verbose:return JSON.stringify(o,null,4);case O.Compact:return JSON.stringify(o);default:return}}function $i(o){if(!(P===O.Off||!j))if(le===B.Text){let u;(P===O.Verbose||P===O.Compact)&&o.params&&(u=`Params: ${ie(o.params)}
|
|
34
|
+
|
|
35
|
+
`),j.log(`Sending request '${o.method} - (${o.id})'.`,u)}else me("send-request",o)}function ji(o){if(!(P===O.Off||!j))if(le===B.Text){let u;(P===O.Verbose||P===O.Compact)&&(o.params?u=`Params: ${ie(o.params)}
|
|
36
|
+
|
|
37
|
+
`:u=`No parameters provided.
|
|
38
|
+
|
|
39
|
+
`),j.log(`Sending notification '${o.method}'.`,u)}else me("send-notification",o)}function qe(o,u,h){if(!(P===O.Off||!j))if(le===B.Text){let m;(P===O.Verbose||P===O.Compact)&&(o.error&&o.error.data?m=`Error data: ${ie(o.error.data)}
|
|
40
|
+
|
|
41
|
+
`:o.result?m=`Result: ${ie(o.result)}
|
|
42
|
+
|
|
43
|
+
`:o.error===void 0&&(m=`No result returned.
|
|
44
|
+
|
|
45
|
+
`)),j.log(`Sending response '${u} - (${o.id})'. Processing request took ${Date.now()-h}ms`,m)}else me("send-response",o)}function Li(o){if(!(P===O.Off||!j))if(le===B.Text){let u;(P===O.Verbose||P===O.Compact)&&o.params&&(u=`Params: ${ie(o.params)}
|
|
46
|
+
|
|
47
|
+
`),j.log(`Received request '${o.method} - (${o.id})'.`,u)}else me("receive-request",o)}function _t(o){if(!(P===O.Off||!j||o.method===Xe.type.method))if(le===B.Text){let u;(P===O.Verbose||P===O.Compact)&&(o.params?u=`Params: ${ie(o.params)}
|
|
48
|
+
|
|
49
|
+
`:u=`No parameters provided.
|
|
50
|
+
|
|
51
|
+
`),j.log(`Received notification '${o.method}'.`,u)}else me("receive-notification",o)}function qi(o,u){if(!(P===O.Off||!j))if(le===B.Text){let h;if((P===O.Verbose||P===O.Compact)&&(o.error&&o.error.data?h=`Error data: ${ie(o.error.data)}
|
|
52
|
+
|
|
53
|
+
`:o.result?h=`Result: ${ie(o.result)}
|
|
54
|
+
|
|
55
|
+
`:o.error===void 0&&(h=`No result returned.
|
|
56
|
+
|
|
57
|
+
`)),u){let m=o.error?` Request failed: ${o.error.message} (${o.error.code}).`:"";j.log(`Received response '${u.method} - (${o.id})' in ${Date.now()-u.timerStart}ms.${m}`,h)}else j.log(`Received response ${o.id} without active response promise.`,h)}else me("receive-response",o)}function me(o,u){if(!j||P===O.Off)return;let h={isLSPMessage:!0,type:o,message:u,timestamp:Date.now()};j.log(h)}function Te(){if(cn())throw new Se($e.Closed,"Connection is closed.");if(pe())throw new Se($e.Disposed,"Connection is disposed.")}function Ii(){if(an())throw new Se($e.AlreadyListening,"Connection is already listening")}function Vi(){if(!an())throw new Error("Call listen() first.")}function Pe(o){return o===void 0?null:o}function hn(o){if(o!==null)return o}function fn(o){return o!=null&&!Array.isArray(o)&&typeof o=="object"}function yt(o,u){switch(o){case y.ParameterStructures.auto:return fn(u)?hn(u):[Pe(u)];case y.ParameterStructures.byName:if(!fn(u))throw new Error("Received parameters by name but param is not an object literal.");return hn(u);case y.ParameterStructures.byPosition:return[Pe(u)];default:throw new Error(`Unknown parameter structure ${o.toString()}`)}}function pn(o,u){let h,m=o.numberOfParams;switch(m){case 0:h=void 0;break;case 1:h=yt(o.parameterStructures,u[0]);break;default:h=[];for(let k=0;k<u.length&&k<m;k++)h.push(Pe(u[k]));if(u.length<m)for(let k=u.length;k<m;k++)h.push(null);break}return h}let ge={sendNotification:(o,...u)=>{Te();let h,m;if(M.string(o)){h=o;let E=u[0],D=0,$=y.ParameterStructures.auto;y.ParameterStructures.is(E)&&(D=1,$=E);let w=u.length,N=w-D;switch(N){case 0:m=void 0;break;case 1:m=yt($,u[D]);break;default:if($===y.ParameterStructures.byName)throw new Error(`Received ${N} parameters for 'by Name' notification parameter structure.`);m=u.slice(D,w).map(S=>Pe(S));break}}else{let E=u;h=o.method,m=pn(o,E)}let k={jsonrpc:l,method:h,params:m};return ji(k),e.write(k).catch(E=>{throw n.error("Sending notification failed."),E})},onNotification:(o,u)=>{Te();let h;return M.func(o)?_=o:u&&(M.string(o)?(h=o,A.set(o,{type:void 0,handler:u})):(h=o.method,A.set(o.method,{type:o,handler:u}))),{dispose:()=>{h!==void 0?A.delete(h):_=void 0}}},onProgress:(o,u,h)=>{if(Q.has(u))throw new Error(`Progress handler for token ${u} already registered`);return Q.set(u,h),{dispose:()=>{Q.delete(u)}}},sendProgress:(o,u,h)=>ge.sendNotification(De.type,{token:u,value:h}),onUnhandledProgress:nn.event,sendRequest:(o,...u)=>{Te(),Vi();let h,m,k;if(M.string(o)){h=o;let w=u[0],N=u[u.length-1],S=0,L=y.ParameterStructures.auto;y.ParameterStructures.is(w)&&(S=1,L=w);let F=u.length;kr.CancellationToken.is(N)&&(F=F-1,k=N);let K=F-S;switch(K){case 0:m=void 0;break;case 1:m=yt(L,u[S]);break;default:if(L===y.ParameterStructures.byName)throw new Error(`Received ${K} parameters for 'by Name' request parameter structure.`);m=u.slice(S,F).map(Hi=>Pe(Hi));break}}else{let w=u;h=o.method,m=pn(o,w);let N=o.numberOfParams;k=kr.CancellationToken.is(w[N])?w[N]:void 0}let E=s++,D;k&&(D=k.onCancellationRequested(()=>{let w=ne.sender.sendCancellation(ge,E);return w===void 0?(n.log(`Received no promise from cancellation strategy when cancelling id ${E}`),Promise.resolve()):w.catch(()=>{n.log(`Sending cancellation messages for id ${E} failed`)})}));let $={jsonrpc:l,id:E,method:h,params:m};return $i($),typeof ne.sender.enableCancellation=="function"&&ne.sender.enableCancellation($),new Promise(async(w,N)=>{let S=K=>{w(K),ne.sender.cleanup(E),D?.dispose()},L=K=>{N(K),ne.sender.cleanup(E),D?.dispose()},F={method:h,timerStart:Date.now(),resolve:S,reject:L};try{te.set(E,F),await e.write($)}catch(K){throw te.delete(E),F.reject(new y.ResponseError(y.ErrorCodes.MessageWriteError,K.message?K.message:"Unknown reason")),n.error("Sending request failed."),K}})},onRequest:(o,u)=>{Te();let h=null;return Nr.is(o)?(h=void 0,p=o):M.string(o)?(h=null,u!==void 0&&(h=o,f.set(o,{handler:u,type:void 0}))):u!==void 0&&(h=o.method,f.set(o.method,{type:o,handler:u})),{dispose:()=>{h!==null&&(h!==void 0?f.delete(h):p=void 0)}}},hasPendingResponse:()=>te.size>0,trace:async(o,u,h)=>{let m=!1,k=B.Text;h!==void 0&&(M.boolean(h)?m=h:(m=h.sendNotification||!1,k=h.traceFormat||B.Text)),P=o,le=k,P===O.Off?j=void 0:j=u,m&&!cn()&&!pe()&&await ge.sendNotification(Mr.type,{value:O.toString(o)})},onError:gt.event,onClose:tn.event,onUnhandledNotification:rn.event,onDispose:sn.event,end:()=>{e.end()},dispose:()=>{if(pe())return;re=G.Disposed,sn.fire(void 0);let o=new y.ResponseError(y.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let u of te.values())u.reject(o);te=new Map,Y=new Map,Le=new Set,ue=new Kn.LinkedMap,M.func(e.dispose)&&e.dispose(),M.func(i.dispose)&&i.dispose()},listen:()=>{Te(),Ii(),re=G.Listening,i.listen(Ri)},inspect:()=>{(0,Gn.default)().console.log("inspect")}};return ge.onNotification(Xe.type,o=>{if(P===O.Off||!j)return;let u=P===O.Verbose||P===O.Compact;j.log(o.message,u?o.verbose:void 0)}),ge.onNotification(De.type,o=>{let u=Q.get(o.token);u?u(o.value):nn.fire(o)}),ge}b.createMessageConnection=xs});var it=x(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.ProgressType=c.ProgressToken=c.createMessageConnection=c.NullLogger=c.ConnectionOptions=c.ConnectionStrategy=c.AbstractMessageBuffer=c.WriteableStreamMessageWriter=c.AbstractMessageWriter=c.MessageWriter=c.ReadableStreamMessageReader=c.AbstractMessageReader=c.MessageReader=c.SharedArrayReceiverStrategy=c.SharedArraySenderStrategy=c.CancellationToken=c.CancellationTokenSource=c.Emitter=c.Event=c.Disposable=c.LRUCache=c.Touch=c.LinkedMap=c.ParameterStructures=c.NotificationType9=c.NotificationType8=c.NotificationType7=c.NotificationType6=c.NotificationType5=c.NotificationType4=c.NotificationType3=c.NotificationType2=c.NotificationType1=c.NotificationType0=c.NotificationType=c.ErrorCodes=c.ResponseError=c.RequestType9=c.RequestType8=c.RequestType7=c.RequestType6=c.RequestType5=c.RequestType4=c.RequestType3=c.RequestType2=c.RequestType1=c.RequestType0=c.RequestType=c.Message=c.RAL=void 0;c.MessageStrategy=c.CancellationStrategy=c.CancellationSenderStrategy=c.CancellationReceiverStrategy=c.ConnectionError=c.ConnectionErrors=c.LogTraceNotification=c.SetTraceNotification=c.TraceFormat=c.TraceValues=c.Trace=void 0;var T=ar();Object.defineProperty(c,"Message",{enumerable:!0,get:function(){return T.Message}});Object.defineProperty(c,"RequestType",{enumerable:!0,get:function(){return T.RequestType}});Object.defineProperty(c,"RequestType0",{enumerable:!0,get:function(){return T.RequestType0}});Object.defineProperty(c,"RequestType1",{enumerable:!0,get:function(){return T.RequestType1}});Object.defineProperty(c,"RequestType2",{enumerable:!0,get:function(){return T.RequestType2}});Object.defineProperty(c,"RequestType3",{enumerable:!0,get:function(){return T.RequestType3}});Object.defineProperty(c,"RequestType4",{enumerable:!0,get:function(){return T.RequestType4}});Object.defineProperty(c,"RequestType5",{enumerable:!0,get:function(){return T.RequestType5}});Object.defineProperty(c,"RequestType6",{enumerable:!0,get:function(){return T.RequestType6}});Object.defineProperty(c,"RequestType7",{enumerable:!0,get:function(){return T.RequestType7}});Object.defineProperty(c,"RequestType8",{enumerable:!0,get:function(){return T.RequestType8}});Object.defineProperty(c,"RequestType9",{enumerable:!0,get:function(){return T.RequestType9}});Object.defineProperty(c,"ResponseError",{enumerable:!0,get:function(){return T.ResponseError}});Object.defineProperty(c,"ErrorCodes",{enumerable:!0,get:function(){return T.ErrorCodes}});Object.defineProperty(c,"NotificationType",{enumerable:!0,get:function(){return T.NotificationType}});Object.defineProperty(c,"NotificationType0",{enumerable:!0,get:function(){return T.NotificationType0}});Object.defineProperty(c,"NotificationType1",{enumerable:!0,get:function(){return T.NotificationType1}});Object.defineProperty(c,"NotificationType2",{enumerable:!0,get:function(){return T.NotificationType2}});Object.defineProperty(c,"NotificationType3",{enumerable:!0,get:function(){return T.NotificationType3}});Object.defineProperty(c,"NotificationType4",{enumerable:!0,get:function(){return T.NotificationType4}});Object.defineProperty(c,"NotificationType5",{enumerable:!0,get:function(){return T.NotificationType5}});Object.defineProperty(c,"NotificationType6",{enumerable:!0,get:function(){return T.NotificationType6}});Object.defineProperty(c,"NotificationType7",{enumerable:!0,get:function(){return T.NotificationType7}});Object.defineProperty(c,"NotificationType8",{enumerable:!0,get:function(){return T.NotificationType8}});Object.defineProperty(c,"NotificationType9",{enumerable:!0,get:function(){return T.NotificationType9}});Object.defineProperty(c,"ParameterStructures",{enumerable:!0,get:function(){return T.ParameterStructures}});var jr=ur();Object.defineProperty(c,"LinkedMap",{enumerable:!0,get:function(){return jr.LinkedMap}});Object.defineProperty(c,"LRUCache",{enumerable:!0,get:function(){return jr.LRUCache}});Object.defineProperty(c,"Touch",{enumerable:!0,get:function(){return jr.Touch}});var Ts=Ln();Object.defineProperty(c,"Disposable",{enumerable:!0,get:function(){return Ts.Disposable}});var Zn=ve();Object.defineProperty(c,"Event",{enumerable:!0,get:function(){return Zn.Event}});Object.defineProperty(c,"Emitter",{enumerable:!0,get:function(){return Zn.Emitter}});var ei=Je();Object.defineProperty(c,"CancellationTokenSource",{enumerable:!0,get:function(){return ei.CancellationTokenSource}});Object.defineProperty(c,"CancellationToken",{enumerable:!0,get:function(){return ei.CancellationToken}});var ti=In();Object.defineProperty(c,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return ti.SharedArraySenderStrategy}});Object.defineProperty(c,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return ti.SharedArrayReceiverStrategy}});var Lr=Hn();Object.defineProperty(c,"MessageReader",{enumerable:!0,get:function(){return Lr.MessageReader}});Object.defineProperty(c,"AbstractMessageReader",{enumerable:!0,get:function(){return Lr.AbstractMessageReader}});Object.defineProperty(c,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return Lr.ReadableStreamMessageReader}});var qr=zn();Object.defineProperty(c,"MessageWriter",{enumerable:!0,get:function(){return qr.MessageWriter}});Object.defineProperty(c,"AbstractMessageWriter",{enumerable:!0,get:function(){return qr.AbstractMessageWriter}});Object.defineProperty(c,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return qr.WriteableStreamMessageWriter}});var Ps=Jn();Object.defineProperty(c,"AbstractMessageBuffer",{enumerable:!0,get:function(){return Ps.AbstractMessageBuffer}});var I=Xn();Object.defineProperty(c,"ConnectionStrategy",{enumerable:!0,get:function(){return I.ConnectionStrategy}});Object.defineProperty(c,"ConnectionOptions",{enumerable:!0,get:function(){return I.ConnectionOptions}});Object.defineProperty(c,"NullLogger",{enumerable:!0,get:function(){return I.NullLogger}});Object.defineProperty(c,"createMessageConnection",{enumerable:!0,get:function(){return I.createMessageConnection}});Object.defineProperty(c,"ProgressToken",{enumerable:!0,get:function(){return I.ProgressToken}});Object.defineProperty(c,"ProgressType",{enumerable:!0,get:function(){return I.ProgressType}});Object.defineProperty(c,"Trace",{enumerable:!0,get:function(){return I.Trace}});Object.defineProperty(c,"TraceValues",{enumerable:!0,get:function(){return I.TraceValues}});Object.defineProperty(c,"TraceFormat",{enumerable:!0,get:function(){return I.TraceFormat}});Object.defineProperty(c,"SetTraceNotification",{enumerable:!0,get:function(){return I.SetTraceNotification}});Object.defineProperty(c,"LogTraceNotification",{enumerable:!0,get:function(){return I.LogTraceNotification}});Object.defineProperty(c,"ConnectionErrors",{enumerable:!0,get:function(){return I.ConnectionErrors}});Object.defineProperty(c,"ConnectionError",{enumerable:!0,get:function(){return I.ConnectionError}});Object.defineProperty(c,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return I.CancellationReceiverStrategy}});Object.defineProperty(c,"CancellationSenderStrategy",{enumerable:!0,get:function(){return I.CancellationSenderStrategy}});Object.defineProperty(c,"CancellationStrategy",{enumerable:!0,get:function(){return I.CancellationStrategy}});Object.defineProperty(c,"MessageStrategy",{enumerable:!0,get:function(){return I.MessageStrategy}});var ks=oe();c.RAL=ks.default});var ii=x(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});var ri=require("util"),Z=it(),st=class i extends Z.AbstractMessageBuffer{constructor(e="utf-8"){super(e)}emptyBuffer(){return i.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,t){return e instanceof Buffer?e.toString(t):new ri.TextDecoder(t).decode(e)}asNative(e,t){return t===void 0?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)}};st.emptyBuffer=Buffer.allocUnsafe(0);var Ir=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),Z.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),Z.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),Z.Disposable.create(()=>this.stream.off("end",e))}onData(e){return this.stream.on("data",e),Z.Disposable.create(()=>this.stream.off("data",e))}},Vr=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),Z.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),Z.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),Z.Disposable.create(()=>this.stream.off("end",e))}write(e,t){return new Promise((r,n)=>{let s=a=>{a==null?r():n(a)};typeof e=="string"?this.stream.write(e,t,s):this.stream.write(e,s)})}end(){this.stream.end()}},ni=Object.freeze({messageBuffer:Object.freeze({create:i=>new st(i)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(i,e)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(i,void 0,0),e.charset))}catch(t){return Promise.reject(t)}}}),decoder:Object.freeze({name:"application/json",decode:(i,e)=>{try{return i instanceof Buffer?Promise.resolve(JSON.parse(i.toString(e.charset))):Promise.resolve(JSON.parse(new ri.TextDecoder(e.charset).decode(i)))}catch(t){return Promise.reject(t)}}})}),stream:Object.freeze({asReadableStream:i=>new Ir(i),asWritableStream:i=>new Vr(i)}),console,timer:Object.freeze({setTimeout(i,e,...t){let r=setTimeout(i,e,...t);return{dispose:()=>clearTimeout(r)}},setImmediate(i,...e){let t=setImmediate(i,...e);return{dispose:()=>clearImmediate(t)}},setInterval(i,e,...t){let r=setInterval(i,e,...t);return{dispose:()=>clearInterval(r)}}})});function Hr(){return ni}(function(i){function e(){Z.RAL.install(ni)}i.install=e})(Hr||(Hr={}));Fr.default=Hr});var ai=x(v=>{"use strict";var Rs=v&&v.__createBinding||(Object.create?(function(i,e,t,r){r===void 0&&(r=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(i,r,n)}):(function(i,e,t,r){r===void 0&&(r=t),i[r]=e[t]})),As=v&&v.__exportStar||function(i,e){for(var t in i)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Rs(e,i,t)};Object.defineProperty(v,"__esModule",{value:!0});v.createMessageConnection=v.createServerSocketTransport=v.createClientSocketTransport=v.createServerPipeTransport=v.createClientPipeTransport=v.generateRandomPipeName=v.StreamMessageWriter=v.StreamMessageReader=v.SocketMessageWriter=v.SocketMessageReader=v.PortMessageWriter=v.PortMessageReader=v.IPCMessageWriter=v.IPCMessageReader=void 0;var Ee=ii();Ee.default.install();var si=require("path"),Ns=require("os"),Ms=require("crypto"),ct=require("net"),U=it();As(it(),v);var Wr=class extends U.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose())}listen(e){return this.process.on("message",e),U.Disposable.create(()=>this.process.off("message",e))}};v.IPCMessageReader=Wr;var Br=class extends U.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose)}write(e){try{return typeof this.process.send=="function"&&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(){}};v.IPCMessageWriter=Br;var Ur=class extends U.AbstractMessageReader{constructor(e){super(),this.onData=new U.Emitter,e.on("close",()=>this.fireClose),e.on("error",t=>this.fireError(t)),e.on("message",t=>{this.onData.fire(t)})}listen(e){return this.onData.event(e)}};v.PortMessageReader=Ur;var zr=class extends U.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on("close",()=>this.fireClose()),e.on("error",t=>this.fireError(t))}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(){}};v.PortMessageWriter=zr;var he=class extends U.ReadableStreamMessageReader{constructor(e,t="utf-8"){super((0,Ee.default)().stream.asReadableStream(e),t)}};v.SocketMessageReader=he;var fe=class extends U.WriteableStreamMessageWriter{constructor(e,t){super((0,Ee.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};v.SocketMessageWriter=fe;var ot=class extends U.ReadableStreamMessageReader{constructor(e,t){super((0,Ee.default)().stream.asReadableStream(e),t)}};v.StreamMessageReader=ot;var at=class extends U.WriteableStreamMessageWriter{constructor(e,t){super((0,Ee.default)().stream.asWritableStream(e),t)}};v.StreamMessageWriter=at;var oi=process.env.XDG_RUNTIME_DIR,Ds=new Map([["linux",107],["darwin",103]]);function $s(){let i=(0,Ms.randomBytes)(21).toString("hex");if(process.platform==="win32")return`\\\\.\\pipe\\vscode-jsonrpc-${i}-sock`;let e;oi?e=si.join(oi,`vscode-ipc-${i}.sock`):e=si.join(Ns.tmpdir(),`vscode-${i}.sock`);let t=Ds.get(process.platform);return t!==void 0&&e.length>t&&(0,Ee.default)().console.warn(`WARNING: IPC handle "${e}" is longer than ${t} characters.`),e}v.generateRandomPipeName=$s;function js(i,e="utf-8"){let t,r=new Promise((n,s)=>{t=n});return new Promise((n,s)=>{let a=(0,ct.createServer)(d=>{a.close(),t([new he(d,e),new fe(d,e)])});a.on("error",s),a.listen(i,()=>{a.removeListener("error",s),n({onConnected:()=>r})})})}v.createClientPipeTransport=js;function Ls(i,e="utf-8"){let t=(0,ct.createConnection)(i);return[new he(t,e),new fe(t,e)]}v.createServerPipeTransport=Ls;function qs(i,e="utf-8"){let t,r=new Promise((n,s)=>{t=n});return new Promise((n,s)=>{let a=(0,ct.createServer)(d=>{a.close(),t([new he(d,e),new fe(d,e)])});a.on("error",s),a.listen(i,"127.0.0.1",()=>{a.removeListener("error",s),n({onConnected:()=>r})})})}v.createClientSocketTransport=qs;function Is(i,e="utf-8"){let t=(0,ct.createConnection)(i,"127.0.0.1");return[new he(t,e),new fe(t,e)]}v.createServerSocketTransport=Is;function Vs(i){let e=i;return e.read!==void 0&&e.addListener!==void 0}function Hs(i){let e=i;return e.write!==void 0&&e.addListener!==void 0}function Fs(i,e,t,r){t||(t=U.NullLogger);let n=Vs(i)?new ot(i):i,s=Hs(e)?new at(e):e;return U.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,U.createMessageConnection)(n,s,t,r)}v.createMessageConnection=Fs});var Jr=x((qo,ci)=>{"use strict";ci.exports=ai()});var li=x(lt=>{"use strict";Object.defineProperty(lt,"__esModule",{value:!0});lt.Devsense=void 0;var ee=Jr(),ui;(function(i){var e;(function(t){var r;(function(n){n.devsenseLoadStatus=new ee.NotificationType("devsense/loadStatus"),n.workspaceDiagnostics=new ee.RequestType("workspace/diagnostics"),n.isBlacklisted=new ee.RequestType("devsense/license/isblacklisted"),n.devsenseListProjectFiles=new ee.RequestType("devsense/project/listDocuments"),n.initialize=new ee.RequestType("initialize"),n.windowShowMessage=new ee.NotificationType("window/showMessage"),n.windowLogMessage=new ee.NotificationType("window/logMessage"),n.telemetryEvent=new ee.NotificationType("telemetry/event"),n.textDocumentPublishDiagnostics=new ee.NotificationType("textDocument/publishDiagnostics")})(r=t.Protocol||(t.Protocol={}))})(e=i.LanguageServer||(i.LanguageServer={}))})(ui||(lt.Devsense=ui={}))});var _i=x((Ho,Kr)=>{"use strict";var Ws=Object.create,dt=Object.defineProperty,Bs=Object.getOwnPropertyDescriptor,Us=Object.getOwnPropertyNames,zs=Object.getPrototypeOf,Js=Object.prototype.hasOwnProperty,Gs=(i,e)=>{for(var t in e)dt(i,t,{get:e[t],enumerable:!0})},pi=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Us(e))!Js.call(i,n)&&n!==t&&dt(i,n,{get:()=>e[n],enumerable:!(r=Bs(e,n))||r.enumerable});return i},mi=(i,e,t)=>(t=i!=null?Ws(zs(i)):{},pi(e||!i||!i.__esModule?dt(t,"default",{value:i,enumerable:!0}):t,i)),Ks=i=>pi(dt({},"__esModule",{value:!0}),i),gi={};Gs(gi,{Devsense:()=>Gr});Kr.exports=Ks(gi);var di=require("os"),hi=mi(require("fs")),fi=mi(require("path")),Qs=require("child_process"),Gr;(i=>{let e;(t=>{let r;(n=>{n.FileName="devsense.php.ls";function s(){let a=`devsense-php-ls-${(0,di.platform)()}-${(0,di.arch)()}`;for(let d of["..","../..","../node_modules","node_modules"]){let l=fi.resolve(__dirname,d,a);if(hi.existsSync(l))for(let p of[n.FileName,`${n.FileName}.exe`]){let f=fi.normalize(`${l}/dist/${p}`);if(hi.existsSync(f))return f}}}n.languageServerPath=s})(r=t.LS||={})})(e=i.PHP||={})})(Gr||={});if(require.main===Kr){let i=process.argv.slice(2);(0,Qs.spawn)(Gr.PHP.LS.languageServerPath()??"",i,{stdio:"inherit",shell:!0}).on("exit",e=>{process.exit(e??1)})}});var Ci=x((Xo,Zs)=>{Zs.exports={name:"devsense-php-mcp",version:"1.0.19264",description:"Devsense PHP MCP Server",main:"dist/index.js",bin:{"devsense-php-mcp":"dist/index.js"},repository:{type:"git",url:"git+https://github.com/DEVSENSE/devsense-php-mcp.git"},"clean-package":{remove:["clean-package","scripts","devDependencies"]},scripts:{start:"npx tsx src/index.ts",prepack:"clean-package",postpack:"clean-package restore",build:"node build.js"},author:"DEVSENSE",license:"ISC",keywords:["cli","php","mcp","agent","ai"],dependencies:{commander:"^13.1.0","devsense-php-ls":"^1.0.19264","devsense-php-ls-node":"^1.0.19264",glob:"^11.0.1",minimatch:"^10.0.1","vscode-jsonrpc":"^8.2.1"},devDependencies:{"@commander-js/extra-typings":"^13.1.0","@types/node":"^22.13.17","clean-package":"^2.2.0",esbuild:"^0.25.2","ts-loader":"^9.5.2","ts-node":"^10.9.2",tsx:"^4.19.3",typescript:"^5.8.2"}}});var ke=_e(require("readline")),bt=["-","\\","|","/"];function gn(i){let e=Math.floor(i/1e3),t=Math.floor(e/60),r=e%60;return t>0?`${t}m ${r}s`:`${r}s`}function _n(){let i=Date.now(),e=!1;return{update(t,r){if(e)return;let s=Date.now()-i,d=(t>0?s/t:0)*r,p=`${bt[Math.floor(t*bt.length)%bt.length]} ${t}/${r} completed | \u23F1\uFE0F ${gn(s)} elapsed | \u231B ~${gn(d)} total`;ke.default.clearLine(process.stdout,0),ke.default.cursorTo(process.stdout,0),process.stdout.write(p)},done(){e||(ke.default.clearLine(process.stdout,0),ke.default.cursorTo(process.stdout,0))},dispose(){this.done(),e=!0}}}var Rn=_e(kn(),1),{program:An,createCommand:lo,createArgument:ho,createOption:fo,CommanderError:po,InvalidArgumentError:mo,InvalidOptionArgumentError:go,Command:_o,Argument:yo,Option:bo,Help:vo}=Rn.default;var yi=require("child_process"),bi=_e(require("path")),q=_e(Jr());var ut=class{constructor(){this.listeners=[]}on(e){return this.listeners.push(e),{[Symbol.dispose]:()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}}fire(e){for(let t of this.listeners)try{t(e)}catch(r){console.error(r)}}};var vi=_e(li()),wi=_e(_i());var ft=require("fs");function Qr(i,e){let t=i.line-e.line;return t==0&&(t=i.character-e.character),t}var Yr=require("url"),ht=class i{constructor(e,t,r,n){this.uri=e;this.content=t;this.langId=r;this.version=n;this.linebreaks=i.resolveEol(t)}get lineCount(){return this.linebreaks.length+1}static resolveEol(e){let t=[],r=0;for(;r<e.length;){var n=e.indexOf(`
|
|
58
|
+
`,r)+1;if(n>0)t.push(n),r=n;else break}return t}static fromUri(e,t){try{let r=(0,Yr.fileURLToPath)(e);return new i(e,(0,ft.readFileSync)(r,{encoding:"utf8"}),t,0)}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`Failed to process ${e}. Error: ${n}`)}}save(e){try{let t=(0,Yr.fileURLToPath)(e);(0,ft.writeFileSync)(t,this.content,{encoding:"utf8"})}catch(t){let r=t instanceof Error?t.message:String(t);throw new Error(`Failed to save to ${e}: ${r}`)}}getLineSpan(e){if(e<0||e>=this.lineCount)return;let t=e<=0?0:this.linebreaks[e-1],r=e>=this.linebreaks.length?this.content.length:this.linebreaks[e];return{start:t,length:r-t}}toPosition(e){var t=this.getLineSpan(e.line);return t==null?-1:t.start+Math.min(e.character,t.length)}toSpan(e){let t=this.toPosition(e.start),r=this.toPosition(e.end);return{start:t,length:r-t}}withEdits(e){if(!e||e.length==0)return this;e.sort((s,a)=>Qr(a.range.start,s.range.start));let t=this.content,r;for(let s of e)if(!(r&&Qr(s.range.end,r.range.start)>0)){var n=this.toSpan(s.range);t=t.substring(0,n.start)+s.newText+t.substring(n.start+n.length),r=s}return new i(this.uri,t,this.langId,this.version+1)}};var Ys=wi.Devsense.PHP.LS,Xs=vi.Devsense.LanguageServer.Protocol,J;(f=>(f.devsenseLoadStatus=new q.NotificationType("devsense/loadStatus"),f.devsenseRangeFormat=new q.RequestType("devsense/phpRangeFormatting"),f.initialize=new q.RequestType("initialize"),f.workspaceDiagnostics=new q.RequestType("workspace/diagnostics"),f.windowShowMessage=new q.NotificationType("window/showMessage"),f.windowLogMessage=new q.NotificationType("window/logMessage"),f.telemetryEvent=new q.NotificationType("telemetry/event"),f.textDocumentPublishDiagnostics=new q.NotificationType("textDocument/publishDiagnostics"),f.textDocumentDidOpen=new q.NotificationType("textDocument/didOpen"),f.textDocumentDidClose=new q.NotificationType("textDocument/didClose")))(J||={});var Xr;(e=>{function i(t){return{uri:t.uri,languageId:t.langId,version:0,text:t.content}}e.toTextDocumentItem=i})(Xr||={});var pt=class{constructor(e,t){this.log=e;this.documents=new Map;this.loadStatusEvent=new ut;let r=["-mcp","-mcp-server-port",t?.toString()??9101 .toString()],n=Ys.languageServerPath(),s=(0,yi.spawn)(n??bi.default.resolve(n),r,{shell:!0,stdio:["pipe","pipe","pipe","pipe"]});s.stdout.on("data",a=>{}),s.stderr.on("data",a=>{this.log.error(new Error(a.toString()))}),this.connection=q.createMessageConnection(new q.StreamMessageReader(s.stdout),new q.StreamMessageWriter(s.stdin)),this.connection.onNotification(J.devsenseLoadStatus,async a=>{this.loadStatusEvent.fire(a)}),this.connection.onNotification(J.windowShowMessage,a=>{this.log.info(a.message)}),this.connection.onNotification(J.windowLogMessage,a=>{this.log.info(a.message)}),this.connection.onNotification(J.telemetryEvent,a=>{}),this.connection.onNotification(J.textDocumentPublishDiagnostics,a=>{}),this.connection.onNotification("workspace/codeLens/refresh",a=>{}),this.connection.onNotification("workspace/inlayHint/refresh",a=>{}),this.connection.listen()}get MCPServerPort(){return this.initresponse?.capabilities?.mcpServerPort}onLoadStatus(e){return this.loadStatusEvent.on(e)}async diagnostics(){return await this.connection.sendRequest(J.workspaceDiagnostics,null)}async listDocuments(){return await this.connection.sendRequest(Xs.devsenseListProjectFiles,null)}async openDocument(e,t){var r=ht.fromUri(e,t);return await this.connection.sendNotification(J.textDocumentDidOpen,{textDocument:Xr.toTextDocumentItem(r)}),this.documents.set(r.uri,r),r}async closeDocument(e){var t=this.documents.get(e);if(t!=null)return await this.connection.sendNotification(J.textDocumentDidClose,{textDocument:Xr.toTextDocumentItem(t)}),this.documents.delete(t.uri),t}async rangeFormat(e,t,r){let n={htmlEdits:r??[],textDocument:{uri:e.uri},range:t??{start:{line:0,character:0},end:{line:e.lineCount-1,character:Number.MAX_SAFE_INTEGER}}},s=await this.connection.sendRequest(J.devsenseRangeFormat,n),a=e.withEdits(s);return this.documents.set(a.uri,a),a}async start(e,t,r,n="8.5"){this.initresponse=await this.connection.sendRequest(J.initialize,{processId:process.pid,rootUri:`file://${e}`,capabilities:{},initializationOptions:{0:{},clientFeatures:[J.devsenseLoadStatus.method],"files.associations":{"*.php":"php"},"files.exclude":Object.assign({},(r??[]).map(s=>({[s]:!0}))),"files.insertFinalNewline":!0,"files.eol":`
|
|
59
|
+
`,"search.exclude":{},"php.codeActions.enabled":!1,"phpTools.language":"en","phpTools.heartBeatInterval":50,"php.problems.exclude":{},"php.problems.scope":"all","php.stubs":["all"],"php.version":n,"php.workspace.shortOpenTag":!1,"php.cache.enableOnlineCache":!1,"php.codeLens.enabled":!1,"php.sortUses.caseSensitive":!1}})}async exit(){await this.connection.sendNotification("exit"),this.connection.end()}};var mt=class{constructor(e){this.verbose=e}notimplemented(e){process.stderr.write(`${e} is not implemented
|
|
60
|
+
`)}info(e){this.verbose&&process.stdout.write(`[${new Date().toISOString()}] ${e}
|
|
61
|
+
`)}error(e){e&&e.message&&process.stderr.write(`${e.message}
|
|
62
|
+
`)}};async function eo(i){await An.version(Ci().version).name("devsense-php-mcp").description("PHP MCP Server").showHelpAfterError(!0).option("-r, --root <path>","Root directory, to which are other parameters relative. Current working directory by default.").option("-x, --exclude <path...>","Files or directories to be excluded from indexing.").option("-p, --mcp-port <N>","Specify the MCP server port number.",e=>parseInt(e),9101).argument("[path...]","Files or directories to be indexed.").action(async(e,t)=>{let r=new mt(!0),n=t.root??process.cwd(),s=new pt(r,t.mcpPort),a=_n(),d=new Promise(l=>{let p=s.onLoadStatus(f=>{if(!f.isLoadPending&&!f.pendingAnalysis&&!f.pendingParse)l(!0);else{let _=f.totalFiles*2,A=(f.pendingAnalysis??0)+(f.pendingParse??0);a.update(_-A,_)}})});await s.start(n,e??["**/*.php"],t.exclude,"8.5"),s.MCPServerPort?r.info(`MCP Server running on 127.0.0.1:${s.MCPServerPort} ...`):(r.error(new Error("Failed to start MCP Server")),await s.exit(),process.exit(1)),await d,r.info("Press Ctrl+C to exit."),process.on("SIGINT",async()=>{r.info("Received Ctrl+C, exiting..."),await s.exit(),process.exit(0)})}).parseAsync(i)}eo(process.argv);
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "devsense-php-mcp",
|
|
3
|
+
"version": "1.0.19264",
|
|
4
|
+
"description": "Devsense PHP MCP Server",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"devsense-php-mcp": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/DEVSENSE/devsense-php-mcp.git"
|
|
12
|
+
},
|
|
13
|
+
"author": "DEVSENSE",
|
|
14
|
+
"license": "ISC",
|
|
15
|
+
"keywords": [
|
|
16
|
+
"cli",
|
|
17
|
+
"php",
|
|
18
|
+
"mcp",
|
|
19
|
+
"agent",
|
|
20
|
+
"ai"
|
|
21
|
+
],
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"commander": "^13.1.0",
|
|
24
|
+
"devsense-php-ls": "^1.0.19264",
|
|
25
|
+
"devsense-php-ls-node": "^1.0.19264",
|
|
26
|
+
"glob": "^11.0.1",
|
|
27
|
+
"minimatch": "^10.0.1",
|
|
28
|
+
"vscode-jsonrpc": "^8.2.1"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/update.ps1
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# update dependencies to latest version
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
npm i devsense-php-ls-node@latest
|
|
5
|
+
npm i devsense-php-ls@latest
|
|
6
|
+
|
|
7
|
+
# update package.json version number to match the latest installed versions of devsense-php-ls-node and devsense-php-ls
|
|
8
|
+
npm version $(npm show devsense-php-ls version) --no-git-tag-version
|