{
    "name": "phptools-vscode",
    "displayName": "PHP",
    "description": "All-in-One PHP support - IntelliSense, Debug, Formatter, Code Lenses, Code Fixes, Linting, Refactoring, PHPUnit Tests, Web Server, and more.",
    "icon": "icons/phptools-icon.png",
    "version": "1.45.15061",
    "qna": "https://community.devsense.com/",
    "publisher": "DEVSENSE",
    "preview": false,
    "license": "LicenseRef-LICENSE",
    "galleryBanner": {
        "color": "#b9dcf4",
        "theme": "light"
    },
    "repository": {
        "type": "git",
        "url": "https://github.com/DEVSENSE/phptools-docs"
    },
    "homepage": "https://www.devsense.com/",
    "engines": {
        "vscode": "^1.70.0",
        "node": "^8.11.0"
    },
    "categories": [
        "Programming Languages",
        "Debuggers",
        "Snippets",
        "Linters",
        "Formatters",
        "Testing"
    ],
    "keywords": [
        "php",
        "debug",
        "autocomplete",
        "refactoring",
        "testing",
        "completion",
        "codeactions",
        "format",
        "IntelliSense",
        "Xdebug",
        "test",
        "phpunit",
        "composer",
        "profiler",
        "server",
        "built-in"
    ],
    "extensionPack": [
        "devsense.intelli-php-vscode",
        "devsense.composer-php-vscode",
        "devsense.profiler-php-vscode"
    ],
    "activationEvents": [
        "onDebugResolve:php",
        "onDebugDynamicConfigurations:php",
        "onLanguage:php",
        "workspaceContains:**/*.php",
        "workspaceContains:phpunit.*",
        "onCommand:phptools.activate",
        "onCommand:phptools.todo.search",
        "onCommand:phptools.debug.startWithStopOnEntry",
        "onCommand:phptools.debug.startListen",
        "onCommand:phptools.debug.debugScript",
        "onCommand:phptools.debug.runScript"
    ],
    "main": "./out/src/extension",
    "extensionKind": [
        "workspace"
    ],
    "contributes": {
        "languages": [
            {
                "id": "php",
                "aliases": [
                    "PHP",
                    "php"
                ]
            },
            {
                "id": "phpx",
                "aliases": [
                    "PHPX",
                    "phpx"
                ],
                "configuration": "./syntaxes/phpx.configuration.json"
            }
        ],
        "grammars": [
            {
                "language": "phpx",
                "scopeName": "source.phpx",
                "path": "./syntaxes/phpx.json"
            },
            {
                "scopeName": "html-blade.injection",
                "path": "./syntaxes/blade.injection.json",
                "injectTo": [
                    "text.html.php"
                ],
                "embeddedLanguages": {
                    "meta.embedded.inline.phpx": "phpx",
                    "meta.embedded.block.phpx": "phpx"
                }
            }
        ],
        "breakpoints": [
            {
                "language": "php"
            }
        ],
        "configuration": [
            {
                "title": "PHP",
                "properties": {
                    "php.executablePath": {
                        "description": "Default path to the 'php' executable.",
                        "type": [
                            "string",
                            "array",
                            "null"
                        ],
                        "scope": "application"
                    },
                    "php.format.autoimport": {
                        "markdownDeprecationMessage": "Use `#php.completion.autoimport#` instead."
                    },
                    "php.format.autoimport-docblock": {
                        "markdownDeprecationMessage": "Use `#php.completion.autoimport-docblock#` instead."
                    },
                    "php.completion.parameters": {
                        "markdownDescription": "Automatically insert parentheses `()` after completion of functions, and trigger parameter hints.",
                        "type": "string",
                        "default": "parentheses",
                        "enum": [
                            "none",
                            "parentheses",
                            "parameters"
                        ],
                        "markdownEnumDescriptions": [
                            "Do not insert parentheses and do not trigger parameters completion.",
                            "Insert parentheses `()` after the function completion and place cursor inside them.",
                            "Insert parentheses and parameters snippet."
                        ],
                        "scope": "window"
                    },
                    "php.completion.showNamespaceLabel": {
                        "type": "boolean",
                        "default": true,
                        "markdownDescription": "Show item namespace next to the completion item.",
                        "scope": "window"
                    },
                    "php.completion.autoimport": {
                        "markdownDescription": "Completion of types, functions, and constants outside of the current namespace scope.",
                        "type": "string",
                        "default": "auto-import",
                        "enum": [
                            "auto-import",
                            "fqn",
                            "none",
                            "hide"
                        ],
                        "markdownEnumDescriptions": [
                            "Add corresponding `use` alias upon completion.",
                            "Fully qualifies the name upon completion.",
                            "Inserts the name as it is, without importing the alias.",
                            "Do not show inaccessible symbols in code completion."
                        ],
                        "scope": "window"
                    },
                    "php.completion.autoimport-docblock": {
                        "markdownDescription": "Completion of type names outside of the current namespace scope, when completing inside a PHP doc block (e.g. in `@param` tag).",
                        "type": "string",
                        "default": "fqn",
                        "enum": [
                            "fqn",
                            "auto-import",
                            "none",
                            "hide",
                            "default"
                        ],
                        "markdownEnumDescriptions": [
                            "Fully qualifies the name upon completion.",
                            "Add corresponding `use` alias upon completion.",
                            "Inserts the name as it is, without importing the alias.",
                            "Do not show inaccessible types in code completion.",
                            "Use the setting from `#php.completion.autoimport#` option."
                        ],
                        "scope": "window"
                    },
                    "php.completion.namingConvention": {
                        "type": "string",
                        "markdownDescription": "Naming convention for generated member names.",
                        "enum": [
                            "camelCase",
                            "CamelCase",
                            "snake_case"
                        ],
                        "default": "camelCase",
                        "scope": "window"
                    },
                    "php.completion.getterSnippet": {
                        "type": "string",
                        "markdownDescription": "Code to be placed inside the getter function. This is inserted using code action over a private class properties to generate `getter` function.\n\nBy default it's similar to:\n\n```php\nreturn {PROPERTY};\n```\nUse variables:\n- `{PROPERTY}` (`$this->property` or `self::property`)\n- `{THIS}` (`$this` or ``)\n- `{NAME}` (the property name without `$`).",
                        "scope": "window"
                    },
                    "php.completion.setterSnippet": {
                        "type": "string",
                        "markdownDescription": "Code to be placed inside the setter function. This is inserted using code action over a private class properties to generate `setter` function.\n\nBy default it's similar to:\n\n```php\n{PROPERTY} = ${NAME};\nreturn {THIS};\n```\nUse variables:\n- `{PROPERTY}` (`$this->property` or `self::property`)\n- `{THIS}` (`$this` or ``)\n- `{NAME}` (the property name without `$`).",
                        "scope": "window"
                    },
                    "php.inlayHints.insertOnDoubleClick": {
                        "type": "boolean",
                        "markdownDescription": "%php.inlayHints.insertOnDoubleClick%",
                        "scope": "application",
                        "default": true
                    },
                    "php.inlayHints.parameters.enabled": {
                        "type": "boolean",
                        "default": false,
                        "markdownDescription": "%php.inlayHints.parameters.enabled%",
                        "scope": "window"
                    },
                    "php.inlayHints.parameters.suppressNameMatchingValue": {
                        "type": "boolean",
                        "default": false,
                        "markdownDescription": "%php.inlayHints.parameters.suppressNameMatchingValue%",
                        "scope": "window"
                    },
                    "php.inlayHints.parameters.byReference": {
                        "type": "boolean",
                        "default": false,
                        "markdownDescription": "%php.inlayHints.parameters.byReference%",
                        "scope": "window"
                    },
                    "php.inlayHints.types.return": {
                        "type": [
                            "boolean",
                            "string"
                        ],
                        "enum": [
                            true,
                            false,
                            "named"
                        ],
                        "enumItemLabels": [
                            "Enable",
                            "Disable",
                            "Named Functions Only"
                        ],
                        "markdownEnumDescriptions": [
                            "%php.inlayHints.types.return.true%",
                            "%php.inlayHints.types.return.false%",
                            "%php.inlayHints.types.return.named%"
                        ],
                        "default": false,
                        "markdownDescription": "%php.inlayHints.types.return%",
                        "scope": "window"
                    },
                    "php.inlayHints.types.variable": {
                        "type": "boolean",
                        "default": false,
                        "markdownDescription": "%php.inlayHints.types.variable%",
                        "scope": "window"
                    },
                    "php.inlayHints.types.suppressVariableFromLiteral": {
                        "type": "boolean",
                        "default": true,
                        "markdownDescription": "%php.inlayHints.types.suppressVariableFromLiteral%",
                        "scope": "window"
                    },
                    "php.docblock.packageSnippet": {
                        "type": [
                            "object",
                            "boolean"
                        ],
                        "default": {},
                        "examples": [
                            {
                                "enable": true,
                                "@author": "${name:John}"
                            }
                        ],
                        "markdownDescription": "DocBlock snippet at file beginning. Example:\n```json\n\"php.docblock.packageSnippet\": {\n  \"@author\": \"${name:John}\",\n  \"@copyright\": \"(c) $CURRENT_YEAR\"\n}\n```"
                    },
                    "php.docblock.classSnippet": {
                        "type": [
                            "object",
                            "boolean"
                        ],
                        "default": {},
                        "examples": [
                            {
                                "enable": true,
                                "@author": "${name:John}"
                            }
                        ],
                        "markdownDescription": "DocBlock snippet above a class/interface/trait/enum. Example:\n```json\n\"php.docblock.classSnippet\": {\n  \"@author\": \"${name:John}\",\n  \"@copyright\": \"(c) $CURRENT_YEAR\"}\n```"
                    },
                    "php.docblock.propertySnippet": {
                        "type": [
                            "object",
                            "boolean"
                        ],
                        "default": {},
                        "examples": [
                            {
                                "enable": true,
                                "@author": "${name:John}"
                            }
                        ],
                        "markdownDescription": "DocBlock snippet above a property. Example:\n```json\n\"php.docblock.propertySnippet\": {\n  \"@author\": \"${name:John}\"\n}\n```"
                    },
                    "php.docblock.functionSnippet": {
                        "type": [
                            "object",
                            "boolean"
                        ],
                        "default": {},
                        "examples": [
                            {
                                "enable": true,
                                "@author": "${name:John}",
                                "@throws": false
                            }
                        ],
                        "markdownDescription": "DocBlock snippet above a function. Example:\n```json\n\"php.docblock.functionSnippet\": {\n  \"@author\": \"${name:John}\",\n  \"@throws\": false\n}\n```"
                    },
                    "php.docblock.variableSnippet": {
                        "type": [
                            "object",
                            "boolean"
                        ],
                        "default": {},
                        "examples": [
                            {
                                "enable": true,
                                "singleline": true
                            }
                        ],
                        "markdownDescription": "DocBlock snippet abve a variable assignment. Example:\n```json\n\"php.docblock.variableSnippet\": {\n  \"singleline\": true\n}\n```"
                    },
                    "php.docblock.getterSetterSnippet": {
                        "type": [
                            "object",
                            "boolean"
                        ],
                        "default": {},
                        "examples": [
                            {
                                "enable": true,
                                "@author": "${name:John}",
                                "summary": false
                            }
                        ],
                        "markdownDescription": "Snippet for DocBlocks generated using getter/setter code action"
                    },
                    "php.hover.parameters": {
                        "type": "boolean",
                        "default": true,
                        "markdownDescription": "Show function parameters description in the mouse hover tool-tip.",
                        "scope": "window"
                    },
                    "php.hover.parameters.fullname": {
                        "type": "boolean",
                        "default": false,
                        "markdownDescription": "Show fully qualified parameter type name in function tool-tip.",
                        "scope": "window"
                    },
                    "php.hover.documentation": {
                        "type": "boolean",
                        "default": true,
                        "markdownDescription": "If available, show symbol documentation link in the mouse hover tool-tip.",
                        "scope": "window"
                    },
                    "php.hover.fullname": {
                        "type": "boolean",
                        "default": false,
                        "markdownDescription": "Show full name of symbols, including the full class name.",
                        "scope": "window"
                    },
                    "php.hover.containingClass": {
                        "type": "boolean",
                        "default": true,
                        "markdownDescription": "Show containing class name of class members.",
                        "scope": "window"
                    },
                    "php.linkedEditing.variables": {
                        "markdownDescription": "When `#editor.linkedEditing#` setting is enabled, this option specifies whether to apply linked edits to local variable names.",
                        "default": false,
                        "type": "boolean",
                        "scope": "window"
                    },
                    "php.workspace.includePath": {
                        "description": "Paths containing additional PHP declarations. Separated with semi-colon.",
                        "type": [
                            "string",
                            "array"
                        ],
                        "scope": "window"
                    },
                    "php.workspace.shortOpenTag": {
                        "markdownDescription": "Enable or disable parsing inside `<?` tag. Default value is `\"auto\"` so short open tags will be _enabled_ if there is no `<?xml` tag.",
                        "type": "string",
                        "scope": "window",
                        "default": "auto",
                        "enum": [
                            "auto",
                            "true",
                            "false"
                        ],
                        "markdownEnumDescriptions": [
                            "%php.workspace.shortOpenTag.auto%",
                            "%php.workspace.shortOpenTag.true%",
                            "%php.workspace.shortOpenTag.false%"
                        ]
                    },
                    "php.executables": {
                        "markdownDescription": "Defines PHP profiles as a user defined name and a `php` binary path.\nExample: `\"php.executables\": { \"v7.4\": \"/usr/bin/php7.4\" }`",
                        "examples": [
                            {
                                "v7.4": "/usr/bin/php7.4"
                            }
                        ],
                        "type": "object",
                        "scope": "application"
                    },
                    "php.version": {
                        "markdownDescription": "A PHP version or a profile name defined in `#php.executables#`.",
                        "type": "string",
                        "scope": "window"
                    },
                    "php.codeLens.enabled": {
                        "description": "Enable/disable code lenses in PHP files.",
                        "type": "boolean",
                        "default": true,
                        "scope": "application"
                    },
                    "php.problems.scope": {
                        "markdownDescription": "What workspace folders get analyzed for problems.\n\nDefault is `\"opened\"` which gets problems for opened documents only.\n\n_Note, **fatal errors** and **parse errors** are always reported across the entire workspace._",
                        "type": "string",
                        "default": "opened",
                        "enum": [
                            "none",
                            "opened",
                            "all"
                        ],
                        "markdownEnumDescriptions": [
                            "%php.problems.scope.none%",
                            "%php.problems.scope.opened%",
                            "%php.problems.scope.all%"
                        ],
                        "scope": "window"
                    },
                    "php.problems.exclude": {
                        "markdownDescription": "Path patterns to be ignored from reporting problems. Value can be set to `true` to ignore all problems or a comma separated list of specific problem codes.\n\n_See [Problems Configuration](https://docs.devsense.com/vscode/problems#phpproblemsexclude) for more details._\n\n\n_Example:_\n```json\n\"php.problems.exclude\": {\n  \"/\": [406],\n  \"vendor/\": true,\n}\n```",
                        "type": [
                            "object",
                            "null"
                        ],
                        "examples": [
                            {
                                "/": [
                                    406
                                ],
                                "vendor/": true
                            }
                        ],
                        "default": null,
                        "scope": "window"
                    },
                    "php.problems.excludeGitIgnore": {
                        "markdownDescription": "Do not report problems in files specified in `.gitignore` file.",
                        "type": "boolean",
                        "default": false,
                        "scope": "window"
                    },
                    "php.problems.workspaceAnalysis": {
                        "description": "Deprecated. Enable full workspace-wide analysis. Enabled by default.",
                        "type": [
                            "boolean"
                        ],
                        "enum": [
                            true,
                            false
                        ],
                        "default": true,
                        "scope": "window",
                        "markdownDeprecationMessage": "Use `#php.problems.scope#` instead."
                    },
                    "php.cache.enableOnlineCache": {
                        "markdownDescription": "For better performance, IntelliSense for _composer_ packages may be fetched from a cache server.\n\nThis improves workspace indexing after installing or updating composer packages.",
                        "type": "boolean",
                        "default": true,
                        "scope": "machine"
                    },
                    "php.cache.location": {
                        "markdownDescription": "Full path for local IntelliSense cache for _composer_ packages.",
                        "type": "string",
                        "default": null,
                        "scope": "machine"
                    },
                    "php.stubs": {
                        "markdownDescription": "Array of extension names to be included in the built-in IntelliSense, the localized manual, and code analysis. By default all the standard PHP extensions are included.\n\nExamples:\n\n```json\n{\n  \"php.stubs\": [\"*\", \"com\", \"pcntl\", \"xdebug\"]\n}\n```\n\nList of possible values:\n\n- `\"*\"` includes the standard set of extensions.\n- `\"all\"` includes all the available extensions.\n- `com`\n- `pcntl`\n- `zip`\n- `zlib`\n- ...",
                        "default": [
                            "*"
                        ],
                        "type": "array",
                        "scope": "window",
                        "examples": [
                            [
                                "*",
                                "com"
                            ],
                            [
                                "all"
                            ]
                        ]
                    },
                    "php.debug.port": {
                        "markdownDescription": "Default Xdebug port or array of ports. This value is used when `port` is not specified in `launch.json` settings. Usually 9000 or 9003.",
                        "default": [
                            9003,
                            9000
                        ],
                        "type": [
                            "array",
                            "integer"
                        ],
                        "scope": "window"
                    },
                    "phpTools.license": {
                        "markdownDeprecationMessage": "This setting has been deprecated, you may delete it. Use _Command Palette_, the command `PHP Tools: Activate License`.",
                        "description": "The license fingerprint. (deprecated)",
                        "type": [
                            "string",
                            "null"
                        ],
                        "scope": "application"
                    },
                    "phpTools.license.suppressPremiumFeatures": {
                        "markdownDescription": "Most of the premium features will be disabled and user won't be bothered with related messages or blocked code actions.",
                        "scope": "machine",
                        "type": "boolean",
                        "default": false
                    },
                    "phpTools.language": {
                        "description": "Language of PHP Tools IntelliSense.",
                        "type": [
                            "string",
                            null
                        ],
                        "enum": [
                            "en",
                            "de",
                            "es",
                            "fr",
                            "ja",
                            "pt",
                            "ru",
                            "zh",
                            null
                        ],
                        "default": null,
                        "scope": "application"
                    },
                    "php.highlight-todo.enable": {
                        "markdownDescription": "Enable highligting of to-do comments (`@todo`, `// TODO`, or `# TODO`). Enabled by default.",
                        "type": "boolean",
                        "default": true,
                        "scope": "window"
                    },
                    "php.highlight-todo.style": {
                        "markdownDescription": "The style of to-do decoration. See [ThemableDecorationRenderOptions](https://code.visualstudio.com/api/references/vscode-api#ThemableDecorationRenderOptions) for details.",
                        "type": "object",
                        "default": {
                            "backgroundColor": "#eecc00"
                        },
                        "scope": "window"
                    },
                    "phpunit.command": {
                        "markdownDescription": "%phpunit.command.description%",
                        "type": "string",
                        "default": "\"${php}\" ${phpargs} \"${phpunit}\" ${phpunitargs}",
                        "examples": [
                            "\"${php}\" ${phpargs} \"${phpunit}\" ${phpunitargs}",
                            "ddev exec phpunit ${phpunitargs}"
                        ],
                        "scope": "window"
                    },
                    "phpunit.phpunit": {
                        "description": "PHPUnit binary to be used to run and debug the tests. It can be either full path or path relative to the workspace root.\n\nExample: `./vendor/bin/phpunit` or `\"phpunit\"`.",
                        "type": "string",
                        "default": null,
                        "scope": "window"
                    },
                    "phpunit.enableAutomaticRefresh": {
                        "markdownDescription": "Watch for `.php` and `phpunit` changes and refresh tests view automatically. Enaled by default.",
                        "type": "boolean",
                        "default": true,
                        "scope": "window"
                    },
                    "phpunit.preTask": {
                        "markdownDescription": "Task or array of tasks defined in `tasks.json` to be executed before a test execution is finished. Task attributes will get updated with `\"filter\"` or `\"testsuite\"` values.",
                        "type": [
                            "string",
                            "array"
                        ],
                        "scope": "window"
                    },
                    "phpunit.postTask": {
                        "markdownDescription": "Task or array of tasks defined in `tasks.json` to be executed after a test execution is finished. Task attributes will get updated with `\"filter\"` or `\"testsuite\"` values.",
                        "type": [
                            "string",
                            "array"
                        ],
                        "scope": "window"
                    }
                }
            },
            {
                "title": "Code Style",
                "properties": {
                    "php.format.codeStyle": {
                        "markdownDescription": "%php.format.codeStyle.description%",
                        "type": [
                            "string"
                        ],
                        "enum": [
                            "PSR-2",
                            "PSR-12",
                            "Allman",
                            "K&R",
                            "PHP Tools",
                            "Laravel",
                            "WordPress",
                            "Drupal",
                            "Joomla",
                            "Off"
                        ],
                        "default": "PSR-12",
                        "scope": "window"
                    }
                }
            },
            {
                "title": "Formatting (Conversions)",
                "properties": {
                    "php.format.rules.addCommaAfterLastArrayElement": {
                        "markdownDescription": "%php.format.rules.addCommaAfterLastArrayElement.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.addCommaAfterLastCallParameter": {
                        "markdownDescription": "%php.format.rules.addCommaAfterLastCallParameter.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.addCommaAfterLastDeclParameter": {
                        "markdownDescription": "%php.format.rules.addCommaAfterLastDeclParameter.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.booleanConstantCasing": {
                        "markdownDescription": "%php.format.rules.booleanConstantCasing.description%",
                        "type": "string",
                        "enum": [
                            "", "uppercase", "lowercase", "keep"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_uppercase%", "%_lowercase%", "%_keep%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.nullConstantCasing": {
                        "markdownDescription": "%php.format.rules.nullConstantCasing.description%",
                        "type": "string",
                        "enum": [
                            "", "uppercase", "lowercase", "keep"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_uppercase%", "%_lowercase%", "%_keep%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.removeReduntandClosingTag": {
                        "markdownDescription": "%php.format.rules.removeReduntandClosingTag.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    }
                }
            },
            {
                "title": "Formatting (Indentation)",
                "properties": {
                    "php.format.rules.indentBraces": {
                        "markdownDescription": "%php.format.rules.indentBraces.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    }
                }
            },
            {
                "title": "Formatting (NewLines)",
                "properties": {
                    "php.format.rules.catchOnNewLine": {
                        "markdownDescription": "%php.format.rules.catchOnNewLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.elseOnNewLine": {
                        "markdownDescription": "%php.format.rules.elseOnNewLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.endWithNewLine": {
                        "markdownDescription": "%php.format.rules.endWithNewLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.finallyOnNewLine": {
                        "markdownDescription": "%php.format.rules.finallyOnNewLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.openBraceOnNewLineForAnonymousClasses": {
                        "markdownDescription": "%php.format.rules.openBraceOnNewLineForAnonymousClasses.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.openBraceOnNewLineForBlocks": {
                        "markdownDescription": "%php.format.rules.openBraceOnNewLineForBlocks.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.openBraceOnNewLineForFunctions": {
                        "markdownDescription": "%php.format.rules.openBraceOnNewLineForFunctions.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.openBraceOnNewLineForLambdas": {
                        "markdownDescription": "%php.format.rules.openBraceOnNewLineForLambdas.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.openBraceOnNewLineForNamespaces": {
                        "markdownDescription": "%php.format.rules.openBraceOnNewLineForNamespaces.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.openBraceOnNewLineForTypes": {
                        "markdownDescription": "%php.format.rules.openBraceOnNewLineForTypes.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    }
                }
            },
            {
                "title": "Formatting (Spacing)",
                "properties": {
                    "php.format.rules.spaceAfterCast": {
                        "markdownDescription": "%php.format.rules.spaceAfterCast.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceAfterUnaryNot": {
                        "markdownDescription": "%php.format.rules.spaceAfterUnaryNot.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceAroundConcatenation": {
                        "markdownDescription": "%php.format.rules.spaceAroundConcatenation.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceBeforeColonInControlStatements": {
                        "markdownDescription": "%php.format.rules.spaceBeforeColonInControlStatements.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceBeforeColonInReturnType": {
                        "markdownDescription": "%php.format.rules.spaceBeforeColonInReturnType.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceBeforeParenthesesInArrowFunctions": {
                        "markdownDescription": "%php.format.rules.spaceBeforeParenthesesInArrowFunctions.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceBeforeParenthesesInCalls": {
                        "markdownDescription": "%php.format.rules.spaceBeforeParenthesesInCalls.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceBeforeParenthesesInControlStatements": {
                        "markdownDescription": "%php.format.rules.spaceBeforeParenthesesInControlStatements.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceBeforeParenthesesInDeclarations": {
                        "markdownDescription": "%php.format.rules.spaceBeforeParenthesesInDeclarations.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinArrayInitilizersParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinArrayInitilizersParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinBrackets": {
                        "markdownDescription": "%php.format.rules.spaceWithinBrackets.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinBracketsAroundExpression": {
                        "markdownDescription": "%php.format.rules.spaceWithinBracketsAroundExpression.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinCallParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinCallParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinCatchParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinCatchParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinDeclParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinDeclParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinExpressionParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinExpressionParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinForeachParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinForeachParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinForParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinForParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinIfParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinIfParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinSwitchParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinSwitchParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.spaceWithinWhileParens": {
                        "markdownDescription": "%php.format.rules.spaceWithinWhileParens.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    }
                }
            },
            {
                "title": "Formatting (Wrapping)",
                "properties": {
                    "php.format.rules.alignConsecutiveAssignments": {
                        "markdownDescription": "%php.format.rules.alignConsecutiveAssignments.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.alignConstants": {
                        "markdownDescription": "%php.format.rules.alignConstants.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.alignEnumCases": {
                        "markdownDescription": "%php.format.rules.alignEnumCases.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.alignMatchArmBodies": {
                        "markdownDescription": "%php.format.rules.alignMatchArmBodies.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.arrayInitializersAlignKeyValuePairs": {
                        "markdownDescription": "%php.format.rules.arrayInitializersAlignKeyValuePairs.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.arrayInitializersNewLineAfterLastElement": {
                        "markdownDescription": "%php.format.rules.arrayInitializersNewLineAfterLastElement.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.arrayInitializersNewLineBeforeFirstElement": {
                        "markdownDescription": "%php.format.rules.arrayInitializersNewLineBeforeFirstElement.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.arrayInitializersWrap": {
                        "markdownDescription": "%php.format.rules.arrayInitializersWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.callParametersNewLineAfterLeftParen": {
                        "markdownDescription": "%php.format.rules.callParametersNewLineAfterLeftParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.callParametersNewLineBeforeRightParen": {
                        "markdownDescription": "%php.format.rules.callParametersNewLineBeforeRightParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.callParametersWrap": {
                        "markdownDescription": "%php.format.rules.callParametersWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.chainedMethodCallsSemicolonOnNewLine": {
                        "markdownDescription": "%php.format.rules.chainedMethodCallsSemicolonOnNewLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.chainedMethodCallsWrap": {
                        "markdownDescription": "%php.format.rules.chainedMethodCallsWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.declCompactEmptyBody": {
                        "markdownDescription": "%php.format.rules.declCompactEmptyBody.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.declKeepRightParenAndOpenBraceOnOneLine": {
                        "markdownDescription": "%php.format.rules.declKeepRightParenAndOpenBraceOnOneLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.declParametersNewLineAfterLeftParen": {
                        "markdownDescription": "%php.format.rules.declParametersNewLineAfterLeftParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.declParametersNewLineBeforeRightParen": {
                        "markdownDescription": "%php.format.rules.declParametersNewLineBeforeRightParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.declParametersWrap": {
                        "markdownDescription": "%php.format.rules.declParametersWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.forStatementNewLineAfterLeftParen": {
                        "markdownDescription": "%php.format.rules.forStatementNewLineAfterLeftParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.forStatementNewLineBeforeRightParen": {
                        "markdownDescription": "%php.format.rules.forStatementNewLineBeforeRightParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.forStatementWrap": {
                        "markdownDescription": "%php.format.rules.forStatementWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.groupUseNewLineBeforeFirstDeclaration": {
                        "markdownDescription": "%php.format.rules.groupUseNewLineBeforeFirstDeclaration.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.groupUseWrap": {
                        "markdownDescription": "%php.format.rules.groupUseWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.ifStatementNewLineAfterLeftParen": {
                        "markdownDescription": "%php.format.rules.ifStatementNewLineAfterLeftParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.ifStatementNewLineBeforeRightParen": {
                        "markdownDescription": "%php.format.rules.ifStatementNewLineBeforeRightParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.implementsListWrap": {
                        "markdownDescription": "%php.format.rules.implementsListWrap.description%",
                        "type": "string",
                        "enum": [
                            "", "off", "onEveryItem", "always"
                        ],
                        "enumItemLabels": [
                            "%_inherit%", "%_off%", "%_onEveryItem%", "%_always%"
                        ],
                        "markdownEnumDescriptions": [
                            "%_wrap.inherit.description%", "%_wrap.off.description%", "%_wrap.onEveryItem.description%", "%_wrap.always.description%"
                        ],
                        "default": "",
                        "scope": "window"
                    },
                    "php.format.rules.keepClassesOnOneLine": {
                        "markdownDescription": "%php.format.rules.keepClassesOnOneLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.keepControlStatementsOnOneLine": {
                        "markdownDescription": "%php.format.rules.keepControlStatementsOnOneLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.keepFunctionsOnOneLine": {
                        "markdownDescription": "%php.format.rules.keepFunctionsOnOneLine.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.newLineAfterImplements": {
                        "markdownDescription": "%php.format.rules.newLineAfterImplements.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.switchStatementNewLineAfterLeftParen": {
                        "markdownDescription": "%php.format.rules.switchStatementNewLineAfterLeftParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.switchStatementNewLineBeforeRightParen": {
                        "markdownDescription": "%php.format.rules.switchStatementNewLineBeforeRightParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.whileStatementNewLineAfterLeftParen": {
                        "markdownDescription": "%php.format.rules.whileStatementNewLineAfterLeftParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    },
                    "php.format.rules.whileStatementNewLineBeforeRightParen": {
                        "markdownDescription": "%php.format.rules.whileStatementNewLineBeforeRightParen.description%",
                        "type": "boolean",
                        "default": null,
                        "scope": "window"
                    }
                }
            }
        ],
        "configurationDefaults": {
            "php.suggest.basic": false,
            "php.validate.enable": false,
            "files.associations": {
                "*.embeddedhtml": "html"
            }
        },
        "menus": {
            "editor/title/run": [
                {
                    "command": "phptools.debug.runScript",
                    "when": "resourceLangId == php && !inDiffEditor && !virtualWorkspace && shellExecutionSupported",
                    "group": "navigation@0"
                },
                {
                    "command": "phptools.debug.debugScript",
                    "when": "resourceLangId == php && !inDiffEditor && !virtualWorkspace && shellExecutionSupported",
                    "group": "navigation@1"
                }
            ]
        },
        "commands": [
            {
                "command": "phptools.activate",
                "category": "PHP Tools",
                "title": "%phptools.activate.title%",
                "icon": "$(unlock)"
            },
            {
                "command": "phptools.requesttrial",
                "category": "PHP Tools",
                "title": "%phptools.requesttrial.title%",
                "icon": "$(unlock)",
                "enablement": "!phptools.activated"
            },
            {
                "command": "phptools.releasenotes",
                "category": "PHP Tools",
                "title": "%phptools.releasenotes.title%",
                "icon": "$(notebook)"
            },
            {
                "command": "phptools.clearVendorCache",
                "category": "PHP Tools",
                "title": "Clear /vendor/ cache."
            },
            {
                "command": "phptools.stubs",
                "category": "PHP",
                "title": "Workspace Stubs"
            },
            {
                "command": "phptools.todo.search",
                "category": "PHP",
                "title": "%phptools.todo.search.title%",
                "icon": "$(search)"
            },
            {
                "command": "phptools.selectPhpVersion",
                "title": "%phptools.selectPhpVersion.title%",
                "category": "PHP",
                "icon": "$(versions)",
                "enablement": "editorLangId==php && !isWeb"
            },
            {
                "command": "phptools.selectLanguage",
                "title": "%phptools.selectLanguage%",
                "category": "PHP",
                "icon": "%(comments-view-icon)"
            },
            {
                "command": "phptools.problems.scope",
                "title": "%phptools.problems.scope%",
                "category": "PHP",
                "icon": "%(alert)"
            },
            {
                "command": "phptools.importClass",
                "category": "PHP",
                "title": "%phptools.importClass.title%",
                "enablement": "phptools.importClass"
            },
            {
                "command": "phptools.fqnClass",
                "category": "PHP",
                "title": "%phptools.fqnClass.title%",
                "enablement": "phptools.importClass"
            },
            {
                "command": "phptools.debug.startWithStopOnEntry",
                "title": "Start Debugging and Stop on Entry",
                "category": "Debug (PHP)",
                "icon": "$(debug-alt-small)",
                "enablement": "debuggersAvailable && !inDebugMode"
            },
            {
                "command": "phptools.debug.startListen",
                "title": "Start Listening for Xdebug",
                "shortTitle": "Listen for Xdebug",
                "category": "Debug (PHP)",
                "icon": "$(debug-alt-small)",
                "enablement": "debuggersAvailable && !inDebugMode"
            },
            {
                "command": "phptools.debug.debugScript",
                "title": "Debug PHP script",
                "category": "Debug (PHP)",
                "enablement": "editorLangId==php && debuggersAvailable && !inDebugMode",
                "icon": "$(debug-alt)"
            },
            {
                "command": "phptools.debug.runScript",
                "title": "Run PHP Script",
                "category": "Debug (PHP)",
                "enablement": "editorLangId == php",
                "icon": "$(play)"
            }
        ],
        "keybindings": [
            {
                "command": "phptools.debug.startWithStopOnEntry",
                "key": "F10",
                "mac": "F10",
                "when": "!inDebugMode && debugConfigurationType=='php'"
            },
            {
                "command": "phptools.debug.startWithStopOnEntry",
                "key": "F11",
                "mac": "F11",
                "when": "!inDebugMode && debugConfigurationType=='php'"
            }
        ],
        "debuggers": [
            {
                "type": "php",
                "label": "PHP (Xdebug)",
                "enableBreakpointsFor": {
                    "languageIds": [
                        "php"
                    ]
                },
                "configurationAttributes": {
                    "launch": {
                        "required": [],
                        "properties": {
                            "program": {
                                "type": "string",
                                "description": "Absolute path to the program."
                            },
                            "stopOnEntry": {
                                "type": "boolean",
                                "description": "Automatically stop program after launch.",
                                "default": false
                            },
                            "externalConsole": {
                                "type": "boolean",
                                "description": "Launch debug target in external console.",
                                "default": false
                            },
                            "args": {
                                "type": "array",
                                "description": "Command line arguments passed to the program.",
                                "items": {
                                    "type": "string"
                                },
                                "default": []
                            },
                            "cwd": {
                                "type": "string",
                                "description": "Absolute path to the working directory of the program being debugged. Default is the current workspace.",
                                "default": "${workspaceRoot}"
                            },
                            "envfile": {
                                "type": "string",
                                "markdownDescription": "Path to `.env` file. Environment variables will be merged into the process environment variables.",
                                "examples": [
                                    ".env"
                                ]
                            },
                            "phpVersion": {
                                "type": "string",
                                "markdownDescription": "PHP version or profile name defined in `#php.executables#`"
                            },
                            "runtimeExecutable": {
                                "type": "string",
                                "description": "Absolute path to the runtime executable to be used. Default is the runtime executable on the PATH.",
                                "default": "php"
                            },
                            "runtimeArgs": {
                                "type": "array",
                                "description": "Optional arguments passed to the runtime executable.",
                                "items": {
                                    "type": "string"
                                },
                                "default": []
                            },
                            "env": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "string"
                                },
                                "description": "Environment variables passed to the program.",
                                "default": {}
                            },
                            "port": {
                                "type": [
                                    "integer",
                                    "array"
                                ],
                                "description": "Port on which to listen for Xdebug"
                            },
                            "serverSourceRoot": {
                                "type": "string",
                                "description": "Deprecated: The source root when debugging a remote host",
                                "deprecationMessage": "Property serverSourceRoot is deprecated, please use pathMappings to define a server root."
                            },
                            "localSourceRoot": {
                                "type": "string",
                                "description": "Deprecated: The source root on this machine that is the equivalent to the serverSourceRoot on the server.",
                                "deprecationMessage": "Property localSourceRoot is deprecated, please use pathMappings to define a local root."
                            },
                            "pathMappings": {
                                "type": "object",
                                "default": {},
                                "description": "A mapping of server paths to local paths."
                            },
                            "exclude": {
                                "type": "array",
                                "items": "string",
                                "description": "Glob patterns that the debugger won't debug.",
                                "default": [
                                    "**/vendor/**/*.php"
                                ]
                            },
                            "log": {
                                "type": "boolean",
                                "description": "If true, will log all communication between VS Code and the adapter"
                            },
                            "noDebug": {
                                "type": "boolean",
                                "description": "If true, starts the process without debugging. False by default ('debug' mode enabled)."
                            },
                            "noDevelop": {
                                "type": "boolean",
                                "description": "If true, Xdebug 'develop' mode is disabled. False by default ('develop' mode enabled)."
                            },
                            "trigger": {
                                "type": "string",
                                "description": "If set, only requests with `XDEBUG_TRIGGER` GET/POST/COOKIE or ENV variable equal to this value, will be debugged. By default, every request is being debugged. Example: \"trigger\": \"Start\", so only requests to http://localhost?XDEBUG_TRIGGER=Start will initiate debugging."
                            },
                            "profile": {
                                "type": "boolean",
                                "description": "If true, enables Xdebug 'profile' mode. Disabled by default."
                            },
                            "openProfile": {
                                "type": "boolean",
                                "description": "Override profile output dir and open the profiling result after the debug sessions stops."
                            },
                            "dbgpProxy": {
                                "type": "object",
                                "properties": {
                                    "enable": {
                                        "type": "boolean",
                                        "description": "If True, will connect to DBGp proxy configured in this section",
                                        "default": false
                                    },
                                    "host": {
                                        "type": "string",
                                        "description": "The host address where the proxy is located. It's usually same as web server, but it's doesn't have to be.",
                                        "default": "127.0.0.1"
                                    },
                                    "port": {
                                        "type": "number",
                                        "description": "The port where the proxy server is listening.",
                                        "default": 9001
                                    },
                                    "ideKey": {
                                        "type": "string",
                                        "description": "The Xdebug IDE Key used to register the VS CODE. If not set, the current user name is used instead."
                                    }
                                }
                            },
                            "maxConnections": {
                                "type": "number",
                                "description": "Maximum number of simultaneous debug sessions.",
                                "default": 3
                            }
                        }
                    }
                },
                "languages": [
                    "php"
                ],
                "configurationSnippets": [
                    {
                        "label": "PHP: Launch built-in server",
                        "description": "Launches PHP's built-in development server and starts debugging.",
                        "body": {
                            "name": "Launch built-in server",
                            "type": "php",
                            "request": "launch",
                            "runtimeArgs": [
                                "-S",
                                "localhost:8000",
                                "-t",
                                "."
                            ],
                            "port": 9003,
                            "serverReadyAction": {
                                "action": "openExternally"
                            }
                        }
                    },
                    {
                        "label": "PHP: Launch & Profile built-in server",
                        "description": "Launches PHP's built-in development server and starts profiling requests.",
                        "body": {
                            "name": "Launch & Profile built-in server",
                            "type": "php",
                            "request": "launch",
                            "noDebug": true,
                            "profile": true,
                            "runtimeArgs": [
                                "-S",
                                "localhost:8000",
                                "-t",
                                "."
                            ],
                            "port": 9003,
                            "serverReadyAction": {
                                "action": "openExternally"
                            }
                        }
                    },
                    {
                        "label": "PHP: Launch current script in console",
                        "description": "Launches currently opened PHP document as a console application.",
                        "body": {
                            "name": "Launch current script in console",
                            "type": "php",
                            "request": "launch",
                            "program": "^\"\\${file}\"",
                            "cwd": "^\"\\${fileDirname}\"",
                            "externalConsole": false,
                            "port": 9003
                        }
                    },
                    {
                        "label": "PHP: Listen for Xdebug",
                        "description": "Starts debugging by waiting for an incoming Xdebug connection from a remote server.",
                        "body": {
                            "name": "Listen for Xdebug",
                            "type": "php",
                            "request": "launch",
                            "port": [
                                9003,
                                9000
                            ]
                        }
                    }
                ],
                "initialConfigurations": [
                    {
                        "name": "Launch built-in server and debug",
                        "type": "php",
                        "request": "launch",
                        "runtimeArgs": [
                            "-S",
                            "localhost:8000",
                            "-t",
                            "."
                        ],
                        "port": 9003,
                        "serverReadyAction": {
                            "action": "openExternally"
                        }
                    },
                    {
                        "name": "Debug current script in console",
                        "type": "php",
                        "request": "launch",
                        "program": "${file}",
                        "cwd": "${fileDirname}",
                        "externalConsole": false,
                        "port": 9003
                    },
                    {
                        "name": "Listen for Xdebug",
                        "type": "php",
                        "request": "launch",
                        "port": 9003
                    }
                ]
            }
        ],
        "taskDefinitions": [
            {
                "type": "php",
                "properties": {
                    "file": {
                        "type": "string",
                        "description": "Path to the .php file to be executed."
                    },
                    "args": {
                        "type": [
                            "array",
                            "string"
                        ],
                        "description": "Script file arguments."
                    },
                    "phpVersion": {
                        "type": "string",
                        "description": "PHP version or profile name defined in 'php.executables'"
                    }
                },
                "required": [
                    "file"
                ]
            }
        ]
    },
    "capabilities": {
        "virtualWorkspaces": {
            "supported": "limited",
            "description": "%capabilities.virtualWorkspaces.description%"
        },
        "untrustedWorkspaces": {
            "supported": true
        }
    },
    "badges": [
        {
            "url": "https://badgen.net/badge/@php4vs/twitter/blue?icon=twitter",
            "href": "https://twitter.com/php4vs",
            "description": "PHP Tools on Twitter"
        },
        {
            "url": "https://img.shields.io/badge/platform-MacOS%20%7C%20Linux%20%7C%20Win-green.svg",
            "href": "https://www.devsense.com/download#vscode",
            "description": "PHP Tools Download"
        },
        {
            "url": "https://img.shields.io/badge/php-5.4%20--%205.6%20%7C%207.0%20--%208.3-8892BF.svg?logo=php",
            "href": "https://docs.devsense.com/en/vscode/configuration",
            "description": "Supported PHP Versions"
        },
        {
            "url": "https://img.shields.io/badge/-changelog-green",
            "href": "https://www.devsense.com/en/download/vscode",
            "description": "PHP Tools for VS Code Changelog"
        }
    ],
    "scripts": {
        "generate-resource": "pwsh ../../scripts/Generate-Resource.ps1 -path .",
        "generate-formatsettings": "pwsh ./scripts/generate-formatsettings.ps1",
        "precompile": "npm run -S generate-resource && npm run -S generate-formatsettings",
        "vscode:prepublish": "npm run -S precompile && pwsh ./scripts/prepublish.ps1 && npm run -S esbuild-base -- --minify && npm run -S esbuild-uninstall -- --minify",
        "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/src/extension.js --external:vscode --format=cjs --platform=node",
        "esbuild-uninstall": "esbuild ./src/uninstall.ts --bundle --outfile=out/src/uninstall.js --external:vscode --format=cjs --platform=node",
        "compile": "dotnet publish ../Devsense.PHP.LanguageServer --ignore-failed-sources --output out/server && npm run -S esbuild-base -- --sourcemap && npm run -S esbuild-uninstall",
        "postinstall": "cd ../lib && npm install && cd ../PhpTools.VsCode",
        "vscode:uninstall": "node ./out/src/uninstall",
        "build-tests": "tsc -p ./test/",
        "pretest": "npm run compile && npm run -S build-tests",
        "test": "node ./out/test/runTest.js"
    },
    "dependencies": {
        "@vscode/debugadapter": "^1.54.0",
        "@vscode/debugprotocol": "^1.54.0",
        "@vscode/vsce": "^2.7.0",
        "applicationinsights": "^1.8.10",
        "crypto": "^1.0.1",
        "escape-string-regexp": "^1.0.5",
        "highlight.js": "^11.6.0",
        "iconv-lite": "^0.4.15",
        "jsencrypt": "^3.2.1",
        "markdown-it": "^13.0.1",
        "minimatch": "^5.1.0",
        "moment": "^2.17.1",
        "node-rsa": "^1.0.7",
        "open": "^8.4.0",
        "recursive-readdir-sync": "^1.0.6",
        "string-hash": "^1.1.3",
        "urlencode": "^1.1.0",
        "uuid": "^7",
        "vscode-languageclient": "^7.0.0",
        "vscode-languageserver": "^7.0.0",
        "vscode-languageserver-protocol-foldingprovider": "^2.0.1",
        "vscode-nls": "^3.2.2",
        "xmldom": "^0.6.0",
        "xmlhttprequest": "^1.8.0"
    },
    "devDependencies": {
        "@types/glob": "^8.0.0",
        "@types/minimatch": "^5.1.0",
        "@types/mocha": "^10.0.1",
        "@types/node": "^10.17.60",
        "@types/vscode": "^1.70.0",
        "@vscode/test-electron": "^2.2.1",
        "chai": "^4.3.7",
        "esbuild": "^0.14.48",
        "mocha": "^10.1.0",
        "source-map-support": "^0.5.12",
        "typescript": "^4.7.4",
        "uglify-js": "^3.16.1"
    }
}
