From 2b2d40c4f58cbaf48981e027c306822f5dc9a146 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Sun, 15 Nov 2020 09:57:25 +0100 Subject: [PATCH] Major restructuring and update to code base - Created a new VSCode Extension subproject - Created a new Bolt CLI subproject - Created a new Bolt Language Server subproject - Created a new Bolt Compiler subproject - Moved most existing code to the new Compiler subproject - Added a small language server - Laid the foundations for a Hindley-Milner type checker - Fixed some bugs and type errors in the compiler - Removed the unused testing infrastructure - Added an example parser test that should be run with Ava --- .babelrc | 3 - .gitignore | 10 +- @boltlang/cli/.babelrc | 5 + @boltlang/cli/.browserslistrc | 1 + @boltlang/cli/.gitignore | 7 + @boltlang/cli/package-lock.json | 572 + @boltlang/cli/package.json | 28 + src/bin/bolt.ts => @boltlang/cli/src/main.ts | 13 +- @boltlang/cli/tsconfig.json | 13 + .../cli/webpack.config.js | 12 +- @boltlang/compiler/.gitignore | 16 + @boltlang/compiler/.npmignore | 7 + Makefile => @boltlang/compiler/Makefile | 2 +- @boltlang/compiler/package-lock.json | 622 + @boltlang/compiler/package.json | 33 + .../compiler/scripts}/bolt.pegjs | 0 {src => @boltlang/compiler/src}/ast-spec.ts | 47 +- {src => @boltlang/compiler/src}/ast.ts | 94 +- {src => @boltlang/compiler/src}/bindings.ts | 0 @boltlang/compiler/src/checker.ts | 306 + {src => @boltlang/compiler/src}/checks.ts | 9 +- {src => @boltlang/compiler/src}/common.ts | 68 +- {src => @boltlang/compiler/src}/constants.ts | 0 @boltlang/compiler/src/constraint-checeker.ts | 746 + .../compiler/src}/diagnostics.ts | 32 +- {src => @boltlang/compiler/src}/emitter.ts | 0 {src => @boltlang/compiler/src}/evaluator.ts | 1 - .../compiler/src}/foreign/index.ts | 0 .../compiler/src}/foreign/js/parser.ts | 0 .../compiler/src}/foreign/js/scanner.ts | 0 {src => @boltlang/compiler/src}/frontend.ts | 89 +- {src => @boltlang/compiler/src}/index.ts | 0 {src => @boltlang/compiler/src}/ioc.ts | 0 {src => @boltlang/compiler/src}/marktest.ts | 0 {src => @boltlang/compiler/src}/package.ts | 3 +- {src => @boltlang/compiler/src}/parser.ts | 42 +- {src => @boltlang/compiler/src}/program.ts | 0 @boltlang/compiler/src/repl.ts | 8 + {src => @boltlang/compiler/src}/resolver.ts | 0 {src => @boltlang/compiler/src}/scanner.ts | 0 @boltlang/compiler/src/test/parser.ts | 52 + @boltlang/compiler/src/test/types.ts | 18 + {src => @boltlang/compiler/src}/text.ts | 0 .../compiler/src}/transforms/boltToJS.ts | 0 .../compiler/src}/transforms/constFold.ts | 0 .../compiler/src}/transforms/expand.ts | 0 .../compiler/src}/transforms/index.ts | 0 {src => @boltlang/compiler/src}/util.ts | 12 +- .../compiler/tsconfig.json | 7 +- .../compiler/webpack.config.js | 3 +- @boltlang/langserver/.babelrc | 5 + @boltlang/langserver/.browserslistrc | 1 + @boltlang/langserver/.gitignore | 7 + @boltlang/langserver/package-lock.json | 102 + @boltlang/langserver/package.json | 34 + @boltlang/langserver/src/main.ts | 147 + @boltlang/langserver/tsconfig.json | 12 + @boltlang/langserver/webpack.config.js | 37 + package-lock.json | 9467 +++++++++-- package.json | 77 +- src/bin/bolt-test.ts | 570 - src/checker.ts | 1541 -- src/parsegen/parser.d.ts | 29 - src/parsegen/parser.pegjs | 513 - src/test/types.ts | 13 - stdlib/Boltfile | 3 - stdlib/either.bolt | 3 - stdlib/io.bolt | 40 - stdlib/lang/bolt.bolt | 84 - stdlib/lib.bolt | 9 - stdlib/math.bolt | 12 - stdlib/numbers.bolt | 33 - stdlib/option.bolt | 3 - stdlib/string.bolt | 3 - stdlib/vec.bolt | 3 - test-storage/aliases/lkg | 1 - ...c227598117cfd2f747955c3f10b503edb069cf1828 | 1 - test.bolt | 27 +- test/001-punct-depth-1.bolt | 3 - test/002-fn-decl-operator.bolt | 9 - test/scan/000-bolt-identifier.md | 69 - test/scan/001-bolt-string-literal.md | 26 - test/scan/002-bolt-integer-literal.md | 69 - vscode-extension/.gitattributes | 3 + vscode-extension/.gitignore | 3 + vscode-extension/.vscodeignore | 4 + vscode-extension/CHANGELOG.md | 15 + vscode-extension/LICENSE.txt | 21 + vscode-extension/README.md | 27 + vscode-extension/dist/extension.js | 13452 ++++++++++++++++ vscode-extension/dist/extension.js.map | 1 + vscode-extension/language-configuration.json | 30 + vscode-extension/package-lock.json | 1389 ++ vscode-extension/package.json | 75 + vscode-extension/src/extension.ts | 79 + .../syntaxes/bolt.tmLanguage.json | 60 + vscode-extension/tsconfig.json | 16 + vscode-extension/webpack.config.js | 42 + webpack.config.js | 21 + 99 files changed, 26718 insertions(+), 4354 deletions(-) delete mode 100644 .babelrc create mode 100644 @boltlang/cli/.babelrc create mode 100644 @boltlang/cli/.browserslistrc create mode 100644 @boltlang/cli/.gitignore create mode 100644 @boltlang/cli/package-lock.json create mode 100644 @boltlang/cli/package.json rename src/bin/bolt.ts => @boltlang/cli/src/main.ts (93%) create mode 100644 @boltlang/cli/tsconfig.json rename webpack.prod.js => @boltlang/cli/webpack.config.js (72%) create mode 100644 @boltlang/compiler/.gitignore create mode 100644 @boltlang/compiler/.npmignore rename Makefile => @boltlang/compiler/Makefile (87%) create mode 100644 @boltlang/compiler/package-lock.json create mode 100644 @boltlang/compiler/package.json rename {scripts => @boltlang/compiler/scripts}/bolt.pegjs (100%) rename {src => @boltlang/compiler/src}/ast-spec.ts (95%) rename {src => @boltlang/compiler/src}/ast.ts (98%) rename {src => @boltlang/compiler/src}/bindings.ts (100%) create mode 100644 @boltlang/compiler/src/checker.ts rename {src => @boltlang/compiler/src}/checks.ts (95%) rename {src => @boltlang/compiler/src}/common.ts (87%) rename {src => @boltlang/compiler/src}/constants.ts (100%) create mode 100644 @boltlang/compiler/src/constraint-checeker.ts rename {src => @boltlang/compiler/src}/diagnostics.ts (94%) rename {src => @boltlang/compiler/src}/emitter.ts (100%) rename {src => @boltlang/compiler/src}/evaluator.ts (99%) rename {src => @boltlang/compiler/src}/foreign/index.ts (100%) rename {src => @boltlang/compiler/src}/foreign/js/parser.ts (100%) rename {src => @boltlang/compiler/src}/foreign/js/scanner.ts (100%) rename {src => @boltlang/compiler/src}/frontend.ts (82%) rename {src => @boltlang/compiler/src}/index.ts (100%) rename {src => @boltlang/compiler/src}/ioc.ts (100%) rename {src => @boltlang/compiler/src}/marktest.ts (100%) rename {src => @boltlang/compiler/src}/package.ts (97%) rename {src => @boltlang/compiler/src}/parser.ts (98%) rename {src => @boltlang/compiler/src}/program.ts (100%) create mode 100644 @boltlang/compiler/src/repl.ts rename {src => @boltlang/compiler/src}/resolver.ts (100%) rename {src => @boltlang/compiler/src}/scanner.ts (100%) create mode 100644 @boltlang/compiler/src/test/parser.ts create mode 100644 @boltlang/compiler/src/test/types.ts rename {src => @boltlang/compiler/src}/text.ts (100%) rename {src => @boltlang/compiler/src}/transforms/boltToJS.ts (100%) rename {src => @boltlang/compiler/src}/transforms/constFold.ts (100%) rename {src => @boltlang/compiler/src}/transforms/expand.ts (100%) rename {src => @boltlang/compiler/src}/transforms/index.ts (100%) rename {src => @boltlang/compiler/src}/util.ts (98%) rename tsconfig.json => @boltlang/compiler/tsconfig.json (72%) rename webpack.dev.js => @boltlang/compiler/webpack.config.js (92%) create mode 100644 @boltlang/langserver/.babelrc create mode 100644 @boltlang/langserver/.browserslistrc create mode 100644 @boltlang/langserver/.gitignore create mode 100644 @boltlang/langserver/package-lock.json create mode 100644 @boltlang/langserver/package.json create mode 100644 @boltlang/langserver/src/main.ts create mode 100644 @boltlang/langserver/tsconfig.json create mode 100644 @boltlang/langserver/webpack.config.js delete mode 100644 src/bin/bolt-test.ts delete mode 100644 src/checker.ts delete mode 100644 src/parsegen/parser.d.ts delete mode 100644 src/parsegen/parser.pegjs delete mode 100644 src/test/types.ts delete mode 100644 stdlib/Boltfile delete mode 100644 stdlib/either.bolt delete mode 100644 stdlib/io.bolt delete mode 100644 stdlib/lang/bolt.bolt delete mode 100644 stdlib/lib.bolt delete mode 100644 stdlib/math.bolt delete mode 100644 stdlib/numbers.bolt delete mode 100644 stdlib/option.bolt delete mode 100644 stdlib/string.bolt delete mode 100644 stdlib/vec.bolt delete mode 100644 test-storage/aliases/lkg delete mode 100644 test-storage/snapshots/9e87b23b96c54b7245893be35befc6fe7fd2c14ef41cc4b4815e50aee6b07d0c2c6be999719ecd236a55bbc227598117cfd2f747955c3f10b503edb069cf1828 delete mode 100644 test/001-punct-depth-1.bolt delete mode 100644 test/002-fn-decl-operator.bolt delete mode 100644 test/scan/000-bolt-identifier.md delete mode 100644 test/scan/001-bolt-string-literal.md delete mode 100644 test/scan/002-bolt-integer-literal.md create mode 100644 vscode-extension/.gitattributes create mode 100644 vscode-extension/.gitignore create mode 100644 vscode-extension/.vscodeignore create mode 100644 vscode-extension/CHANGELOG.md create mode 100644 vscode-extension/LICENSE.txt create mode 100644 vscode-extension/README.md create mode 100644 vscode-extension/dist/extension.js create mode 100644 vscode-extension/dist/extension.js.map create mode 100644 vscode-extension/language-configuration.json create mode 100644 vscode-extension/package-lock.json create mode 100644 vscode-extension/package.json create mode 100644 vscode-extension/src/extension.ts create mode 100644 vscode-extension/syntaxes/bolt.tmLanguage.json create mode 100644 vscode-extension/tsconfig.json create mode 100644 vscode-extension/webpack.config.js create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 84ed5f15b..000000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["@babel/plugin-proposal-class-properties"] -} diff --git a/.gitignore b/.gitignore index 484292444..7e4408179 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ -# embedded repositories -/meta/ - # IDEs .vscode/ @@ -11,11 +8,6 @@ node_modules/ # bolt .bolt-work/ -# these are ignored to avoid a lot of bloat in IDEs -/.test-infrastructure/snapshots/ - -# build directories +# compiled code for testin /lib/ -/build/ -/dist/ diff --git a/@boltlang/cli/.babelrc b/@boltlang/cli/.babelrc new file mode 100644 index 000000000..cedf24f1a --- /dev/null +++ b/@boltlang/cli/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [ + "@babel/preset-env" + ] +} \ No newline at end of file diff --git a/@boltlang/cli/.browserslistrc b/@boltlang/cli/.browserslistrc new file mode 100644 index 000000000..76d55dadf --- /dev/null +++ b/@boltlang/cli/.browserslistrc @@ -0,0 +1 @@ +maintained node versions, last 4 electron versions \ No newline at end of file diff --git a/@boltlang/cli/.gitignore b/@boltlang/cli/.gitignore new file mode 100644 index 000000000..cff8a5b94 --- /dev/null +++ b/@boltlang/cli/.gitignore @@ -0,0 +1,7 @@ + +# npm +node_modules/ + +# resulting code +/bin/ + diff --git a/@boltlang/cli/package-lock.json b/@boltlang/cli/package-lock.json new file mode 100644 index 000000000..ae2a86b12 --- /dev/null +++ b/@boltlang/cli/package-lock.json @@ -0,0 +1,572 @@ +{ + "name": "@boltlang/cli", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "GPL-3.0", + "dependencies": { + "ora": "^5.1.0", + "yargs": "^16.1.0" + }, + "bin": { + "bolt": "bin/bolt.js" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", + "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", + "dependencies": { + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.0.tgz", + "integrity": "sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.2", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "requires": { + "chalk": "^4.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ora": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", + "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", + "requires": { + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" + }, + "yargs": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.0.tgz", + "integrity": "sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.2", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + } + } +} diff --git a/@boltlang/cli/package.json b/@boltlang/cli/package.json new file mode 100644 index 000000000..2766a03a1 --- /dev/null +++ b/@boltlang/cli/package.json @@ -0,0 +1,28 @@ +{ + "name": "@boltlang/cli", + "version": "1.0.0", + "description": "The official command-line interface of the Bolt programming language", + "main": "index.js", + "bin": { + "bolt": "bin/bolt.js" + }, + "scripts": { + "prepare": "webpack --mode production", + "watch": "webpack --mode development --watch", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/BoltLang/BoltJS.git" + }, + "author": "Sam Vervaeck", + "license": "GPL-3.0", + "bugs": { + "url": "https://github.com/BoltLang/BoltJS/issues" + }, + "homepage": "https://github.com/BoltLang/BoltJS#readme", + "dependencies": { + "ora": "^5.1.0", + "yargs": "^16.1.0" + } +} diff --git a/src/bin/bolt.ts b/@boltlang/cli/src/main.ts similarity index 93% rename from src/bin/bolt.ts rename to @boltlang/cli/src/main.ts index 49a44cec9..53da26115 100644 --- a/src/bin/bolt.ts +++ b/@boltlang/cli/src/main.ts @@ -4,8 +4,8 @@ import "source-map-support/register" import yargs from "yargs" -import { Frontend } from "../frontend" -import { expandPath } from "../util" +import { Frontend } from "@boltlang/compiler/frontend" +import { expandPath } from "@boltlang/compiler/util" const BOLT_HOME = expandPath(process.env['BOLT_HOME'] ?? '~/.bolt-compiler') @@ -61,10 +61,10 @@ yargs const frontend = new Frontend(); parsePackageResolverFlags(frontend, toArray(args.pkg as string | string[])); const program = frontend.loadProgramFromFileList(files, cwd, useStd); - if (program !== null) { + if (!frontend.diagnostics.hasFatal && program !== null) { frontend.check(program); } - if (frontend.diagnostics.hasErrors) { + if (frontend.diagnostics.hasErrors || frontend.diagnostics.hasFatal) { process.exit(1); } } @@ -124,7 +124,7 @@ yargs .default('work-dir', '.') .boolean('skip-type-checks') .describe('skip-type-checks', 'Do not check the program for common mistakes before evaluating.') - .default('skip-type-checks', false) + .default('skip-type-checks', true) .boolean('force') .describe('force', 'Ignore as much errors as possible.') .default('force', false) @@ -138,7 +138,7 @@ yargs const files = toArray(args.files as string[] | string); const frontend = new Frontend(); - + parsePackageResolverFlags(frontend, toArray(args.pkg as string | string[])); const program = frontend.loadProgramFromFileList(files, cwd, useStd); @@ -162,6 +162,7 @@ yargs ) + .demandCommand() .help() .version() .argv diff --git a/@boltlang/cli/tsconfig.json b/@boltlang/cli/tsconfig.json new file mode 100644 index 000000000..ba23cc2e0 --- /dev/null +++ b/@boltlang/cli/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2019", + "module": "commonjs", + "sourceMap": true, + "noEmit": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": "../../" + } +} diff --git a/webpack.prod.js b/@boltlang/cli/webpack.config.js similarity index 72% rename from webpack.prod.js rename to @boltlang/cli/webpack.config.js index b6b1fa2d6..420271a83 100644 --- a/webpack.prod.js +++ b/@boltlang/cli/webpack.config.js @@ -1,17 +1,16 @@ -const webpack = require("webpack"); -const path = require("path"); +const path = require('path'); +const webpack = require('webpack'); module.exports = { target: 'node', - mode: 'development', entry: { - 'bolt': './src/bin/bolt.ts', - 'bolt-test': './src/bin/bolt-test.ts', + 'bolt': './src/main.ts' }, output: { filename: 'bin/[name].js', - path: path.resolve(__dirname, 'build'), + path: path.resolve(__dirname), + devtoolModuleFilenameTemplate: '[absolute-resource-path]' }, resolve: { extensions: [".ts", ".js"], @@ -36,4 +35,3 @@ module.exports = { ] } }; - diff --git a/@boltlang/compiler/.gitignore b/@boltlang/compiler/.gitignore new file mode 100644 index 000000000..624468cc4 --- /dev/null +++ b/@boltlang/compiler/.gitignore @@ -0,0 +1,16 @@ + +# all compiled files except a few +*.js +*.js.map +*.d.ts +*.d.ts.map +!/webpack.config.js + +# npm +node_modules/ + +# compiled code for testing +/lib/ + +# often created when publishing to npm +*.tgz diff --git a/@boltlang/compiler/.npmignore b/@boltlang/compiler/.npmignore new file mode 100644 index 000000000..a21297675 --- /dev/null +++ b/@boltlang/compiler/.npmignore @@ -0,0 +1,7 @@ +/src/ +/test/ +/scripts/ +Makefile +webpack.config.js +*.tgz +tsconfig.json \ No newline at end of file diff --git a/Makefile b/@boltlang/compiler/Makefile similarity index 87% rename from Makefile rename to @boltlang/compiler/Makefile index bcdc1af12..75c7abfc2 100644 --- a/Makefile +++ b/@boltlang/compiler/Makefile @@ -1,6 +1,6 @@ all: src/ast.ts - bolt check test.bolt --no-std + npm test src/ast.ts: src/ast-spec.ts @echo "Generating AST definitions ..." diff --git a/@boltlang/compiler/package-lock.json b/@boltlang/compiler/package-lock.json new file mode 100644 index 000000000..0b37bdd7d --- /dev/null +++ b/@boltlang/compiler/package-lock.json @@ -0,0 +1,622 @@ +{ + "name": "@samvv/bolt", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/commonmark": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@types/commonmark/-/commonmark-0.27.4.tgz", + "integrity": "sha512-7koSjp08QxKoS1/+3T15+kD7+vqOUvZRHvM8PutF3Xsk5aAEkdlIGRsHJ3/XsC3izoqTwBdRW/vH7rzCKkIicA==" + }, + "@types/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-mIenTfsIe586/yzsyfql69KRnA75S8SVXQbTLpDejRrjH0QSJcpu3AUOi/Vjnt9IOsXKxPhJfGpQUNMueIU1fQ==" + }, + "@types/fs-extra": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.4.tgz", + "integrity": "sha512-50GO5ez44lxK5MDH90DYHFFfqxH7+fTqEEnvguQRzJ/tY9qFrMSHLiYHite+F3SNmf7+LHC1eMXojuD+E3Qcyg==", + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/js-yaml": { + "version": "3.12.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz", + "integrity": "sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==" + }, + "@types/microtime": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/microtime/-/microtime-2.1.0.tgz", + "integrity": "sha1-rb2Z9QGoXIhpXrHv01FYEPJWOTI=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==" + }, + "@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" + }, + "@types/ora": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/ora/-/ora-3.2.0.tgz", + "integrity": "sha512-jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w==", + "requires": { + "ora": "*" + } + }, + "@types/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==" + }, + "@types/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" + }, + "@types/yargs": { + "version": "15.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", + "integrity": "sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" + }, + "cliui": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.3.tgz", + "integrity": "sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "commonmark": { + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.29.2.tgz", + "integrity": "sha512-spe43MvEIaPpHss1T7z4yQaFQfLGmMu+yvCwv6xqhELIwkG/ZGgDpxOPzKxnuYzYT2c+aziCCc8m2rBVLA7jUA==", + "requires": { + "entities": "~2.0", + "mdurl": "~1.0.1", + "minimist": ">=1.2.2", + "string.prototype.repeat": "^0.2.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "requires": { + "chalk": "^4.0.0" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "microtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/microtime/-/microtime-3.0.0.tgz", + "integrity": "sha512-SirJr7ZL4ow2iWcb54bekS4aWyBQNVcEDBiwAz9D/sTgY59A+uE8UJU15cp5wyZmPBwg/3zf8lyCJ5NUe1nVlQ==", + "requires": { + "node-addon-api": "^1.2.0", + "node-gyp-build": "^3.8.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node-addon-api": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" + }, + "node-gyp-build": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", + "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ora": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", + "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", + "requires": { + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + } + } + }, + "string.prototype.repeat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", + "integrity": "sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + } + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "uuid": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==" + }, + "vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" + }, + "vscode-languageserver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", + "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", + "requires": { + "vscode-languageserver-protocol": "^3.15.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "requires": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" + }, + "yargs": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.0.tgz", + "integrity": "sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.2", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "yargs-parser": { + "version": "20.2.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.3.tgz", + "integrity": "sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww==" + } + } + } + } +} diff --git a/@boltlang/compiler/package.json b/@boltlang/compiler/package.json new file mode 100644 index 000000000..a6b02a61f --- /dev/null +++ b/@boltlang/compiler/package.json @@ -0,0 +1,33 @@ +{ + "name": "@boltlang/compiler", + "version": "0.0.1", + "description": "A programming language for rapid prototyping", + "main": "index.js", + "scripts": { + "prepare": "tsc || exit 0", + "test": "ava", + "watch": "tsc -w --preserveWatchOutput", + "generate-ast": "tsastgen src/ast-spec.ts:src/ast.ts" + }, + "author": "Sam Vervaeck ", + "license": "GPL-3.0", + "repository": "https://github.com/samvv/Bolt", + "devDependencies": { + "@types/fs-extra": "^9.0.4", + "@types/glob": "^7.1.3", + "@types/js-yaml": "^3.12.5", + "@types/microtime": "^2.1.0", + "@types/node": "^14.14.7", + "@types/semver": "^7.3.4", + "@types/uuid": "^8.3.0", + "chalk": "^4.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "js-yaml": "^3.14.0", + "microtime": "^3.0.0", + "moment": "^2.29.1", + "reflect-metadata": "^0.1.13", + "semver": "^7.3.2", + "uuid": "^8.3.1" + } +} \ No newline at end of file diff --git a/scripts/bolt.pegjs b/@boltlang/compiler/scripts/bolt.pegjs similarity index 100% rename from scripts/bolt.pegjs rename to @boltlang/compiler/scripts/bolt.pegjs diff --git a/src/ast-spec.ts b/@boltlang/compiler/src/ast-spec.ts similarity index 95% rename from src/ast-spec.ts rename to @boltlang/compiler/src/ast-spec.ts index f5b673f83..6400e9a71 100644 --- a/src/ast-spec.ts +++ b/@boltlang/compiler/src/ast-spec.ts @@ -5,7 +5,7 @@ import { Package } from "./package" import { Diagnostic } from "./diagnostics"; import { serializeTag, inspectTag, indent } from "./util"; import { InspectOptionsStylized, inspect } from "util"; -import { Type } from "./checker"; +import { Type } from "./checker" let nextNodeId = 1; @@ -18,6 +18,8 @@ enum NodeFlags { HasTypeError = 1, } +declare function isSourceFile(node: Syntax): boolean; + export abstract class Syntax { public id: number; @@ -26,6 +28,8 @@ export abstract class Syntax { public errors: Diagnostic[] = []; + public type: Type; + public hasTypeError() { return (this.flags & NodeFlags.HasTypeError) > 0; } @@ -34,25 +38,6 @@ export abstract class Syntax { this.flags |= NodeFlags.HasTypeError; } - // -------------------------------------------------------------------------------- - // NOTE The following properties and methods are only valid when inside a BoltTraitDeclaration - // TODO Move this to BoltTraitDeclaration as soon as tsastgen supports this - - private impls?: BoltImplDeclaration[]; - - public addImplDeclaration(node: BoltImplDeclaration) { - if (this.impls === undefined) { - this.impls = []; - } - this.impls.push(node); - } - - public getImplDeclarations(): BoltImplDeclaration[] { - return this.impls ?? []; - } - - // -------------------------------------------------------------------------------- - public abstract kind: SyntaxKind; public abstract parentNode: Syntax | null = null; @@ -122,6 +107,17 @@ export abstract class Syntax { return null; } + public getSourceFile(): SourceFile { + let currNode: Syntax | null = this; + do { + if (isSourceFile(currNode)) { + return currNode; + } + currNode = currNode.parentNode; + } while (currNode !== null); + throw new Error(`Could not get a source file for node ${this.kind}`); + } + public *findAllChildrenOfKind(kind: K): IterableIterator> { for (const node of this.preorder()) { if (!node.mayContainKind(kind)) { @@ -172,7 +168,7 @@ export interface BoltIdentifier extends BoltSymbol { export interface BoltOperatorLike extends BoltSymbol {} -export interface BoltOperator extends BoltSymbol { +export interface BoltOperator extends BoltOperatorLike, BoltSymbol { text: string, } @@ -253,7 +249,7 @@ export interface BoltReferenceTypeExpression extends BoltTypeExpression { export interface BoltFunctionTypeExpression extends BoltTypeExpression { params: BoltParameter[], - returnType: BoltTypeExpression | null, + returnTypeExpr: BoltTypeExpression | null, } export interface BoltLiftedTypeExpression extends BoltTypeExpression { @@ -335,7 +331,7 @@ export interface BoltMemberExpression extends BoltExpression { export interface BoltFunctionExpression extends BoltExpression { params: BoltParameter[], - returnType: BoltTypeExpression | null, + returnTypeExpr: BoltTypeExpression | null, body: BoltFunctionBodyElement[], } @@ -359,13 +355,12 @@ export interface BoltMatchExpression extends BoltExpression { } export interface BoltCaseStatementCase extends BoltSyntax { - test: BoltExpression, + test: BoltExpression | null, body: BoltFunctionBodyElement[], } export interface BoltCaseStatement extends BoltStatement { cases: BoltCaseStatementCase[], - alternative: BoltFunctionBodyElement[] | null; } export interface BoltBlockExpression extends BoltExpression { @@ -439,7 +434,7 @@ export interface BoltFunctionDeclaration extends BoltFunctionBodyElement, BoltDe target: string, name: BoltSymbol, params: BoltParameter[], - returnType: BoltTypeExpression | null, + returnTypeExpr: BoltTypeExpression | null, typeParams: BoltTypeParameter[] | null, body: BoltFunctionBodyElement[] | null, } diff --git a/src/ast.ts b/@boltlang/compiler/src/ast.ts similarity index 98% rename from src/ast.ts rename to @boltlang/compiler/src/ast.ts index 646c59590..b5b3e536c 100644 --- a/src/ast.ts +++ b/@boltlang/compiler/src/ast.ts @@ -23,30 +23,19 @@ enum NodeFlags { HasTypeError = 1 } +declare function isSourceFile(node: Syntax): boolean; + export abstract class SyntaxBase { public id: number; private flags = NodeFlags.None; public errors: Diagnostic[] = []; + public type: Type; public hasTypeError() { return (this.flags & NodeFlags.HasTypeError) > 0; } public markAsHavingTypeError() { this.flags |= NodeFlags.HasTypeError; } - // -------------------------------------------------------------------------------- - // NOTE The following properties and methods are only valid when inside a BoltTraitDeclaration - // TODO Move this to BoltTraitDeclaration as soon as tsastgen supports this - private impls?: BoltImplDeclaration[]; - public addImplDeclaration(node: BoltImplDeclaration) { - if (this.impls === undefined) { - this.impls = []; - } - this.impls.push(node); - } - public getImplDeclarations(): BoltImplDeclaration[] { - return this.impls ?? []; - } - // -------------------------------------------------------------------------------- public abstract kind: SyntaxKind; public abstract parentNode: Syntax | null = null; public abstract getChildNodes(): IterableIterator; @@ -107,6 +96,16 @@ export abstract class SyntaxBase { } return null; } + public getSourceFile(): SourceFile { + let currNode: Syntax | null = this; + do { + if (isSourceFile(currNode)) { + return currNode; + } + currNode = currNode.parentNode; + } while (currNode !== null); + throw new Error(`Could not get a source file for node ${this.kind}`); + } public *findAllChildrenOfKind(kind: K): IterableIterator> { for (const node of this.preorder()) { if (!node.mayContainKind(kind)) { @@ -196,7 +195,7 @@ type BoltIdentifierParent = BoltQualName | BoltTypeParameter | BoltBindPattern | type BoltIdentifierChild = never; -export type BoltOperatorLike = BoltVBar | BoltLtSign | BoltExMark | BoltGtSign; +export type BoltOperatorLike = BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltOperator; export class BoltOperator extends SyntaxBase { parentNode: null | BoltOperatorParent = null; @@ -706,10 +705,10 @@ type BoltReferenceTypeExpressionChild = BoltLiftedTypeExpression | BoltFunctionT export class BoltFunctionTypeExpression extends SyntaxBase { parentNode: null | BoltFunctionTypeExpressionParent = null; kind: SyntaxKind.BoltFunctionTypeExpression = SyntaxKind.BoltFunctionTypeExpression; - constructor(public params: BoltParameter[], public returnType: BoltTypeExpression | null, span: TextSpan | null = null) { super(span); } + constructor(public params: BoltParameter[], public returnTypeExpr: BoltTypeExpression | null, span: TextSpan | null = null) { super(span); } *getChildNodes(): IterableIterator { for (let element of this.params) - yield element; if (this.returnType !== null) - yield this.returnType; } + yield element; if (this.returnTypeExpr !== null) + yield this.returnTypeExpr; } } type BoltFunctionTypeExpressionParent = BoltReferenceTypeExpression | BoltFunctionTypeExpression | BoltTypeParameter | BoltTypePattern | BoltRecordPattern | BoltFunctionExpression | BoltParameter | BoltTraitDeclaration | BoltRecordDeclarationField | BoltFunctionDeclaration | BoltVariableDeclaration | BoltTypeAliasDeclaration | never; @@ -900,10 +899,10 @@ type BoltMemberExpressionChild = BoltIdentifier | BoltConstantExpression | BoltB export class BoltFunctionExpression extends SyntaxBase { parentNode: null | BoltFunctionExpressionParent = null; kind: SyntaxKind.BoltFunctionExpression = SyntaxKind.BoltFunctionExpression; - constructor(public params: BoltParameter[], public returnType: BoltTypeExpression | null, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + constructor(public params: BoltParameter[], public returnTypeExpr: BoltTypeExpression | null, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } *getChildNodes(): IterableIterator { for (let element of this.params) - yield element; if (this.returnType !== null) - yield this.returnType; for (let element of this.body) + yield element; if (this.returnTypeExpr !== null) + yield this.returnTypeExpr; for (let element of this.body) yield element; } } @@ -960,8 +959,9 @@ type BoltMatchExpressionChild = BoltMatchArm | BoltConstantExpression | BoltBloc export class BoltCaseStatementCase extends SyntaxBase { parentNode: null | BoltCaseStatementCaseParent = null; kind: SyntaxKind.BoltCaseStatementCase = SyntaxKind.BoltCaseStatementCase; - constructor(public test: BoltExpression, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } - *getChildNodes(): IterableIterator { yield this.test; for (let element of this.body) + constructor(public test: BoltExpression | null, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.test !== null) + yield this.test; for (let element of this.body) yield element; } } @@ -972,16 +972,14 @@ type BoltCaseStatementCaseChild = BoltMacroCall | BoltVariableDeclaration | Bolt export class BoltCaseStatement extends SyntaxBase { parentNode: null | BoltCaseStatementParent = null; kind: SyntaxKind.BoltCaseStatement = SyntaxKind.BoltCaseStatement; - constructor(public cases: BoltCaseStatementCase[], public alternative: BoltFunctionBodyElement[] | null, span: TextSpan | null = null) { super(span); } + constructor(public cases: BoltCaseStatementCase[], span: TextSpan | null = null) { super(span); } *getChildNodes(): IterableIterator { for (let element of this.cases) - yield element; if (this.alternative !== null) - for (let element of this.alternative) - yield element; } + yield element; } } -type BoltCaseStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltCaseStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; -type BoltCaseStatementChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltAssignStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltCaseStatement | BoltCaseStatementCase | never; +type BoltCaseStatementChild = BoltCaseStatementCase | never; export class BoltBlockExpression extends SyntaxBase { parentNode: null | BoltBlockExpressionParent = null; @@ -1016,7 +1014,7 @@ export class BoltReturnStatement extends SyntaxBase { yield this.value; } } -type BoltReturnStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltReturnStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltReturnStatementChild = BoltConstantExpression | BoltBlockExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordExpression | never; @@ -1041,7 +1039,7 @@ export class BoltConditionalStatement extends SyntaxBase { yield element; } } -type BoltConditionalStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltConditionalStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltConditionalStatementChild = BoltConditionalCase | never; @@ -1052,7 +1050,7 @@ export class BoltResumeStatement extends SyntaxBase { *getChildNodes(): IterableIterator { yield this.value; } } -type BoltResumeStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltResumeStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltResumeStatementChild = BoltConstantExpression | BoltBlockExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordExpression | never; @@ -1063,7 +1061,7 @@ export class BoltExpressionStatement extends SyntaxBase { *getChildNodes(): IterableIterator { yield this.expression; } } -type BoltExpressionStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltExpressionStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltExpressionStatementChild = BoltConstantExpression | BoltBlockExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordExpression | never; @@ -1074,7 +1072,7 @@ export class BoltAssignStatement extends SyntaxBase { *getChildNodes(): IterableIterator { yield this.lhs; yield this.rhs; } } -type BoltAssignStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltAssignStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltAssignStatementChild = BoltConstantExpression | BoltBlockExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordExpression | BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | never; @@ -1086,7 +1084,7 @@ export class BoltLoopStatement extends SyntaxBase { yield element; } } -type BoltLoopStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltLoopStatementParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltLoopStatementChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltAssignStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltCaseStatement | never; @@ -1127,17 +1125,17 @@ export type BoltFunctionBodyElement = BoltMacroCall | BoltVariableDeclaration | export class BoltFunctionDeclaration extends SyntaxBase { parentNode: null | BoltFunctionDeclarationParent = null; kind: SyntaxKind.BoltFunctionDeclaration = SyntaxKind.BoltFunctionDeclaration; - constructor(public modifiers: BoltModifiers, public target: string, public name: BoltSymbol, public params: BoltParameter[], public returnType: BoltTypeExpression | null, public typeParams: BoltTypeParameter[] | null, public body: BoltFunctionBodyElement[] | null, span: TextSpan | null = null) { super(span); } + constructor(public modifiers: BoltModifiers, public target: string, public name: BoltSymbol, public params: BoltParameter[], public returnTypeExpr: BoltTypeExpression | null, public typeParams: BoltTypeParameter[] | null, public body: BoltFunctionBodyElement[] | null, span: TextSpan | null = null) { super(span); } *getChildNodes(): IterableIterator { yield this.name; for (let element of this.params) - yield element; if (this.returnType !== null) - yield this.returnType; if (this.typeParams !== null) + yield element; if (this.returnTypeExpr !== null) + yield this.returnTypeExpr; if (this.typeParams !== null) for (let element of this.typeParams) yield element; if (this.body !== null) for (let element of this.body) yield element; } } -type BoltFunctionDeclarationParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltTraitDeclaration | BoltImplDeclaration | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltFunctionDeclarationParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltTraitDeclaration | BoltImplDeclaration | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltFunctionDeclarationChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltAssignStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltCaseStatement | BoltTypeParameter | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltParameter | BoltOperator | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltIdentifier | never; @@ -1150,7 +1148,7 @@ export class BoltVariableDeclaration extends SyntaxBase { yield this.value; } } -type BoltVariableDeclarationParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; +type BoltVariableDeclarationParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; type BoltVariableDeclarationChild = BoltConstantExpression | BoltBlockExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordExpression | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | never; @@ -1288,7 +1286,7 @@ export class BoltMacroCall extends SyntaxBase { *getChildNodes(): IterableIterator { yield this.name; } } -type BoltMacroCallParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltTraitDeclaration | BoltImplDeclaration | BoltCaseStatement | BoltLoopStatement | BoltFunctionDeclaration | BoltRecordDeclaration | BoltModule | never; +type BoltMacroCallParent = BoltSourceFile | BoltFunctionExpression | BoltCaseStatementCase | BoltBlockExpression | BoltConditionalCase | BoltTraitDeclaration | BoltImplDeclaration | BoltLoopStatement | BoltFunctionDeclaration | BoltRecordDeclaration | BoltModule | never; type BoltMacroCallChild = BoltIdentifier | never; @@ -2124,7 +2122,7 @@ export function createBoltTypeOfExpression(expression: BoltExpression, span: Tex export function createBoltReferenceTypeExpression(name: BoltQualName, typeArgs: BoltTypeExpression[] | null, span: TextSpan | null = null): BoltReferenceTypeExpression { return new BoltReferenceTypeExpression(name, typeArgs, span); } -export function createBoltFunctionTypeExpression(params: BoltParameter[], returnType: BoltTypeExpression | null, span: TextSpan | null = null): BoltFunctionTypeExpression { return new BoltFunctionTypeExpression(params, returnType, span); } +export function createBoltFunctionTypeExpression(params: BoltParameter[], returnTypeExpr: BoltTypeExpression | null, span: TextSpan | null = null): BoltFunctionTypeExpression { return new BoltFunctionTypeExpression(params, returnTypeExpr, span); } export function createBoltLiftedTypeExpression(expression: BoltExpression, span: TextSpan | null = null): BoltLiftedTypeExpression { return new BoltLiftedTypeExpression(expression, span); } @@ -2156,7 +2154,7 @@ export function createBoltReferenceExpression(name: BoltQualName, span: TextSpan export function createBoltMemberExpression(expression: BoltExpression, path: BoltIdentifier[], span: TextSpan | null = null): BoltMemberExpression { return new BoltMemberExpression(expression, path, span); } -export function createBoltFunctionExpression(params: BoltParameter[], returnType: BoltTypeExpression | null, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltFunctionExpression { return new BoltFunctionExpression(params, returnType, body, span); } +export function createBoltFunctionExpression(params: BoltParameter[], returnTypeExpr: BoltTypeExpression | null, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltFunctionExpression { return new BoltFunctionExpression(params, returnTypeExpr, body, span); } export function createBoltCallExpression(operator: BoltExpression, operands: BoltExpression[], span: TextSpan | null = null): BoltCallExpression { return new BoltCallExpression(operator, operands, span); } @@ -2166,9 +2164,9 @@ export function createBoltMatchArm(pattern: BoltPattern, body: BoltExpression, s export function createBoltMatchExpression(value: BoltExpression, arms: BoltMatchArm[], span: TextSpan | null = null): BoltMatchExpression { return new BoltMatchExpression(value, arms, span); } -export function createBoltCaseStatementCase(test: BoltExpression, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltCaseStatementCase { return new BoltCaseStatementCase(test, body, span); } +export function createBoltCaseStatementCase(test: BoltExpression | null, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltCaseStatementCase { return new BoltCaseStatementCase(test, body, span); } -export function createBoltCaseStatement(cases: BoltCaseStatementCase[], alternative: BoltFunctionBodyElement[] | null, span: TextSpan | null = null): BoltCaseStatement { return new BoltCaseStatement(cases, alternative, span); } +export function createBoltCaseStatement(cases: BoltCaseStatementCase[], span: TextSpan | null = null): BoltCaseStatement { return new BoltCaseStatement(cases, span); } export function createBoltBlockExpression(elements: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltBlockExpression { return new BoltBlockExpression(elements, span); } @@ -2192,7 +2190,7 @@ export function createBoltParameter(index: number, bindings: BoltPattern, typeEx export function createBoltModule(modifiers: BoltModifiers, name: BoltIdentifier[], elements: BoltSourceElement[], span: TextSpan | null = null): BoltModule { return new BoltModule(modifiers, name, elements, span); } -export function createBoltFunctionDeclaration(modifiers: BoltModifiers, target: string, name: BoltSymbol, params: BoltParameter[], returnType: BoltTypeExpression | null, typeParams: BoltTypeParameter[] | null, body: BoltFunctionBodyElement[] | null, span: TextSpan | null = null): BoltFunctionDeclaration { return new BoltFunctionDeclaration(modifiers, target, name, params, returnType, typeParams, body, span); } +export function createBoltFunctionDeclaration(modifiers: BoltModifiers, target: string, name: BoltSymbol, params: BoltParameter[], returnTypeExpr: BoltTypeExpression | null, typeParams: BoltTypeParameter[] | null, body: BoltFunctionBodyElement[] | null, span: TextSpan | null = null): BoltFunctionDeclaration { return new BoltFunctionDeclaration(modifiers, target, name, params, returnTypeExpr, typeParams, body, span); } export function createBoltVariableDeclaration(modifiers: BoltModifiers, bindings: BoltPattern, typeExpr: BoltTypeExpression | null, value: BoltExpression | null, span: TextSpan | null = null): BoltVariableDeclaration { return new BoltVariableDeclaration(modifiers, bindings, typeExpr, value, span); } @@ -2364,7 +2362,7 @@ export function isBoltSymbol(value: any): value is BoltSymbol { return value.kin export function isBoltIdentifier(value: any): value is BoltIdentifier { return value.kind === SyntaxKind.BoltIdentifier; } -export function isBoltOperatorLike(value: any): value is BoltOperatorLike { return value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign; } +export function isBoltOperatorLike(value: any): value is BoltOperatorLike { return value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign || value.kind === SyntaxKind.BoltOperator; } export function isBoltOperator(value: any): value is BoltOperator { return value.kind === SyntaxKind.BoltOperator; } @@ -3218,7 +3216,7 @@ export class Visitor { protected visitBoltSymbol(node: BoltSymbol): void { this.visitBoltToken(node); } protected visitBoltIdentifier(node: BoltIdentifier): void { this.visitBoltSymbol(node); } protected visitBoltOperatorLike(node: BoltOperatorLike): void { this.visitBoltSymbol(node); } - protected visitBoltOperator(node: BoltOperator): void { this.visitBoltSymbol(node); } + protected visitBoltOperator(node: BoltOperator): void { this.visitBoltOperatorLike(node); this.visitBoltSymbol(node); } protected visitBoltAssignment(node: BoltAssignment): void { this.visitBoltToken(node); } protected visitBoltComma(node: BoltComma): void { this.visitBoltToken(node); } protected visitBoltSemi(node: BoltSemi): void { this.visitBoltToken(node); } diff --git a/src/bindings.ts b/@boltlang/compiler/src/bindings.ts similarity index 100% rename from src/bindings.ts rename to @boltlang/compiler/src/bindings.ts diff --git a/@boltlang/compiler/src/checker.ts b/@boltlang/compiler/src/checker.ts new file mode 100644 index 000000000..e7bdded7a --- /dev/null +++ b/@boltlang/compiler/src/checker.ts @@ -0,0 +1,306 @@ + +import { BoltLiftedTypeExpression, SourceFile, Syntax, SyntaxKind } from "./ast"; +import { FastStringMap } from "./util"; + +enum TypeKind { + TypeVar, + PrimType, + ForallType, + ArrowType, +} + +type Type + = TypeVar + | PrimType + | ForallType + | ArrowType + +interface TypeBase { + kind: TypeKind; +} + +interface TypeVar extends TypeBase { + kind: TypeKind.TypeVar; + varId: string; +} + +interface PrimType extends TypeBase { + kind: TypeKind.PrimType; + primId: number; + name: string; +} + +class TypeVarSubstitution { + + private mapping = new FastStringMap() + + public add(source: TypeVar, target: Type) { + this.mapping.set(source.varId, target); + } + + public assign(other: TypeVarSubstitution): void { + for (const [name, type] of other.mapping) { + this.mapping.overwrite(name, type); + } + } + +} + +interface ForallType extends TypeBase { + kind: TypeKind.ForallType; + typeVars: TypeVarSubstitution; + type: Type; +} + +interface ArrowType extends TypeBase { + kind: TypeKind.ArrowType; + paramTypes: Type[]; + returnType: Type; +} + +type Constraint = [Type, Type] + +class TypeEnv { + + private mapping = new FastStringMap(); + + public set(name: string, scheme: Type) { + this.mapping.set(name, scheme) + } + + public remove(name: string): void { + this.mapping.delete(name) + } + + public lookup(name: string): Type | null { + if (!this.mapping.has(name)) { + return null; + } + return this.mapping.get(name) + } + + public has(typeVar: TypeVar): boolean { + return this.mapping.has(typeVar.varId) + } + +} + +export class TypeChecker { + + private nextVarId = 1; + private nextPrimTypeId = 1; + + private intType = this.createPrimType('int'); + private stringType = this.createPrimType('String'); + + public isIntType(type: Type) { + return type === this.intType; + } + + public isStringType(type: Type) { + return type === this.stringType; + } + + private builtinTypes = new FastStringMap([ + ['int', this.intType], + ['String', this.stringType] + ]); + + private createTypeVar(): TypeVar { + return { kind: TypeKind.TypeVar, varId: (this.nextVarId++).toString() } + } + + private createPrimType(name: string): PrimType { + return { kind: TypeKind.PrimType, name, primId: this.nextPrimTypeId++ } + } + + private createArrowType(paramTypes: Type[], returnType: Type): ArrowType { + return { kind: TypeKind.ArrowType, paramTypes, returnType } + } + + private createForallType(typeVars: FastStringMap, type: Type): ForallType { + return { kind: TypeKind.ForallType, typeVars, type } + } + + public registerSourceFile(sourceFile: SourceFile): void { + + } + + private addFreeVariables(type: Type, freeVariables: Set, excludedVariables: Set) { + + switch (type.kind) { + + case TypeKind.PrimType: + break; + + case TypeKind.TypeVar: + if (!excludedVariables.has(type.varId)) { + freeVariables.add(type.varId); + } + break; + + case TypeKind.ArrowType: + for (const paramType of type.paramTypes) { + this.addFreeVariables(paramType, freeVariables, excludedVariables); + } + this.addFreeVariables(type.returnType, freeVariables, excludedVariables); + break; + + case TypeKind.ForallType: + const newExcludedVariables = new Set(excludedVariables); + for (const typeVar of type.typeVars.values()) { + newExcludedVariables.add(typeVar.varId); + } + this.addFreeVariables(type.type, freeVariables, newExcludedVariables) + break; + + default: + throw new Error(`Could not determine the free variables in an unknown type`) + + } + + } + + private applySubstitution(type: Type, substitution: TypeVarSubstitution): Type { + + switch (type.kind) { + + case TypeKind.PrimType: + return type; + + case TypeKind.TypeVar: + if (substitution.has(type.varId)) { + return substitution.get(type.varId) + } else { + return type; + } + + case TypeKind.ArrowType: + return this.createArrowType( + type.paramTypes.map(t => this.applySubstitution(t, substitution)), + this.applySubstitution(type.returnType, substitution) + ) + + case TypeKind.ForallType: + const newSubstitution = new TypeVarSubstitution(); + for (const [name, mappedType] of substitution) { + if (!type.typeVars.has(name)) { + newSubstitution.set(name, mappedType); + } + } + return this.createForallType(type.typeVars, this.applySubstitution(type.type, newSubstitution)); + + default: + throw new Error(`Could not substitute unrecognosed type`); + + } + + } + + private applySubstitutionToConstraints(constraints: Constraint[], substitution: TypeVarSubstitution): void { + for (let i = 0; i < constraints.length; i++) { + constraints[i][0] = this.applySubstitution(constraints[i][0], substitution) + constraints[i][1] = this.applySubstitution(constraints[i][1], substitution) + } + } + + private inferNode(node: Syntax, env: TypeEnv) { + + switch (node.kind) { + + case SyntaxKind.BoltConstantExpression: + { + if (typeof(node.value) === 'bigint') { + return this.intType; + } else if (typeof(node.value === 'string')) { + return this.stringType; + } + } + + case SyntaxKind.BoltReferenceExpression: + { + return this.createTypeVar() + } + + case SyntaxKind.BoltCallExpression: + { + const operatorType = this.createTypeVar() + const operandTypes = node.operands.map(this.createTypeVar.bind(this)) + return this.createArrowType(operandTypes, operatorType); + } + + } + + } + + public checkNode(node: Syntax): void { + + } + + private solveConstraints(constraints: Constraint[]) { + let substitution = new TypeVarSubstitution(); + while (true) { + if (constraints.length === 0) { + return substitution + } + const [a, b] = constraints.pop()!; + const newSubstitution = this.unify(a, b); + substitution.assign(newSubstitution); + this.applySubstitutionToConstraints(constraints, newSubstitution); + } + } + + private areTypesEqual(a: Type, b: Type): boolean { + if (a === b) { + return true; + } + if (a.kind !== b.kind) { + return false; + } + if (a.kind === TypeKind.PrimType && b.kind === TypeKind.PrimType) { + return a.primId === b.primId; + } + if (a.kind === TypeKind.ArrowType && b.kind === TypeKind.ArrowType) { + if (a.paramTypes.length !== b.paramTypes.length + || !this.areTypesEqual(a.returnType, b.returnType)) { + return false; + } + for (let i = 0; i < a.paramTypes.length; i++) { + if (!this.areTypesEqual(a.paramTypes[i], b.paramTypes[i])) { + return false; + } + } + return true; + } + if (a.kind === TypeKind.TypeVar && b.kind === TypeKind.TypeVar) { + return a.varId === b.varId; + } + throw new Error(`Unexpected combination of types while checking equality`) + } + + private unify(a: Type, b: Type): TypeVarSubstitution { + if (this.areTypesEqual(a, b)) { + return new TypeVarSubstitution(); + } + if (a.kind === TypeKind.TypeVar) { + const substitution = new TypeVarSubstitution(); + substitution.add(a, b); + return substitution + } + if (b.kind === TypeKind.TypeVar) { + const substitution = new TypeVarSubstitution(); + substitution.add(b, a); + return substitution + } + throw new Error(`Types ${a} and ${b} could not be unified`) + } + + public getTypeOfNode(node: Syntax, env: TypeEnv): unknown { + return this.inferNode(node, env); + } + + public isBuiltinType(name: string) { + return this.builtinTypes.has(name); + } + +} diff --git a/src/checks.ts b/@boltlang/compiler/src/checks.ts similarity index 95% rename from src/checks.ts rename to @boltlang/compiler/src/checks.ts index 3e67b604b..199d64b94 100644 --- a/src/checks.ts +++ b/@boltlang/compiler/src/checks.ts @@ -6,6 +6,8 @@ import { inject } from "./ioc"; import { SymbolResolver, ScopeType } from "./resolver"; import { assert, every } from "./util"; import { emitNode } from "./emitter"; +import { TypeChecker } from "./checker"; +import { getSymbolText } from "./common"; export class CheckInvalidFilePaths extends Visitor { @@ -34,7 +36,8 @@ export class CheckReferences extends Visitor { constructor( @inject private diagnostics: DiagnosticPrinter, - @inject private resolver: SymbolResolver + @inject private resolver: SymbolResolver, + @inject private checker: TypeChecker ) { super(); } @@ -112,6 +115,10 @@ export class CheckReferences extends Visitor { } protected visitBoltReferenceTypeExpression(node: BoltReferenceTypeExpression) { + const name = getSymbolText(node.name.name); + if (node.name.modulePath.length === 0 && this.checker.isBuiltinType(name)) { + return; + } const scope = this.resolver.getScopeSurroundingNode(node, ScopeType.Type); assert(scope !== null); const symbolPath = convertNodeToSymbolPath(node.name); diff --git a/src/common.ts b/@boltlang/compiler/src/common.ts similarity index 87% rename from src/common.ts rename to @boltlang/compiler/src/common.ts index b070b7b73..ec410c2d8 100644 --- a/src/common.ts +++ b/@boltlang/compiler/src/common.ts @@ -3,22 +3,20 @@ import { BoltReturnStatement, SyntaxKind, BoltExpression, - BoltQualName, kindToString, Syntax, Token, isBoltPunctuated, - SourceFile, BoltSourceFile, isSourceFile, - BoltSyntax, BoltModifiers, - ReturnStatement, FunctionBodyElement, - BoltToken + BoltToken, + BoltSymbol } from "./ast"; + import { BOLT_SUPPORTED_LANGUAGES } from "./constants" -import { FastStringMap, enumOr, escapeChar, assert, registerClass, Newable, GeneratorStream, FastMultiMap } from "./util"; +import { enumOr, escapeChar, assert, registerClass, GeneratorStream, FastMultiMap } from "./util"; import { TextSpan, TextPos, TextFile } from "./text"; import { Scanner } from "./scanner"; import { convertNodeToSymbolPath, SymbolPath } from "./resolver"; @@ -55,23 +53,33 @@ export function getNodeLanguage(node: Syntax): string { throw new Error(`Could not determine the language of ${kindStr}`); } -export function createTokenStream(node: Syntax) { - if (isBoltPunctuated(node)) { - const origPos = node.span!.start; +export function createTokenStream(value: any) { + if (value instanceof Scanner) { + return new GeneratorStream(() => value.scan()); + } else if (typeof(value) === 'string') { + const scanner = new Scanner(new TextFile('#'), value); + return new GeneratorStream(() => scanner.scan()); + } else if (isBoltPunctuated(value)) { + const origPos = value.span!.start; const startPos = new TextPos(origPos.offset+1, origPos.line, origPos.column+1); - const scanner = new Scanner(node.span!.file, node.text, startPos); + const scanner = new Scanner(value.span!.file, value.text, startPos); return new GeneratorStream(() => scanner.scan()); } else { - throw new Error(`Could not convert ${kindToString(node.kind)} to a token stream.`); + throw new Error(`Could not convert ${kindToString(value.kind)} to a token stream.`); } } export const EOF = '' export class ScanError extends Error { + + public errorText: string; + constructor(public file: TextFile, public position: TextPos, public char: string) { - super(`${file.origPath}:${position.line}:${position.column}: unexpected char '${escapeChar(char)}'`) + super(`${file.origPath}:${position.line}:${position.column}: unexpected character '${escapeChar(char)}'`) + this.errorText = `Unexpected character '${escapeChar(char)}'` } + } export function cloneSpan(span: TextSpan | null) { @@ -143,15 +151,39 @@ export function isRightAssoc(kind: OperatorKind) { } export class ParseError extends Error { + + public errorText: string; + constructor(public actual: Syntax, public expected: SyntaxKind[]) { super(`${actual.span!.file.origPath}:${actual.span!.start.line}:${actual.span!.start.column}: expected ${enumOr(expected.map(e => describeKind(e)))} but got ${describeKind(actual.kind)}`); + this.errorText = `Expected ${enumOr(expected.map(e => describeKind(e)))} but got ${describeKind(actual.kind)}` } + } export class HardParseError extends ParseError { } +export function getSymbolText(node: BoltSymbol): string { + switch (node.kind) { + case SyntaxKind.BoltIdentifier: + return node.text; + case SyntaxKind.BoltOperator: + return node.text; + case SyntaxKind.BoltGtSign: + return '>'; + case SyntaxKind.BoltExMark: + return '!'; + case SyntaxKind.BoltLtSign: + return '<'; + case SyntaxKind.BoltVBar: + return '|'; + default: + throw new Error(`Could not convert the node ${kindToString(node.kind)} to the name of an operator`); + } +} + export interface OperatorInfo { kind: OperatorKind; arity: number; @@ -195,6 +227,7 @@ export class OperatorTable { return operatorInfo; } } + return null; } } @@ -400,16 +433,19 @@ export function describeKind(kind: SyntaxKind): string { return "'if'"; case SyntaxKind.BoltElseKeyword: return "'else'"; + case SyntaxKind.BoltTypeAliasDeclaration: + return "a type alias"; + case SyntaxKind.BoltMacroCall: + return "a macro call"; default: throw new Error(`failed to describe ${kindToString(kind)}`) } } -export function *getAllReturnStatementsInFunctionBody(body: FunctionBodyElement[]): IterableIterator { +export function *getAllReturnStatementsInFunctionBody(body: FunctionBodyElement[]): IterableIterator { for (const element of body) { switch (element.kind) { case SyntaxKind.BoltReturnStatement: - case SyntaxKind.JSReturnStatement: { yield element; break; @@ -419,9 +455,7 @@ export function *getAllReturnStatementsInFunctionBody(body: FunctionBodyElement[ for (const caseNode of element.cases) { yield* getAllReturnStatementsInFunctionBody(caseNode.body); } - if (element.alternative !== null) { - yield* getAllReturnStatementsInFunctionBody(element.alternative); - } + break; } case SyntaxKind.BoltConditionalStatement: { diff --git a/src/constants.ts b/@boltlang/compiler/src/constants.ts similarity index 100% rename from src/constants.ts rename to @boltlang/compiler/src/constants.ts diff --git a/@boltlang/compiler/src/constraint-checeker.ts b/@boltlang/compiler/src/constraint-checeker.ts new file mode 100644 index 000000000..dd0c04dfa --- /dev/null +++ b/@boltlang/compiler/src/constraint-checeker.ts @@ -0,0 +1,746 @@ + +import { BoltCallExpression, BoltExpression, BoltFunctionDeclaration, BoltFunctionExpression, BoltIdentifier, BoltPattern, BoltTypeExpression, isBoltFunctionDeclaration, isBoltRecordDeclaration, isBoltTypeAliasDeclaration, isBoltVariableDeclaration, kindToString, SourceFile, Syntax, SyntaxKind } from "./ast"; +import { getAllReturnStatementsInFunctionBody, getSymbolText } from "./common"; +import { DiagnosticPrinter, E_TOO_FEW_ARGUMENTS_FOR_FUNCTION_CALL, E_TOO_MANY_ARGUMENTS_FOR_FUNCTION_CALL, E_TYPE_MISMATCH } from "./diagnostics"; +import { Value } from "./evaluator"; +import { convertNodeToSymbolPath, ScopeType, SymbolResolver } from "./resolver"; +import { assert, FastStringMap, MapLike, prettyPrintTag } from "./util"; + +class NodeWithContext { + + constructor( + public node: N, + public context: CFGNode, + ) { + + } + +} + +class Environment { + + private boundVariables = new FastStringMap(); + + constructor(public parentEnv: Environment | null = null) { + + } + + public set(name: string, node: NodeWithContext): void { + this.boundVariables.set(name, node); + } + + public lookup(name: string) { + let currEnv: Environment | null = this; + do { + if (currEnv.boundVariables.has(name)){ + return currEnv.boundVariables.get(name); + } + currEnv = currEnv.parentEnv; + } while (currEnv !== null); + throw new Error(`Could not find '${name}' in this environment or any of its parents`); + } + +} + +enum TypeKind { + Prim, +} + +type Type + = PrimType + +class PrimType { + + public kind: TypeKind.Prim = TypeKind.Prim; + + constructor(public name: string) { + + } + + [prettyPrintTag]() { + return this.name; + } + +} + +type Condition + = ExprCondition + | NotCondition + | InContextCondition + | AlwaysTrueCondition + +class ExprCondition { + + constructor(public expression: BoltExpression) { + + } + +} + +class NotCondition { + + constructor(public conditionToNegate: Condition) { + + } + +} + +class AlwaysTrueCondition { + +} + +class ConditionGroup { + + private conditions: Condition[] = []; + + public addCondition(condition: Condition): void { + this.conditions.push(condition); + } + + public getAllConditions(): Iterable { + return this.conditions; + } + + public removeCondition(condition: Condition): void { + for (let i = 0; i < this.conditions.length; i++) { + if (condition === this.conditions[i]) { + this.conditions.splice(i, 1); + break; + } + } + } + + public isEmpty(): boolean { + return this.conditions.length === 0; + } + +} + +class InContextCondition { + + constructor(public node: CFGNode) { + + } + +} + +class HasValueAssertion { + + constructor(public value: Value) { + + } + +} + +type Assertion + = HasValueAssertion + | ConditionalAssertion + | NegatedAssertion + +class NegatedAssertion { + + constructor(public propertyToNegate: Assertion) { + + } + +} + +class ConditionalAssertion { + + constructor( + public condition: ConditionGroup, + public assertion: Assertion, + ) { + + } + +} + +class PropertyGroup { + + private properties: Assertion[] = [] + + // public addCondition(condition: Condition): void { + // this.assumptions.push(condition); + // } + + public addProperty(property: Assertion) { + this.properties.push(property); + } + + public getAllProperties(): Iterable { + return this.properties[Symbol.iterator](); + } + + [Symbol.iterator]() { + return this.properties[Symbol.iterator](); + } + +} + +export type NodeProperties = FastStringMap; + +class CFGNode { + + + constructor( + public id: number, + public sourceNode: Syntax, + public prevNode: CFGNode | null = null, + ) { + + } + + // public addPropertyToNode(node: Syntax, property: Property) { + // if (!this.properties.has(node.id)) { + // this.properties.set(node.id, new PropertyGroup); + // } + // this.properties.get(node.id).addProperty(property); + // } + + // public getPropertiesOfNode(node: Syntax): PropertyGroup { + // if (!this.properties.has(node.id)) { + // this.properties.set(node.id, new PropertyGroup); + // } + // return this.properties.get(node.id); + // } + + public isStaticContext() { + let currContext: CFGNode | null = this; + do { + if (currContext.assumptions.length > 0) { + return false; + } + currContext = currContext.prevNode; + } while (currContext !== null); + return true; + } + +} + +const BUILTIN_TYPES = [ + 'String', + 'int', + 'f32', + 'f64', + 'bool' +] + +const BUILTIN_OPERATORS: MapLike = { + + '=='(lhs: number, rhs: number) { + return lhs === rhs; + } + +} + +function hasBuiltinOperator(name: string) { + return BUILTIN_OPERATORS[name] !== undefined; +} + +function getBuiltinOperator(name: string) { + assert(BUILTIN_OPERATORS[name] !== undefined); + return BUILTIN_OPERATORS[name]; +} + +export class TypeChecker { + + private nextSimulationContextId = 1; + private contextById = new FastStringMap(); + + constructor(private resolver: SymbolResolver, private diagnostics: DiagnosticPrinter) { + + } + + private getContextById(id: number): CFGNode { + return this.contextById.get(id); + } + + public registerSourceFile(sourceFile: SourceFile) { + + } + + public checkNode(node: Syntax) { + + switch (node.kind) { + + case SyntaxKind.BoltSourceFile: + const env = new Environment(); + let context = this.createCFGNode(node); + for (const element of node.elements) { + context = this.simulateEvaluation(element, context, env); + } + this.checkTypeAssertions(node); + break; + + default: + throw new Error(`Could not check node of kind ${kindToString(node.kind)}`) + + } + + } + + private *getStaticPropertiesOfNode(node: Syntax): Iterable { + for (const [context, property] of this.getAllPropertiesOfNode(node)) { + yield property; + } + } + + private inferTypeFromStaticProperties(node: Syntax): Type { + + for (const property of this.getStaticPropertiesOfNode(node)) { + if (property instanceof HasValueAssertion) { + if (typeof(property.value) === 'bigint') { + return new PrimType('int'); + } else if (typeof(property.value) === 'string') { + return new PrimType('String'); + } else { + throw new Error(`Could not infer the type of an unknown value.`); + } + } + } + + throw new Error(`Could not deduce the type of ${kindToString(node.kind)} because not enough properties were available.`); + } + + private isTypeAssignableTo(sourceType: Type, targetType: Type) { + + if (sourceType.kind === TypeKind.Prim && targetType.kind === TypeKind.Prim) { + return sourceType.name === targetType.name; + } + + throw new Error(`Could not deduce whether unknown types ${sourceType} and ${targetType} are assignable.`); + } + + private checkTypeAssignment(value: BoltExpression, typeExpr: BoltTypeExpression) { + + switch (typeExpr.kind) { + + case SyntaxKind.BoltReferenceTypeExpression: + { + if (typeExpr.name.isAbsolute === false + && typeExpr.name.modulePath.length === 0 + && BUILTIN_TYPES.indexOf((typeExpr.name.name as BoltIdentifier).text) !== -1) { + const valueType = this.inferTypeFromStaticProperties(value); + const typeExprType = new PrimType((typeExpr.name.name as BoltIdentifier).text); + if (!this.isTypeAssignableTo(valueType, typeExprType)) { + this.diagnostics.add({ + node: value, + message: E_TYPE_MISMATCH, + severity: 'error', + args: { + left: typeExprType, + right: valueType, + } + }); + } + break; + } + const scope = this.resolver.getScopeForNode(typeExpr, ScopeType.Type); + assert(scope !== null); + const resolvedSymbol = this.resolver.resolveSymbolPath(convertNodeToSymbolPath(typeExpr), scope!); + if (resolvedSymbol === null) { + // TODO add diagnostic + break; + } + for (const declNode of resolvedSymbol.declarations) { + if (isBoltTypeAliasDeclaration(declNode)) { + // TODO + } else if (isBoltRecordDeclaration(declNode)) { + // TODO + } + } + break; + } + + default: + throw new Error(`Could not check type assignment because ${kindToString(typeExpr.kind)} was not handled.`) + + } + + } + + public getTypeFromTypeExpr(typeExpr: BoltTypeExpression) { + + } + + private checkTypeAssertions(node: Syntax): void { + + switch (node.kind) { + + case SyntaxKind.BoltModule: + case SyntaxKind.BoltSourceFile: + for (const element of node.elements) { + this.checkTypeAssertions(element); + } + break; + + case SyntaxKind.BoltVariableDeclaration: + if (node.typeExpr !== null && node.value !== null) { + this.checkTypeAssignment(node.value, node.typeExpr); + } + break; + + case SyntaxKind.BoltFunctionDeclaration: + if (node.returnTypeExpr !== null && node.body !== null) { + for (const returnStmt of getAllReturnStatementsInFunctionBody(node.body)) { + if (returnStmt.value !== null) { + this.checkTypeAssignment(returnStmt.value, node.returnTypeExpr); + } else { + // TODO + } + } + } + break; + + } + + } + + /** + * Resolves the given expression to a function declaration or function + * expression that matches the given signature. + */ + private resolveToCallable(expr: BoltExpression, args: BoltExpression[]): BoltFunctionDeclaration | BoltFunctionExpression | null { + + // TODO actually match the signature for overloads + + switch (expr.kind) { + + case SyntaxKind.BoltFunctionExpression: + return expr; + + case SyntaxKind.BoltReferenceExpression: + { + const scope = this.resolver.getScopeForNode(expr, ScopeType.Variable); + assert(scope !== null); + const resolvedSymbol = this.resolver.resolveSymbolPath(convertNodeToSymbolPath(expr), scope!); + if (resolvedSymbol === null) { + return null; + } + for (const declNode of resolvedSymbol.declarations) { + if (isBoltVariableDeclaration(declNode)) { + if (declNode.value !== null) { + const resolved = this.resolveToCallable(declNode.value, args); + if (resolved !== null) { + return resolved; + } + } else { + // TODO add diagnostic + } + } else if (isBoltFunctionDeclaration(declNode)) { + return declNode; + } else { + throw new Error(`While resolving to a function: a reference expression resolved to an unhandled declaration ${kindToString(declNode.kind)}`); + } + } + } + + default: + throw new Error(`While resolving to a function: the expression ${kindToString(expr.kind)} was not recognised.`) + + } + + } + + private createCFGNode(sourceNode: Syntax, prevContext: CFGNode | null = null) { + const context = new CFGNode(this.nextSimulationContextId++, sourceNode, prevContext); + this.contextById.set(context.id, context); + return context; + } + + private bindExpressionToPattern( + pattern: BoltPattern, + expr: BoltExpression, + exprContext: CFGNode, + env: Environment + ) { + + switch (pattern.kind) { + + case SyntaxKind.BoltBindPattern: + env.set(pattern.name.text, new NodeWithContext(expr, exprContext)); + break; + + default: + throw new Error(`While binding an expression to a pattern: unhandled pattern of kind ${kindToString(pattern.kind)}`); + + } + } + + private *getAllPropertiesOfNode(node: Syntax): IterableIterator<[CFGNode, Assertion]> { + if (node.properties === undefined) { + return; + } + for (const [contextId, propertyGroup] of node.properties) { + const context = this.getContextById(contextId); + for (const property of propertyGroup.getAllProperties()) { + yield [context, property]; + } + } + } + + private getAllPropertiesOfNodeInContext(node: Syntax, expectedContext: CFGNode): PropertyGroup { + if (node.properties === undefined) { + node.properties = new FastStringMap(); + } + if (!node.properties.has(expectedContext.id)) { + node.properties.set(expectedContext.id, new PropertyGroup()); + } + return node.properties.get(expectedContext.id); + } + + private addPropertyToNodeInContext(node: Syntax, property: Assertion, context: CFGNode) { + if (node.properties === undefined) { + node.properties = new FastStringMap(); + } + if (!node.properties.has(context.id)) { + node.properties.set(context.id, new PropertyGroup()); + } + node.properties.get(context.id).addProperty(property); + } + + private evaluateExpression(expr: BoltExpression, env: Environment): Value | null { + + switch (expr.kind) { + + case SyntaxKind.BoltConstantExpression: + return expr.value; + + case SyntaxKind.BoltCallExpression: + const fn = this.evaluateExpression(expr.operator, env); + const args = expr.operands.map(op => this.evaluateExpression(op, env)); + return fn(...args); + + case SyntaxKind.BoltReferenceExpression: + const text = getSymbolText(expr.name.name); + if (!expr.name.isAbsolute + && expr.name.modulePath.length === 0 + && hasBuiltinOperator(text)) { + return getBuiltinOperator(text); + } else { + const resolved = env.lookup(text); + return this.evaluateExpression(resolved.node, env); + } + + default: + throw new Error(`Could not evaluate expression of unhandled kind ${kindToString(expr.kind)}`); + + } + + } + + private doesAssumptionHold(assumption: Condition, env: Environment): boolean { + if (assumption instanceof ExprCondition) { + return this.evaluateExpression(assumption.expression, env) === true; + } else if (assumption instanceof NotCondition) { + return !this.doesAssumptionHold(assumption.conditionToNegate, env); + } else if (assumption instanceof ConditionGroup) { + for (const childCond of assumption.getAllConditions()) { + if (!this.doesAssumptionHold(childCond, env)) { + return false; + } + } + return true; + } else { + throw new Error(`Unrecognised assumption ${assumption}`); + } + } + + private reduceAssumptions(assumptions: ConditionGroup, env: Environment) { + for (const assumption of [...assumptions.getAllConditions()]) { + if (this.doesAssumptionHold(assumption, env)) { + assumptions.removeCondition(assumption); + } + } + } + + private addPropertiesOfNodeToNode(srcNode: Syntax, srcContext: CFGNode, dstNode: Syntax, dstContext: CFGNode) { + for (const property of this.getAllPropertiesOfNodeInContext(srcNode, srcContext)) { + this.addPropertyToNodeInContext(dstNode, property, dstContext); + } + } + + private simulateCallExpression(expr: BoltCallExpression, context: CFGNode, env: Environment): CFGNode { + + const fnDecl = this.resolveToCallable(expr.operator, expr.operands); + + if (fnDecl === null) { + // TODO add diagnostic + return context; + } + + switch (fnDecl.kind) { + + case SyntaxKind.BoltFunctionDeclaration: + { + + if (expr.operands.length < fnDecl.params.length) { + this.diagnostics.add({ + message: E_TOO_FEW_ARGUMENTS_FOR_FUNCTION_CALL, + severity: 'error', + node: expr, + }) + } else if (expr.operands.length > fnDecl.params.length) { + this.diagnostics.add({ + message: E_TOO_MANY_ARGUMENTS_FOR_FUNCTION_CALL, + severity: 'error', + node: expr, + }) + } else { + const fnEnv = new Environment(env); + let fnContext = context; + if (fnDecl.body !== null) { + for (let i = 0; i < fnDecl.params.length; i++) { + const param = fnDecl.params[i]; + const arg = expr.operands[i]; + this.bindExpressionToPattern(param.bindings, arg, context, fnEnv); + } + for (const element of fnDecl.body) { + fnContext = this.simulateEvaluation(element, fnContext, fnEnv); + } + for (const returnStmt of getAllReturnStatementsInFunctionBody(fnDecl.body)) { + if (returnStmt.value !== null) { + this.addPropertiesOfNodeToNode(returnStmt.value, fnContext, expr, context); + } else { + // TODO handle case where return expression is not set + } + } + } + return context; + } + } + + default: + throw new Error(`Could not simulate application because the node ${kindToString(fnDecl.kind)} was not recognised.`) + + } + + } + + private mergeProperties(a: BoltExpression, b: BoltExpression, context: CFGNode) { + + } + + private setExpressionToTrue(expr: BoltExpression, context: CFGNode, negated: boolean) { + + switch (expr.kind) { + + case SyntaxKind.BoltCallExpression: + { + if (expr.operator.kind === SyntaxKind.BoltReferenceExpression) { + const text = getSymbolText(expr.operator.name.name); + switch (text) { + + case '==': + this.mergeProperties(expr.operands[0], expr.operands[1], context); + break; + + default: + throw new Error(`Could not assume the given expression to be true: unsupported operator`) + + } + } + } + + } + + } + + private setConditionToTrue(condition: Condition, context: CFGNode, negated: boolean = true): void { + if (condition instanceof ExprCondition) { + this.setExpressionToTrue(condition.expression, context, negated); + } else if (condition instanceof NotCondition) { + this.setConditionToTrue(condition.conditionToNegate, context, !negated); + } else { + throw new Error(`Could not convert unhandled conditon to a property.`); + } + } + + private simulateEvaluation(node: Syntax, context: CFGNode, env: Environment): CFGNode { + + switch (node.kind) { + + case SyntaxKind.BoltReferenceExpression: + assert(!node.name.isAbsolute); + assert(node.name.modulePath.length === 0); + const nodeWithContext = env.lookup(getSymbolText(node.name.name)); + this.addPropertiesOfNodeToNode(nodeWithContext.node, nodeWithContext.context, node, context); + return context; + + case SyntaxKind.BoltConstantExpression: + this.addPropertyToNodeInContext(node, new HasValueAssertion(node.value), context); + return context; + + case SyntaxKind.BoltRecordDeclaration: + case SyntaxKind.BoltFunctionDeclaration: + return context; + + case SyntaxKind.BoltCallExpression: + return this.simulateCallExpression(node, context, env); + + case SyntaxKind.BoltCaseStatement: + { + let failedConditions = []; + + for (const caseNode of node.cases) { + + // Create a new context that will be used to evaluate the + // if-statement's body. The context will hold additional properties + // about this if-statement, as well as the properties of the parent context. + const caseContext = this.createCFGNode(caseNode, context); + + // If a previous condition failed, we know that whatever expression + // that was used to test that condition must evaluate to false. We + // add this information to the newly created context. + for (const failedCondition of failedConditions) { + this.setConditionToTrue(failedCondition, caseContext); + } + + // We are going to evaluate the body of this test case, which assumes + // that the test expression associated with this if-statement + // evaluated to true. We add these assumptions to the context that + // will be used to evaluate the statements. + if (caseNode.test !== null) { + const condition = new ExprCondition(caseNode.test); + this.setConditionToTrue(condition, caseContext); + failedConditions.push(new NotCondition(condition)) + } + + // Now iterate over the if-statement's body with the new context. + for (const element of caseNode.body) { + this.simulateEvaluation(element, context, env); + } + + } + return context; + } + + case SyntaxKind.BoltReturnStatement: + if (node.value !== null) { + this.simulateEvaluation(node.value, context, env); + } else { + // TODO handle the case where return is empty + } + break; + + case SyntaxKind.BoltExpressionStatement: + return this.simulateEvaluation(node.expression, context, env); + + case SyntaxKind.BoltVariableDeclaration: + if (node.value !== null) { + this.bindExpressionToPattern(node.bindings, node.value, context, env); + return this.simulateEvaluation(node.value, context, env); + } else { + this.addPropertyToNodeInContext(node, new IsUnsafeProperty(), context); + return context; + } + + default: + throw new Error(`Could not simulate evaluation of node of kind ${kindToString(node.kind)}`); + + } + + } + +} diff --git a/src/diagnostics.ts b/@boltlang/compiler/src/diagnostics.ts similarity index 94% rename from src/diagnostics.ts rename to @boltlang/compiler/src/diagnostics.ts index 577f60635..fecf658d8 100644 --- a/src/diagnostics.ts +++ b/@boltlang/compiler/src/diagnostics.ts @@ -7,7 +7,7 @@ import { BOLT_DIAG_NUM_EXTRA_LINES } from "./constants"; import { TextPos, TextFile, TextSpan } from "./text"; export const E_ASSIGN_TUPLE_LENGTH_MISMATCH = "Trying to assign a tuple of length {rhsLength} to a tuple of length {lhsLength}" -export const E_ASSIGN_TYPES_MISMATCH = "Trying to assign to a pattern of type {lhsType}, which is incompatible with expression of type {rhsType}" +export const E_TYPES_NOT_ASSIGNABLE = "Trying to assign to an expression of type {lhs}, which is incompatible with expression of type {rhs}" export const E_MAY_NOT_RETURN_BECAUSE_TYPE_RESOLVES_TO_VOID = "May not return a value because the function's return type resolves to '()'" export const E_MUST_RETURN_BECAUSE_TYPE_DOES_NOT_RESOLVE_TO_VOID = "Must return a value because the function's return type does not resolve to '()'" @@ -15,7 +15,7 @@ export const E_MUST_RETURN_BECAUSE_TYPE_DOES_NOT_RESOLVE_TO_VOID = "Must return export const E_INVALID_TEST_COMPARE = "The given test results cannot be compared because they use different specifications." export const E_TESTS_DO_NOT_COMPARE = "This test does not compare with its expected output." export const E_NO_BOLTFILE_FOUND_IN_PATH_OR_PARENT_DIRS = 'No Boltfile found in {path} or any of its parent directories.' -export const E_SSCAN_ERROR = "Got an unexpected {char}" +export const E_SCAN_ERROR = "Got an unexpected {char}" export const E_STDLIB_NOT_FOUND = "Package 'stdlib' is required to build the current source set but it was not found. Use --no-std if you know what you are doing." export const E_PARSE_ERROR = "Expected {expected:enum} but got {actual}" export const E_MAY_NOT_RETURN_A_VALUE = "Returning a value inside a function that does not return values." @@ -26,7 +26,7 @@ export const E_FIELD_NOT_PRESENT = "Field '{name}' is not present." export const E_FIELD_MUST_BE_BOOLEAN = "Field '{name}' must be a either 'true' or 'false'." export const E_TYPE_DECLARATION_NOT_FOUND = "A type declaration named '{name}' was not found." export const E_DECLARATION_NOT_FOUND = "Reference to an undefined declaration '{name}'."; -export const E_TYPE_MISMATCH = "Types {left} and {right} are not compatible with one another."; +export const E_TYPE_MISMATCH = "Types '{left}' and '{right}' are not compatible with one another."; export const E_THIS_NODE_CAUSED_INVALID_TYPE = "This expression resolved to the type {type}, which is incompatible with {origType}." export const E_TOO_FEW_ARGUMENTS_FOR_FUNCTION_CALL = "Too few arguments for function call. Expected {expected} but got {actual}."; export const E_TOO_MANY_ARGUMENTS_FOR_FUNCTION_CALL = "Too many arguments for function call. Expected {expected} but got {actual}."; @@ -72,6 +72,10 @@ function firstIndexOfNonEmpty(str: string) { return j } +export interface Diagnostics { + add(diagnostic: Diagnostic): void; +} + export class DiagnosticIndex { private diagnostics = new Array(); @@ -79,7 +83,7 @@ export class DiagnosticIndex { public add(diagnostic: Diagnostic) { this.diagnostics.push(diagnostic); } - + public getAllDiagnostics(): IterableIterator { return this.diagnostics[Symbol.iterator](); } @@ -119,7 +123,6 @@ export class DiagnosticPrinter { out += chalk.bold.red('fatal: ') break; case 'warning': - this.hasErrors = true; out += chalk.bold.red('warning: '); break; case 'info': @@ -129,16 +132,6 @@ export class DiagnosticPrinter { throw new Error(`Unkown severity for diagnostic message.`); } - if (diagnostic.node !== undefined) { - const span = diagnostic.node.span!; - out += chalk.bold.yellow(`${span.file.origPath}:${span.start.line}:${span.start.column}: `); - } - if (diagnostic.args !== undefined) { - out += format(diagnostic.message, diagnostic.args) + '\n'; - } else { - out += diagnostic.message + '\n'; - } - let span = null; if (diagnostic.node !== undefined) { span = diagnostic.node.span!; @@ -147,6 +140,15 @@ export class DiagnosticPrinter { span = new TextSpan(diagnostic.file!, diagnostic.position, diagnostic.position) } + if (span !== null) { + out += chalk.bold.yellow(`${span.file.origPath}:${span.start.line}:${span.start.column}: `); + } + if (diagnostic.args !== undefined) { + out += format(diagnostic.message, diagnostic.args) + '\n'; + } else { + out += diagnostic.message + '\n'; + } + if (span !== null) { out += '\n' const content = span.file.getText(); diff --git a/src/emitter.ts b/@boltlang/compiler/src/emitter.ts similarity index 100% rename from src/emitter.ts rename to @boltlang/compiler/src/emitter.ts diff --git a/src/evaluator.ts b/@boltlang/compiler/src/evaluator.ts similarity index 99% rename from src/evaluator.ts rename to @boltlang/compiler/src/evaluator.ts index 0db894ae5..42853b161 100644 --- a/src/evaluator.ts +++ b/@boltlang/compiler/src/evaluator.ts @@ -2,7 +2,6 @@ import { Syntax, SyntaxKind, BoltQualName, BoltExpression, kindToString, BoltSyntax, isBoltStatement } from "./ast" import { FastStringMap, assert } from "./util" import { emitNode } from "./emitter"; -import { TypeChecker } from "./checker"; export class Record { diff --git a/src/foreign/index.ts b/@boltlang/compiler/src/foreign/index.ts similarity index 100% rename from src/foreign/index.ts rename to @boltlang/compiler/src/foreign/index.ts diff --git a/src/foreign/js/parser.ts b/@boltlang/compiler/src/foreign/js/parser.ts similarity index 100% rename from src/foreign/js/parser.ts rename to @boltlang/compiler/src/foreign/js/parser.ts diff --git a/src/foreign/js/scanner.ts b/@boltlang/compiler/src/foreign/js/scanner.ts similarity index 100% rename from src/foreign/js/scanner.ts rename to @boltlang/compiler/src/foreign/js/scanner.ts diff --git a/src/frontend.ts b/@boltlang/compiler/src/frontend.ts similarity index 82% rename from src/frontend.ts rename to @boltlang/compiler/src/frontend.ts index dc1eaf0c0..e606ca671 100644 --- a/src/frontend.ts +++ b/@boltlang/compiler/src/frontend.ts @@ -1,30 +1,29 @@ -import * as path from "path" -import * as fs from "fs-extra" import { EventEmitter } from "events" +import * as fs from "fs-extra" import { sync as globSync } from "glob" - -import { Program } from "./program" +import { now } from "moment" +import * as path from "path" +import { BoltSourceFile, BoltToken, setParents, SourceFile, Visitor } from "./ast" +import { TypeChecker } from "./checker" +import { CheckInvalidFilePaths, CheckReferences, CheckTypeAssignments } from "./checks" +import { describeKind, getNodeLanguage, ParseError, ScanError } from "./common" +import { DiagnosticPrinter, E_NO_BOLTFILE_FOUND_IN_PATH_OR_PARENT_DIRS, E_PARSE_ERROR, E_SCAN_ERROR, E_STDLIB_NOT_FOUND } from "./diagnostics" import { emitNode } from "./emitter" -import { Syntax, BoltSourceFile, SourceFile, setParents, kindToString, Visitor, BoltToken } from "./ast" -import { getFileStem, MapLike, assert, FastStringMap, upsearchSync, GeneratorStream } from "./util" -import { verbose, memoize } from "./util" +import { Evaluator } from "./evaluator" import { Container, Newable } from "./ioc" -import ExpandBoltTransform from "./transforms/expand" +import { loadPackageMetadata, Package } from "./package" +import { Parser } from "./parser" +import { Program } from "./program" +import { BoltSymbolResolutionStrategy, SymbolResolver } from "./resolver" +import { Scanner } from "./scanner" +import { TextFile, TextSpan } from "./text" import CompileBoltToJSTransform from "./transforms/boltToJS" import ConstFoldTransform from "./transforms/constFold" +import ExpandBoltTransform from "./transforms/expand" import { TransformManager } from "./transforms/index" -import {DiagnosticPrinter, E_PARSE_ERROR, E_STDLIB_NOT_FOUND, E_SSCAN_ERROR as E_SCAN_ERROR, E_NO_BOLTFILE_FOUND_IN_PATH_OR_PARENT_DIRS} from "./diagnostics" -import { TypeChecker } from "./checker" -import { CheckInvalidFilePaths, CheckTypeAssignments, CheckReferences } from "./checks" -import { SymbolResolver, BoltSymbolResolutionStrategy } from "./resolver" -import { Evaluator } from "./evaluator" -import { getNodeLanguage, ParseError, ScanError, describeKind } from "./common" -import { Package, loadPackageMetadata } from "./package" -import { TextFile } from "./text" -import { Scanner } from "./scanner" -import { Parser } from "./parser" -import { now } from "moment" +import { escapeChar, FastStringMap, GeneratorStream, getFileStem, MapLike, upsearchSync, verbose } from "./util" + const targetExtensions: MapLike = { 'JS': '.mjs', @@ -94,13 +93,13 @@ export class Frontend { container.bindSelf(checker); container.bindSelf(this.diagnostics); - const checks: Newable[] = [ + const checkClasses: Newable[] = [ CheckInvalidFilePaths, CheckReferences, CheckTypeAssignments, ]; - const checkers = checks.map(check => container.createInstance(check)); + const checks = checkClasses.map(check => container.createInstance(check)); for (const sourceFile of program.getAllSourceFiles()) { resolver.registerSourceFile(sourceFile); @@ -108,20 +107,22 @@ export class Frontend { for (const sourceFile of program.getAllSourceFiles()) { checker.registerSourceFile(sourceFile); } - - checker.solve(program.getAllSourceFiles()); + for (const sourceFile of program.getAllSourceFiles()) { + checker.checkNode(sourceFile); + } for (const pkg of program.getAllPackages()) { if (!pkg.isDependency) { for (const sourceFile of pkg.getAllSourceFiles()) { for (const node of sourceFile.preorder()) { - for (const checker of checkers) { - checker.visit(node); + for (const check of checks) { + check.visit(node); } } } } } + } public compile(program: Program, target: string) { @@ -186,7 +187,7 @@ export class Frontend { this.diagnostics.add({ severity: 'fatal', message: E_SCAN_ERROR, - args: { char: e.char }, + args: { char: e.char === '' ? 'end-of-file' : `'${escapeChar(e.char)}'` }, position: e.position, file: e.file, }); @@ -214,10 +215,10 @@ export class Frontend { let rootDir; if (path.basename(filepath) === 'Boltfile') { metadataPath = filepath - rootDir = path.dirname(filepath); + rootDir = path.resolve(path.dirname(filepath)); } else { metadataPath = path.join(filepath, 'Boltfile'); - rootDir = filepath; + rootDir = path.resolve(filepath); } const data = loadPackageMetadata(this.diagnostics, metadataPath); const pkg = new Package(rootDir, data.name, data.version, [], data.autoImport, isDependency); @@ -254,9 +255,9 @@ export class Frontend { } const anonPkg = new Package(cwd, null, null, [], false, false); - + const pkgs = [ anonPkg ]; - + for (const filename of filenames) { if (fs.statSync(filename).isDirectory() || path.basename(filename) === 'Boltfile') { @@ -269,21 +270,21 @@ export class Frontend { } } - if (useStd) { - if (pkgs.find(pkg => pkg.name === 'stdlib') === undefined) { - const resolvedPath = this.findPackagePath('stdlib'); - if (resolvedPath === null) { - this.diagnostics.add({ - message: E_STDLIB_NOT_FOUND, - severity: 'error', - }); - return null; - } - const stdlibPkg = this.loadPackageFromPath(resolvedPath, true); - pkgs.push(stdlibPkg); - } + // if (useStd) { + // if (pkgs.find(pkg => pkg.name === 'stdlib') === undefined) { + // const resolvedPath = this.findPackagePath('stdlib'); + // if (resolvedPath === null) { + // this.diagnostics.add({ + // message: E_STDLIB_NOT_FOUND, + // severity: 'error', + // }); + // return null; + // } + // const stdlibPkg = this.loadPackageFromPath(resolvedPath, true); + // pkgs.push(stdlibPkg); + // } + // } - } return new Program(pkgs); } diff --git a/src/index.ts b/@boltlang/compiler/src/index.ts similarity index 100% rename from src/index.ts rename to @boltlang/compiler/src/index.ts diff --git a/src/ioc.ts b/@boltlang/compiler/src/ioc.ts similarity index 100% rename from src/ioc.ts rename to @boltlang/compiler/src/ioc.ts diff --git a/src/marktest.ts b/@boltlang/compiler/src/marktest.ts similarity index 100% rename from src/marktest.ts rename to @boltlang/compiler/src/marktest.ts diff --git a/src/package.ts b/@boltlang/compiler/src/package.ts similarity index 97% rename from src/package.ts rename to @boltlang/compiler/src/package.ts index 1030c5a99..567ed1c54 100644 --- a/src/package.ts +++ b/@boltlang/compiler/src/package.ts @@ -49,7 +49,7 @@ export class Package { } -export function loadPackageMetadata(diagnostics: DiagnosticPrinter, rootDir: string) { +export function loadPackageMetadata(diagnostics: DiagnosticPrinter, filepath: string) { let name = null let version = null; @@ -58,7 +58,6 @@ export function loadPackageMetadata(diagnostics: DiagnosticPrinter, rootDir: str let hasVersionErrors = false; let hasNameErrors = false; - const filepath = path.join(rootDir, 'Boltfile'); if (fs.existsSync(filepath)) { const data = yaml.safeLoad(fs.readFileSync(filepath, 'utf8')); if (data !== undefined) { diff --git a/src/parser.ts b/@boltlang/compiler/src/parser.ts similarity index 98% rename from src/parser.ts rename to @boltlang/compiler/src/parser.ts index 5baa3e160..cbd19a474 100644 --- a/src/parser.ts +++ b/@boltlang/compiler/src/parser.ts @@ -83,15 +83,12 @@ import { BoltRecordExpressionElement, createBoltRecordFieldValue, BoltRecordExpression, - BoltForKeyword, - BoltBraced, BoltAssignStatement, createBoltAssignStatement, BoltExportDirective, - BoltParenthesized, createBoltCaseStatementCase, createBoltCaseStatement, - createBoltElseKeyword, + BoltCaseStatement, } from "./ast" import { parseForeignLanguage } from "./foreign" @@ -104,14 +101,12 @@ import { setOrigNodeRange, createTokenStream, } from "./common" -import { Stream, uniq, assert, isInsideDirectory, first } from "./util" +import { Stream, uniq } from "./util" import { Scanner } from "./scanner" import { TextSpan, TextPos } from "./text" import {JSScanner} from "./foreign/js/scanner"; import { Package } from "./package" -import { BoltCaseStatement, Syntax } from "./ast-spec" -import { resourceUsage } from "process" export type BoltTokenStream = Stream; @@ -1094,18 +1089,20 @@ export class Parser { lastToken = t4; } - let alternative = null; const t4 = tokens.peek(); if (t4.kind === SyntaxKind.BoltElseKeyword) { tokens.get(); const t5 = tokens.get(); assertToken(t5, SyntaxKind.BoltBraced); const alternativeTokens = createTokenStream(t5); - alternative = this.parseFunctionBodyElements(alternativeTokens) + const body = this.parseFunctionBodyElements(alternativeTokens) + const alternative = createBoltCaseStatementCase(null, body); + setOrigNodeRange(alternative, t4, t5); + cases.push(alternative); lastToken = t5; } - const result = createBoltCaseStatement(cases, alternative); + const result = createBoltCaseStatement(cases); setOrigNodeRange(result, t0, lastToken); return result; } @@ -1311,7 +1308,7 @@ export class Parser { return node; } - private parseFunctionDeclaration(tokens: BoltTokenStream): BoltFunctionDeclaration { + public parseFunctionDeclaration(tokens: BoltTokenStream): BoltFunctionDeclaration { let target = "Bolt"; let modifiers = 0; @@ -1522,7 +1519,7 @@ export class Parser { // The trait may optionally have 'fn ...' and 'type ..' elements wrapped in braces. const t3 = tokens.peek(); - if (t2.kind === SyntaxKind.BoltBraced) { + if (t3.kind === SyntaxKind.BoltBraced) { const t3 = tokens.get(); lastToken = t3; const innerTokens = createTokenStream(t3); @@ -1578,18 +1575,18 @@ export class Parser { if (foundForKeyword) { // Parse the type expression that references the trait the user wants to implement - traitTypeExpr = this.parseTypeExpression(tokens); + traitTypeExpr = this.parseReferenceTypeExpression(tokens); // Skip the 'for' keyword itself assertToken(tokens.get(), SyntaxKind.BoltForKeyword); // Parse the type that this implementation is for - typeExpr = this.parseTypeExpression(tokens); + typeExpr = this.parseReferenceTypeExpression(tokens); } else { // Just parse the trait the user wants to implement and leave the rest as is - const resultTypeExpr = this.parseTypeExpression(tokens); + const resultTypeExpr = this.parseReferenceTypeExpression(tokens); // We cheat a bit by assigning the referenced trait to both fields // NOTE Assigning the same node by reference to different fields should be done with great care. @@ -1604,7 +1601,7 @@ export class Parser { const elements = this.parseTraitOrImplElements(createTokenStream(t5)); // Create and return the result - const result = createBoltImplDeclaration(modifiers, typeParams, typeExpr, traitTypeExpr, elements); + const result = createBoltImplDeclaration(modifiers, typeParams, traitTypeExpr, typeExpr, elements); setOrigNodeRange(result, firstToken, t5); return result; } @@ -1769,7 +1766,7 @@ export class Parser { ); } - public parseTraitOrImplElements(tokens: BoltTokenStream): BoltTraitOrImplElement[] { + public parseTraitOrImplElements(tokens: BoltTokenStream, allowPub = false): BoltTraitOrImplElement[] { const elements: BoltTraitOrImplElement[] = []; while (true) { const t0 = tokens.peek(); @@ -1789,7 +1786,16 @@ export class Parser { if (this.lookaheadIsMacroCall(tokens)) { return this.parseMacroCall(tokens); } - const t0 = tokens.peek(); + let i = 1; + let t0 = tokens.peek(i); + if (t0.kind === SyntaxKind.BoltPubKeyword) { + i += 1; + t0 = tokens.peek(i); + } + if (t0.kind === SyntaxKind.BoltForeignKeyword) { + i += 2; + t0 = tokens.peek(i); + } switch (t0.kind) { case SyntaxKind.BoltFnKeyword: return this.parseFunctionDeclaration(tokens); diff --git a/src/program.ts b/@boltlang/compiler/src/program.ts similarity index 100% rename from src/program.ts rename to @boltlang/compiler/src/program.ts diff --git a/@boltlang/compiler/src/repl.ts b/@boltlang/compiler/src/repl.ts new file mode 100644 index 000000000..01d2a0dca --- /dev/null +++ b/@boltlang/compiler/src/repl.ts @@ -0,0 +1,8 @@ + +export class REPL { + + public start(): Promise { + + } + +} \ No newline at end of file diff --git a/src/resolver.ts b/@boltlang/compiler/src/resolver.ts similarity index 100% rename from src/resolver.ts rename to @boltlang/compiler/src/resolver.ts diff --git a/src/scanner.ts b/@boltlang/compiler/src/scanner.ts similarity index 100% rename from src/scanner.ts rename to @boltlang/compiler/src/scanner.ts diff --git a/@boltlang/compiler/src/test/parser.ts b/@boltlang/compiler/src/test/parser.ts new file mode 100644 index 000000000..49e966558 --- /dev/null +++ b/@boltlang/compiler/src/test/parser.ts @@ -0,0 +1,52 @@ + +import test from "ava"; +import {BoltBindPattern, BoltOperator, SyntaxKind} from "../ast"; +import { createTokenStream } from "../common"; +import {Parser} from "../parser"; + +test('the Bolt parser correctly parses an operator definition', t => { + + const parser = new Parser(); + + const tokens1 = createTokenStream(`fn +x;`) + const funcDecl1 = parser.parseFunctionDeclaration(tokens1); + t.assert(funcDecl1.kind === SyntaxKind.BoltFunctionDeclaration); + t.assert(funcDecl1.name.kind === SyntaxKind.BoltOperator); + const funcDecl1Name = funcDecl1.name as BoltOperator; + t.assert(funcDecl1Name.text === '+'); + t.assert(funcDecl1.params.length === 1); + t.assert(funcDecl1.params[0].kind === SyntaxKind.BoltParameter); + t.assert(funcDecl1.params[0].bindings.kind === SyntaxKind.BoltBindPattern); + const funcDecl1BindPatt = funcDecl1.params[0].bindings as BoltBindPattern; + t.assert(funcDecl1BindPatt.name.text === 'x'); + t.assert(tokens1.get().kind === SyntaxKind.BoltSemi); + + const tokens2 = createTokenStream(`fn a + b;`); + const funcDecl2 = parser.parseFunctionDeclaration(tokens2); + t.assert(funcDecl2.kind === SyntaxKind.BoltFunctionDeclaration); + t.assert(funcDecl2.name.kind === SyntaxKind.BoltOperator); + const funcDecl2Name = funcDecl2.name as BoltOperator; + t.assert(funcDecl2Name.text === '+'); + t.assert(funcDecl2.params.length === 2); + t.assert(funcDecl2.params[0].kind === SyntaxKind.BoltParameter); + t.assert(funcDecl2.params[0].bindings.kind === SyntaxKind.BoltBindPattern); + const funcDecl2BindPatt0 = funcDecl2.params[0].bindings as BoltBindPattern; + t.assert(funcDecl2BindPatt0.name.text === 'a'); + t.assert(funcDecl2.params[1].kind === SyntaxKind.BoltParameter); + t.assert(funcDecl2.params[1].bindings.kind === SyntaxKind.BoltBindPattern); + const funcDecl2BindPatt1 = funcDecl2.params[1].bindings as BoltBindPattern; + t.assert(funcDecl2BindPatt1.name.text === 'b'); + t.assert(tokens2.get().kind === SyntaxKind.BoltSemi); + + const tokens3 = createTokenStream(`fn (a: Int) + (b: Int);`); + const funcDecl3 = parser.parseFunctionDeclaration(tokens3); + t.assert(funcDecl3.kind === SyntaxKind.BoltFunctionDeclaration); + // TODO complete these assertions + + const tokens4 = createTokenStream(`fn a + b -> Int;`); + const funcDecl4 = parser.parseFunctionDeclaration(tokens4); + t.assert(funcDecl4.kind === SyntaxKind.BoltFunctionDeclaration); + // TODO complete these assertions + +}) + diff --git a/@boltlang/compiler/src/test/types.ts b/@boltlang/compiler/src/test/types.ts new file mode 100644 index 000000000..f135817a6 --- /dev/null +++ b/@boltlang/compiler/src/test/types.ts @@ -0,0 +1,18 @@ + +import test from "ava"; +import { createBoltConstantExpression, createBoltIdentifier, createBoltQualName, createBoltReferenceExpression } from "../ast"; + +import { TypeChecker } from "../checker" + +function createSimpleBoltReferenceExpression(name: string) { + return createBoltReferenceExpression( + createBoltQualName(false, [], createBoltIdentifier(name)), + ) +} + +test('an intersection with an any-type should remove that any-type', t => { + const expr = createBoltConstantExpression(BigInt(1)); + const checker = new TypeChecker(); + const exprType = checker.getTypeOfNode(expr); + t.assert(checker.isIntType(exprType)) +}); diff --git a/src/text.ts b/@boltlang/compiler/src/text.ts similarity index 100% rename from src/text.ts rename to @boltlang/compiler/src/text.ts diff --git a/src/transforms/boltToJS.ts b/@boltlang/compiler/src/transforms/boltToJS.ts similarity index 100% rename from src/transforms/boltToJS.ts rename to @boltlang/compiler/src/transforms/boltToJS.ts diff --git a/src/transforms/constFold.ts b/@boltlang/compiler/src/transforms/constFold.ts similarity index 100% rename from src/transforms/constFold.ts rename to @boltlang/compiler/src/transforms/constFold.ts diff --git a/src/transforms/expand.ts b/@boltlang/compiler/src/transforms/expand.ts similarity index 100% rename from src/transforms/expand.ts rename to @boltlang/compiler/src/transforms/expand.ts diff --git a/src/transforms/index.ts b/@boltlang/compiler/src/transforms/index.ts similarity index 100% rename from src/transforms/index.ts rename to @boltlang/compiler/src/transforms/index.ts diff --git a/src/util.ts b/@boltlang/compiler/src/util.ts similarity index 98% rename from src/util.ts rename to @boltlang/compiler/src/util.ts index a8e745fdc..e4343f066 100644 --- a/src/util.ts +++ b/@boltlang/compiler/src/util.ts @@ -390,7 +390,7 @@ export class FastMultiMap { this.mapping = Object.create(null); } - public get(key: string): IterableIterator { + public get(key: K): IterableIterator { if (this.mapping[key] === undefined) { return new EmptyIterator; } @@ -425,10 +425,20 @@ export class FastStringMap { private mapping = Object.create(null); + constructor(elements: Iterable<[K, V]> = []) { + for (const [k, v] of elements) { + this.set(k, v); + } + } + public clear(): void { this.mapping.clear(); } + public overwrite(key: K, value: V): void { + this.mapping[key] = value; + } + public *[Symbol.iterator](): IterableIterator<[K, V]> { for (const key of Object.keys(this.mapping)) { yield [key as K, this.mapping[key]]; diff --git a/tsconfig.json b/@boltlang/compiler/tsconfig.json similarity index 72% rename from tsconfig.json rename to @boltlang/compiler/tsconfig.json index 40023434b..673c3705c 100644 --- a/tsconfig.json +++ b/@boltlang/compiler/tsconfig.json @@ -1,9 +1,10 @@ { "compilerOptions": { - "target": "es2017", + "target": "ES2019", "module": "commonjs", - "outDir": "./lib", - "noEmit": true, + "declaration": true, + "declarationMap": true, + "outDir": "./", "strict": true, "esModuleInterop": true, "sourceMap": true, diff --git a/webpack.dev.js b/@boltlang/compiler/webpack.config.js similarity index 92% rename from webpack.dev.js rename to @boltlang/compiler/webpack.config.js index dcfcfc04b..fc589540f 100644 --- a/webpack.dev.js +++ b/@boltlang/compiler/webpack.config.js @@ -15,8 +15,7 @@ module.exports = { target: 'node', mode: 'development', entry: { - 'bolt': './src/bin/bolt.ts', - 'bolt-test': './src/bin/bolt-test.ts', + 'bolt-langserver': './src/main.ts' }, output: { filename: 'bin/[name].js', diff --git a/@boltlang/langserver/.babelrc b/@boltlang/langserver/.babelrc new file mode 100644 index 000000000..a29ac9986 --- /dev/null +++ b/@boltlang/langserver/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [ + "@babel/preset-env" + ] +} diff --git a/@boltlang/langserver/.browserslistrc b/@boltlang/langserver/.browserslistrc new file mode 100644 index 000000000..76d55dadf --- /dev/null +++ b/@boltlang/langserver/.browserslistrc @@ -0,0 +1 @@ +maintained node versions, last 4 electron versions \ No newline at end of file diff --git a/@boltlang/langserver/.gitignore b/@boltlang/langserver/.gitignore new file mode 100644 index 000000000..cff8a5b94 --- /dev/null +++ b/@boltlang/langserver/.gitignore @@ -0,0 +1,7 @@ + +# npm +node_modules/ + +# resulting code +/bin/ + diff --git a/@boltlang/langserver/package-lock.json b/@boltlang/langserver/package-lock.json new file mode 100644 index 000000000..eca0ef09a --- /dev/null +++ b/@boltlang/langserver/package-lock.json @@ -0,0 +1,102 @@ +{ + "name": "@boltlang/langserver", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "GPL-3.0", + "dependencies": { + "minimist": "^1.2.5", + "vscode-languageserver": "^6.1.1", + "vscode-languageserver-textdocument": "^1.0.1" + }, + "bin": { + "bolt-langserver": "bin/bolt-langserver.js" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", + "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", + "dependencies": { + "vscode-languageserver-protocol": "^3.15.3" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "dependencies": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + } + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" + }, + "vscode-languageserver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", + "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", + "requires": { + "vscode-languageserver-protocol": "^3.15.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "requires": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + } + } +} diff --git a/@boltlang/langserver/package.json b/@boltlang/langserver/package.json new file mode 100644 index 000000000..6ae1a227d --- /dev/null +++ b/@boltlang/langserver/package.json @@ -0,0 +1,34 @@ +{ + "name": "@boltlang/langserver", + "version": "1.0.0", + "description": "An implementation of the Language Server Protocol for the Bolt programming language", + "bin": { + "bolt-langserver": "bin/bolt-langserver.js" + }, + "scripts": { + "watch": "webpack --mode development --watch", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/BoltLang/BoltJS.git" + }, + "keywords": [ + "language-server", + "protocol", + "server", + "programming-language", + "bolt" + ], + "author": "Sam Vervaeck", + "license": "GPL-3.0", + "bugs": { + "url": "https://github.com/BoltLang/BoltJS/issues" + }, + "homepage": "https://github.com/BoltLang/BoltJS#readme", + "dependencies": { + "minimist": "^1.2.5", + "vscode-languageserver": "^6.1.1", + "vscode-languageserver-textdocument": "^1.0.1" + } +} diff --git a/@boltlang/langserver/src/main.ts b/@boltlang/langserver/src/main.ts new file mode 100644 index 000000000..487b6c25e --- /dev/null +++ b/@boltlang/langserver/src/main.ts @@ -0,0 +1,147 @@ + +import net from "net" +import minimist from "minimist" +import { + createConnection, + Diagnostic, + DiagnosticSeverity, + DidChangeConfigurationNotification, + IConnection, + InitializeParams, + InitializeResult, + ProposedFeatures, + TextDocuments, + TextDocumentSyncKind +} from "vscode-languageserver"; +import { TextDocument } from "vscode-languageserver-textdocument"; + +import { createTokenStream, ParseError, ScanError } from "@boltlang/compiler/common"; +import { Parser } from "@boltlang/compiler/parser"; +import { Scanner } from "@boltlang/compiler/scanner"; +import { TextFile } from "@boltlang/compiler/text"; +import { FastStringMap } from "@boltlang/compiler/util"; + +const args = minimist(process.argv.slice(2)) + +let connection: IConnection; + +if (args.socket) { + if (typeof(args.socket) !== 'number') { + console.error(`The flag --socket=PORT must contain a valid port number when provided.`) + process.exit(1); + } + const server = net.createServer(socket => { + const connection = createConnection(ProposedFeatures.all, socket, socket); + configureConnection(connection) + }); + server.listen(args.socket); +} else { + const connection = createConnection(ProposedFeatures.all); + configureConnection(connection); +} + +interface BoltWorkspaceFolder { + name: string; + uri: string; +} + +function configureConnection(connection: IConnection) { + + const workspaceFolders = new FastStringMap() + + const documents = new TextDocuments(TextDocument); + + let hasConfigurationCapability = false; + let hasWorkspaceFolderCapability = false; + let hasDiagnosticRelatedInformationCapability = false; + + connection.onInitialize((params: InitializeParams) => { + + const capabilities = params.capabilities + + hasConfigurationCapability = !!(capabilities.workspace && capabilities.workspace.configuration); + hasWorkspaceFolderCapability = !!(capabilities.workspace && capabilities.workspace.workspaceFolders); + hasDiagnosticRelatedInformationCapability = !!(capabilities.textDocument + && capabilities.textDocument.publishDiagnostics + && capabilities.textDocument.publishDiagnostics.relatedInformation); + + const result: InitializeResult = { + capabilities: { + textDocumentSync: TextDocumentSyncKind.Incremental, + } + } + + if (hasWorkspaceFolderCapability) { + result.capabilities.workspace = { + workspaceFolders: { supported: true } + } + } + + return result + }); + + connection.onInitialized(() => { + if (hasConfigurationCapability) { + connection.client.register(DidChangeConfigurationNotification.type, undefined); + } + if (hasWorkspaceFolderCapability) { + connection.workspace.onDidChangeWorkspaceFolders(event => { + for (const removed of event.removed) { + workspaceFolders.delete(removed.uri) + } + for (const added of event.added) { + workspaceFolders.set(added.uri, { name: added.name, uri: added.uri }) + } + }) + } + }); + + documents.onDidChangeContent(event => { + validateSourceFile(event.document) + }) + + function validateSourceFile(document: TextDocument) { + const file = new TextFile(document.uri) + const scanner = new Scanner(file, document.getText()); + const tokens = createTokenStream(scanner); + const parser = new Parser() + const diagnostics: Diagnostic[] = []; + let sourceFile; + try { + sourceFile = parser.parseSourceFile(tokens) + } catch (e) { + if (e instanceof ParseError) { + const span = e.actual.span!; + diagnostics.push({ + severity: DiagnosticSeverity.Error, + range: { + start: { line: span.start.line-1, character: span.start.column-1 }, + end: { line: span.end.line-1, character: span.end.column-1 } + }, + message: e.errorText + }); + connection.sendDiagnostics({ uri: document.uri, diagnostics }) + return; + } else if (e instanceof ScanError) { + diagnostics.push({ + severity: DiagnosticSeverity.Error, + range: { + start: { line: e.position.line-1, character: e.position.column-1 }, + end: { line: e.position.line-1, character: e.position.column-1 }, + }, + message: e.errorText + }); + connection.sendDiagnostics({ uri: document.uri, diagnostics }) + return; + } else { + throw e; + } + } + connection.sendDiagnostics({ uri: document.uri, diagnostics }) + } + + documents.listen(connection) + + connection.listen() + +} \ No newline at end of file diff --git a/@boltlang/langserver/tsconfig.json b/@boltlang/langserver/tsconfig.json new file mode 100644 index 000000000..4791e6d8a --- /dev/null +++ b/@boltlang/langserver/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "ES2019", + "module": "commonjs", + "sourceMap": true, + "noEmit": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/@boltlang/langserver/webpack.config.js b/@boltlang/langserver/webpack.config.js new file mode 100644 index 000000000..72a5d26ff --- /dev/null +++ b/@boltlang/langserver/webpack.config.js @@ -0,0 +1,37 @@ + +const path =require('path'); +const webpack = require('webpack'); + +module.exports = { + target: 'node', + entry: { + 'bolt-langserver': './src/main.ts' + }, + output: { + filename: 'bin/[name].js', + path: path.resolve(__dirname), + devtoolModuleFilenameTemplate: '[absolute-resource-path]' + }, + resolve: { + extensions: [".ts", ".js"], + }, + plugins: [ + new webpack.BannerPlugin({ banner: '#!/usr/bin/env node', raw: true }), + ], + devtool: 'source-map', + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + loader: "ts-loader", + options: { transpileOnly: true } + }, + { + test: /\.m?js$/, + exclude: /node_modules/, + loader: 'babel-loader' + }, + ] + } +}; diff --git a/package-lock.json b/package-lock.json index cc943070d..7d45f9511 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,6814 @@ { - "name": "@samvv/bolt", - "version": "0.0.1", - "lockfileVersion": 1, + "name": "bolt-workspace", + "version": "1.0.0", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "bolt-workspace", + "version": "1.0.0", + "license": "GPL-3.0", + "workspaces": [ + "@boltlang/compiler", + "@boltlang/langserver", + "@boltlang/cli", + "vscode-extension" + ], + "devDependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@types/node": "^14.14.7", + "ava": "^3.13.0", + "babel-loader": "^8.2.1", + "concurrently": "^5.3.0", + "ts-loader": "^8.0.11", + "typescript": "^4.0.5", + "webpack": "^5.4.0", + "webpack-cli": "^4.2.0" + } + }, + "@boltlang/cli": { + "version": "1.0.0", + "license": "GPL-3.0", + "bin": { + "bolt": "bin/bolt.js" + } + }, + "@boltlang/compiler": { + "version": "0.0.1", + "license": "GPL-3.0", + "dependencies": { + "@types/commonmark": "^0.27.4", + "@types/diff": "^4.0.2", + "@types/fs-extra": "^9.0.4", + "@types/glob": "^7.1.3", + "@types/js-yaml": "^3.12.5", + "@types/microtime": "^2.1.0", + "@types/minimist": "^1.2.1", + "@types/node": "^14.14.7", + "@types/semver": "^7.3.4", + "@types/uuid": "^8.3.0", + "@types/yargs": "^15.0.9", + "chalk": "^4.1.0", + "commonmark": "^0.29.2", + "diff": "^5.0.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "js-yaml": "^3.14.0", + "microtime": "^3.0.0", + "minimist": "^1.2.5", + "moment": "^2.29.1", + "ora": "^5.1.0", + "reflect-metadata": "^0.1.13", + "semver": "^7.3.2", + "source-map-support": "^0.5.19", + "uuid": "^8.3.1", + "yargs": "^16.1.0" + } + }, + "@boltlang/compiler/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "@boltlang/compiler/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "@boltlang/compiler/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "@boltlang/compiler/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "@boltlang/compiler/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "@boltlang/compiler/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "@boltlang/compiler/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "@boltlang/langserver": { + "version": "1.0.0", + "license": "GPL-3.0", + "dependencies": { + "@boltlang/compiler": "^0.0.1", + "vscode-languageserver": "^6.1.1", + "vscode-languageserver-textdocument": "^1.0.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true + }, + "node_modules/@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.5" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "dev": true + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/traverse": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@boltlang/cli": { + "resolved": "@boltlang/cli", + "link": true + }, + "node_modules/@boltlang/compiler": { + "resolved": "@boltlang/compiler", + "link": true + }, + "node_modules/@boltlang/langserver": { + "resolved": "@boltlang/langserver", + "link": true + }, + "node_modules/@concordance/react": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-2.0.0.tgz", + "integrity": "sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1" + }, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/@concordance/react/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/commonmark": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@types/commonmark/-/commonmark-0.27.4.tgz", + "integrity": "sha512-7koSjp08QxKoS1/+3T15+kD7+vqOUvZRHvM8PutF3Xsk5aAEkdlIGRsHJ3/XsC3izoqTwBdRW/vH7rzCKkIicA==" + }, + "node_modules/@types/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-mIenTfsIe586/yzsyfql69KRnA75S8SVXQbTLpDejRrjH0QSJcpu3AUOi/Vjnt9IOsXKxPhJfGpQUNMueIU1fQ==" + }, + "node_modules/@types/eslint": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.4.tgz", + "integrity": "sha512-YCY4kzHMsHoyKspQH+nwSe+70Kep7Vjt2X+dZe5Vs2vkRudqtoFoUIv1RlJmZB8Hbp7McneupoZij4PadxsK5Q==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.45", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "dev": true + }, + "node_modules/@types/fs-extra": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.4.tgz", + "integrity": "sha512-50GO5ez44lxK5MDH90DYHFFfqxH7+fTqEEnvguQRzJ/tY9qFrMSHLiYHite+F3SNmf7+LHC1eMXojuD+E3Qcyg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "3.12.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz", + "integrity": "sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "node_modules/@types/microtime": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/microtime/-/microtime-2.1.0.tgz", + "integrity": "sha1-rb2Z9QGoXIhpXrHv01FYEPJWOTI=" + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "node_modules/@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==" + }, + "node_modules/@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==" + }, + "node_modules/@types/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" + }, + "node_modules/@types/vscode": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.51.0.tgz", + "integrity": "sha512-C/jZ35OT5k/rsJyAK8mS1kM++vMcm89oSWegkzxRCvHllIq0cToZAkIDs6eCY4SKrvik3nrhELizyLcM0onbQA==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "15.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", + "integrity": "sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.1.0.tgz", + "integrity": "sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.1.0.tgz", + "integrity": "sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", + "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.0.0.tgz", + "integrity": "sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "dependencies": { + "string-width": "^3.0.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-back": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", + "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrgv": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", + "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ava": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-3.13.0.tgz", + "integrity": "sha512-yzky+gark5PdsFFlZ4CnBVxm/OgBUWtn9vAsSSnuooVJNOk5ER17HJXVeUzy63LIt06Zy34oThcn+2ZqgMs7SA==", + "dev": true, + "dependencies": { + "@concordance/react": "^2.0.0", + "acorn": "^8.0.1", + "acorn-walk": "^8.0.0", + "ansi-styles": "^4.2.1", + "arrgv": "^1.0.2", + "arrify": "^2.0.1", + "callsites": "^3.1.0", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "chunkd": "^2.0.1", + "ci-info": "^2.0.0", + "ci-parallel-vars": "^1.0.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^3.1.0", + "cli-truncate": "^2.1.0", + "code-excerpt": "^3.0.0", + "common-path-prefix": "^3.0.0", + "concordance": "^5.0.1", + "convert-source-map": "^1.7.0", + "currently-unhandled": "^0.4.1", + "debug": "^4.2.0", + "del": "^6.0.0", + "emittery": "^0.7.1", + "equal-length": "^1.0.0", + "figures": "^3.2.0", + "globby": "^11.0.1", + "ignore-by-default": "^2.0.0", + "import-local": "^3.0.2", + "indent-string": "^4.0.0", + "is-error": "^2.2.2", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "lodash": "^4.17.20", + "matcher": "^3.0.0", + "md5-hex": "^3.0.1", + "mem": "^6.1.1", + "ms": "^2.1.2", + "ora": "^5.1.0", + "p-event": "^4.2.0", + "p-map": "^4.0.0", + "picomatch": "^2.2.2", + "pkg-conf": "^3.1.0", + "plur": "^4.0.0", + "pretty-ms": "^7.0.1", + "read-pkg": "^5.2.0", + "resolve-cwd": "^3.0.0", + "slash": "^3.0.0", + "source-map-support": "^0.5.19", + "stack-utils": "^2.0.2", + "strip-ansi": "^6.0.0", + "supertap": "^1.0.0", + "temp-dir": "^2.0.0", + "trim-off-newlines": "^1.0.1", + "update-notifier": "^4.1.1", + "write-file-atomic": "^3.0.3", + "yargs": "^16.0.3" + }, + "bin": { + "ava": "cli.js" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <12.17.0 || >=12.17.0 <13 || >=14.0.0" + } + }, + "node_modules/ava/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ava/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ava/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ava/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ava/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ava/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.1.tgz", + "integrity": "sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blueimp-md5": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz", + "integrity": "sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q==", + "dev": true + }, + "node_modules/bolt": { + "resolved": "vscode-extension", + "link": true + }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "node_modules/chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chunkd": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", + "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", + "dev": true + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/ci-parallel-vars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", + "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/code-excerpt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-3.0.0.tgz", + "integrity": "sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==", + "dev": true, + "dependencies": { + "convert-to-spaces": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "node_modules/command-line-usage": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", + "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "chalk": "^2.4.2", + "table-layout": "^1.0.1", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/commonmark": { + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.29.2.tgz", + "integrity": "sha512-spe43MvEIaPpHss1T7z4yQaFQfLGmMu+yvCwv6xqhELIwkG/ZGgDpxOPzKxnuYzYT2c+aziCCc8m2rBVLA7jUA==", + "dependencies": { + "entities": "~2.0", + "mdurl": "~1.0.1", + "minimist": ">=1.2.2", + "string.prototype.repeat": "^0.2.0" + }, + "bin": { + "commonmark": "bin/commonmark" + }, + "engines": { + "node": "*" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concordance": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.1.tgz", + "integrity": "sha512-TbNtInKVElgEBnJ1v2Xg+MFX2lvFLbmlv3EuSC5wTfCwpB8kC3w3mffF6cKuUhkn475Ym1f1I4qmuXzx2+uXpw==", + "dev": true, + "dependencies": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" + } + }, + "node_modules/concordance/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/concurrently/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/concurrently/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/concurrently/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/concurrently/node_modules/read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "dependencies": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concurrently/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concurrently/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concurrently/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concurrently/node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/configstore/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/core-js-compat": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", + "dev": true, + "dependencies": { + "browserslist": "^4.14.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/date-fns": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", + "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==", + "dev": true, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.596", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.596.tgz", + "integrity": "sha512-nLO2Wd2yU42eSoNJVQKNf89CcEGqeFZd++QsnN2XIgje1s/19AgctfjLIbPORlvcCO8sYjLwX4iUgDdusOY8Sg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "node_modules/envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", + "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "dependencies": { + "ini": "^1.3.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "node_modules/globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.0.0.tgz", + "integrity": "sha512-+mQSgMRiFD3L3AOxLYOCxjIq4OnAmo5CIuC+lj5ehCJcPtV++QacEV7FdpzvYxH6DaOySWzQU6RR0lPLy37ckA==", + "dev": true, + "engines": { + "node": ">=10 <11 || >=12 <13 || >=14" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/irregular-plurals": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.2.0.tgz", + "integrity": "sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-error": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", + "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loader-runner": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.1.0.tgz", + "integrity": "sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "dependencies": { + "blueimp-md5": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/mem": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz", + "integrity": "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/microtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/microtime/-/microtime-3.0.0.tgz", + "integrity": "sha512-SirJr7ZL4ow2iWcb54bekS4aWyBQNVcEDBiwAz9D/sTgY59A+uE8UJU15cp5wyZmPBwg/3zf8lyCJ5NUe1nVlQ==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^1.2.0", + "node-gyp-build": "^3.8.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "node_modules/node-gyp-build": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", + "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", + "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", + "dependencies": { + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "dev": true, + "dependencies": { + "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plur": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", + "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "dev": true, + "dependencies": { + "irregular-plurals": "^3.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, + "dependencies": { + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.repeat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", + "integrity": "sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=" + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supertap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", + "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "indent-string": "^3.2.0", + "js-yaml": "^3.10.0", + "serialize-error": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supertap/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supertap/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supertap/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supertap/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", + "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==", + "dev": true, + "dependencies": { + "jest-worker": "^26.6.1", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-loader": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.11.tgz", + "integrity": "sha512-06X+mWA2JXoXJHYAesUUL4mHFYhnmyoCdQVMXofXF552Lzd4wNwSGg7unJpttqUP7ziaruM8d7u8LUB6I1sgzA==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "dependencies": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", + "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", + "dependencies": { + "semver": "^6.3.0", + "vscode-languageserver-protocol": "^3.15.3" + }, + "engines": { + "vscode": "^1.41.0" + } + }, + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/vscode-languageserver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", + "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", + "dependencies": { + "vscode-languageserver-protocol": "^3.15.3" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "dependencies": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + }, + "node_modules/watchpack": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.1.tgz", + "integrity": "sha512-vO8AKGX22ZRo6PiOFM9dC0re8IcKh8Kd/aH2zeqUc6w4/jBGlTy2P7fTC6ekT0NjVeGjgU2dGC5rNstKkeLEQg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.4.0.tgz", + "integrity": "sha512-udpYTyqz8toTTdaOsL2QKPLeZLt2IEm9qY7yTXuFEQhKu5bk0yQD9BtAdVQksmz4jFbbWOiWmm3NHarO0zr/ng==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.45", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.3.1", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "pkg-dir": "^4.2.0", + "schema-utils": "^3.0.0", + "tapable": "^2.0.0", + "terser-webpack-plugin": "^5.0.3", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz", + "integrity": "sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==", + "dev": true, + "dependencies": { + "@webpack-cli/info": "^1.1.0", + "@webpack-cli/serve": "^1.1.0", + "colorette": "^1.2.1", + "command-line-usage": "^6.1.0", + "commander": "^6.2.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "leven": "^3.1.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^4.2.2" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generate-loader": { + "optional": true + }, + "@webpack-cli/generate-plugin": { + "optional": true + }, + "@webpack-cli/init": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz", + "integrity": "sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.1.1.tgz", + "integrity": "sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wordwrapjs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz", + "integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==", + "dev": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.0.tgz", + "integrity": "sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.2", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + }, + "vscode-extension": { + "version": "0.0.1", + "dependencies": { + "vscode-languageclient": "^6.1.3" + }, + "devDependencies": { + "@types/node": "^14.14.7", + "@types/vscode": "^1.51.0", + "ts-loader": "^8.0.11", + "typescript": "^4.0.5", + "webpack": "^5.4.0", + "webpack-cli": "^4.2.0" + }, + "engines": { + "vscode": "^1.51.0" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.10.4", @@ -13,6 +6819,12 @@ "@babel/highlight": "^7.10.4" } }, + "@babel/compat-data": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true + }, "@babel/core": { "version": "7.12.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", @@ -35,39 +6847,48 @@ "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "@babel/generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", - "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.12.1", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" } }, "@babel/helper-create-class-features-plugin": { @@ -83,6 +6904,37 @@ "@babel/helper-split-export-declaration": "^7.10.4" } }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, "@babel/helper-function-name": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", @@ -103,6 +6955,15 @@ "@babel/types": "^7.10.4" } }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, "@babel/helper-member-expression-to-functions": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", @@ -113,12 +6974,12 @@ } }, "@babel/helper-module-imports": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz", - "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.5" } }, "@babel/helper-module-transforms": { @@ -153,16 +7014,36 @@ "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, - "@babel/helper-replace-supers": { + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz", - "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/helper-simple-access": { @@ -174,6 +7055,15 @@ "@babel/types": "^7.12.1" } }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, "@babel/helper-split-export-declaration": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", @@ -189,15 +7079,33 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, - "@babel/helpers": { + "@babel/helper-validator-option": { "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz", - "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/highlight": { @@ -209,36 +7117,25 @@ "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", - "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", "dev": true }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, "@babel/plugin-proposal-class-properties": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", @@ -249,6 +7146,636 @@ "@babel/helper-plugin-utils": "^7.10.4" } }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.1", + "core-js-compat": "^3.6.2", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", @@ -261,26 +7788,26 @@ } }, "@babel/traverse": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz", - "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", + "@babel/generator": "^7.12.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.1", - "@babel/types": "^7.12.1", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", - "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -288,6 +7815,98 @@ "to-fast-properties": "^2.0.0" } }, + "@boltlang/cli": { + "version": "file:@boltlang/cli" + }, + "@boltlang/compiler": { + "version": "file:@boltlang/compiler", + "requires": { + "@types/commonmark": "^0.27.4", + "@types/diff": "^4.0.2", + "@types/fs-extra": "^9.0.4", + "@types/glob": "^7.1.3", + "@types/js-yaml": "^3.12.5", + "@types/microtime": "^2.1.0", + "@types/minimist": "^1.2.1", + "@types/node": "^14.14.7", + "@types/semver": "^7.3.4", + "@types/uuid": "^8.3.0", + "@types/yargs": "^15.0.9", + "chalk": "^4.1.0", + "commonmark": "^0.29.2", + "diff": "^5.0.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "js-yaml": "^3.14.0", + "microtime": "^3.0.0", + "minimist": "^1.2.5", + "moment": "^2.29.1", + "ora": "^5.1.0", + "reflect-metadata": "^0.1.13", + "semver": "^7.3.2", + "source-map-support": "^0.5.19", + "uuid": "^8.3.1", + "yargs": "^16.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@boltlang/langserver": { + "version": "file:@boltlang/langserver", + "requires": { + "@boltlang/compiler": "^0.0.1", + "vscode-languageserver": "^6.1.1", + "vscode-languageserver-textdocument": "^1.0.1" + } + }, "@concordance/react": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@concordance/react/-/react-2.0.0.tgz", @@ -346,17 +7965,6 @@ "defer-to-connect": "^1.0.1" } }, - "@types/chai": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.14.tgz", - "integrity": "sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ==", - "dev": true - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, "@types/commonmark": { "version": "0.27.4", "resolved": "https://registry.npmjs.org/@types/commonmark/-/commonmark-0.27.4.tgz", @@ -394,9 +8002,9 @@ "dev": true }, "@types/fs-extra": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.2.tgz", - "integrity": "sha512-jp0RI6xfZpi5JL8v7WQwpBEQTq63RqW2kxwTZt+m27LcJqQdPVU1yGnT1ZI4EtCDynQQJtIGyQahkiCGCS7e+A==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.4.tgz", + "integrity": "sha512-50GO5ez44lxK5MDH90DYHFFfqxH7+fTqEEnvguQRzJ/tY9qFrMSHLiYHite+F3SNmf7+LHC1eMXojuD+E3Qcyg==", "requires": { "@types/node": "*" } @@ -416,9 +8024,9 @@ "integrity": "sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww==" }, "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", "dev": true }, "@types/microtime": { @@ -432,14 +8040,14 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==" }, "@types/node": { - "version": "14.14.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", - "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==" + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -447,33 +8055,22 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, - "@types/ora": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/ora/-/ora-3.2.0.tgz", - "integrity": "sha512-jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w==", - "requires": { - "ora": "*" - } - }, "@types/semver": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.4.tgz", "integrity": "sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==" }, - "@types/tape": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.13.0.tgz", - "integrity": "sha512-0V8cKowBdsiA9nbxAg7531sF2cdPZNiUogcfIUeUGm+bejUBE/bvibz3rH36iQP9bQjO/sOzFwU97/uC5mCyoA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/uuid": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" }, + "@types/vscode": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.51.0.tgz", + "integrity": "sha512-C/jZ35OT5k/rsJyAK8mS1kM++vMcm89oSWegkzxRCvHllIq0cToZAkIDs6eCY4SKrvik3nrhELizyLcM0onbQA==", + "dev": true + }, "@types/yargs": { "version": "15.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz", @@ -663,19 +8260,20 @@ } }, "@webpack-cli/info": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.0.2.tgz", - "integrity": "sha512-FEfLQwmN4pXZSYSrtp+KC84rFanoCIxXFpS2wUvviDCE2fnajwxw2GXzbj83IlH4Dl8Wq8kJjavVwvxv3YJmnw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.1.0.tgz", + "integrity": "sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.0.1.tgz", - "integrity": "sha512-WGMaTMTK6NOe29Hw1WBEok9vGLfKg5C6jWzNOS/6HH1YadR+RL+TRWRcSyc81Dzulljhk/Ree9mrDM4Np9GGOQ==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.1.0.tgz", + "integrity": "sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==", + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -712,9 +8310,9 @@ } }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -724,10 +8322,11 @@ } }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} }, "ansi-align": { "version": "3.0.0", @@ -750,6 +8349,12 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -778,15 +8383,6 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -825,12 +8421,6 @@ "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", "dev": true }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -939,6 +8529,16 @@ "color-convert": "^2.0.1" } }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -954,86 +8554,43 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, - "requires": { - "parse-ms": "^2.1.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", - "dev": true, - "requires": { - "array-filter": "^1.0.0" - } - }, "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.1.tgz", + "integrity": "sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==", "dev": true, "requires": { "find-cache-dir": "^2.1.0", "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", + "make-dir": "^2.1.0", "pify": "^4.0.1", "schema-utils": "^2.6.5" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" } }, "balanced-match": { @@ -1059,6 +8616,18 @@ "integrity": "sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q==", "dev": true }, + "bolt": { + "version": "file:vscode-extension", + "requires": { + "@types/node": "^14.14.7", + "@types/vscode": "^1.51.0", + "ts-loader": "^8.0.11", + "typescript": "^4.0.5", + "vscode-languageclient": "^6.1.3", + "webpack": "^5.4.0", + "webpack-cli": "^4.2.0" + } + }, "boxen": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", @@ -1109,6 +8678,21 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -1136,15 +8720,16 @@ } }, "browserslist": { - "version": "4.14.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", - "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001135", - "electron-to-chromium": "^1.3.571", - "escalade": "^3.1.0", - "node-releases": "^1.1.61" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "buffer-from": { @@ -1167,6 +8752,15 @@ "responselike": "^1.0.2" }, "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -1175,6 +8769,16 @@ } } }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1188,42 +8792,20 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001153", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001153.tgz", - "integrity": "sha512-qv14w7kWwm2IW7DBvAKWlCqGTmV2XxNtSejJBVplwRjhkohHuhRUpeSlPjtu9erru0+A12zCDUiSmvx/AcqVRA==", + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", "dev": true }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chokidar": { @@ -1311,9 +8893,9 @@ } }, "cliui": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.3.tgz", - "integrity": "sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1365,37 +8947,15 @@ "dev": true }, "command-line-usage": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.0.tgz", - "integrity": "sha512-Ew1clU4pkUeo6AFVDFxCbnN7GIZfXl48HIOQeFQnkO3oOqvpI7wdqtLRwv9iOCZ/7A+z4csVZeiDdEcj8g6Wiw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", + "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", "dev": true, "requires": { - "array-back": "^4.0.0", + "array-back": "^4.0.1", "chalk": "^2.4.2", - "table-layout": "^1.0.0", + "table-layout": "^1.0.1", "typical": "^5.2.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "commander": { @@ -1446,6 +9006,14 @@ "md5-hex": "^3.0.1", "semver": "^7.3.2", "well-known-symbols": "^2.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } } }, "concurrently": { @@ -1471,28 +9039,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -1510,6 +9056,29 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -1573,6 +9142,16 @@ "y18n": "^4.0.0", "yargs-parser": "^13.1.2" } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -1622,6 +9201,24 @@ "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", "dev": true }, + "core-js-compat": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", + "dev": true, + "requires": { + "browserslist": "^4.14.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1693,36 +9290,6 @@ "mimic-response": "^1.0.0" } }, - "deep-equal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.3.tgz", - "integrity": "sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA==", - "dev": true, - "requires": { - "es-abstract": "^1.17.5", - "es-get-iterator": "^1.1.0", - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.2", - "is-regex": "^1.0.5", - "isarray": "^2.0.5", - "object-is": "^1.1.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2", - "which-boxed-primitive": "^1.0.1", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.2" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -1752,12 +9319,6 @@ "object-keys": "^1.0.12" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -1775,9 +9336,9 @@ } }, "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "dir-glob": { "version": "3.0.1", @@ -1797,15 +9358,6 @@ "is-obj": "^2.0.0" } }, - "dotignore": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", - "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -1813,9 +9365,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.584", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.584.tgz", - "integrity": "sha512-NB3DzrTzJFhWkUp+nl2KtUtoFzrfGXTir2S+BU4tXGyXH9vlluPuFpE3pTKeH7+PY460tHLjKzh6K2+TWwW+Ww==", + "version": "1.3.596", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.596.tgz", + "integrity": "sha512-nLO2Wd2yU42eSoNJVQKNf89CcEGqeFZd++QsnN2XIgje1s/19AgctfjLIbPORlvcCO8sYjLwX4iUgDdusOY8Sg==", "dev": true }, "emittery": { @@ -1899,59 +9451,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "dev": true, - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2019,16 +9518,10 @@ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, - "events-to-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", - "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", - "dev": true - }, "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -2040,12 +9533,23 @@ "onetime": "^5.1.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-diff": { @@ -2121,21 +9625,6 @@ "locate-path": "^3.0.0" } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, "fs-extra": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", @@ -2166,9 +9655,9 @@ "dev": true }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { @@ -2176,10 +9665,21 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { "pump": "^3.0.0" @@ -2259,17 +9759,6 @@ "p-cancelable": "^1.0.0", "to-readable-stream": "^1.0.0", "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } } }, "graceful-fs": { @@ -2304,12 +9793,6 @@ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true }, - "hirestime": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/hirestime/-/hirestime-3.2.2.tgz", - "integrity": "sha512-X+4w5O6JMW7zlgAhad6OPA/MwYTW1FqrF27+6ItRUmDT4jklsXd4N5S5hNCmd9AIGVp8SLsCoGwRe5ddBp/CKg==", - "dev": true - }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -2445,24 +9928,12 @@ "integrity": "sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q==", "dev": true }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz", - "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2472,18 +9943,6 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz", - "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -2493,11 +9952,14 @@ "ci-info": "^2.0.0" } }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } }, "is-error": { "version": "2.2.2", @@ -2512,10 +9974,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.1", @@ -2541,12 +10002,6 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", - "dev": true - }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -2559,12 +10014,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", - "dev": true - }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -2595,72 +10044,18 @@ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "dev": true }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", - "dev": true - }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typed-array": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", - "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.0", - "es-abstract": "^1.17.4", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true - }, - "is-weakset": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", - "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", - "dev": true - }, "is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", @@ -2680,14 +10075,31 @@ "dev": true }, "jest-worker": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.1.tgz", - "integrity": "sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "js-string-escape": { @@ -2751,12 +10163,19 @@ } }, "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } } }, "keyv": { @@ -2777,6 +10196,12 @@ "package-json": "^6.3.0" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -2794,20 +10219,6 @@ "pify": "^4.0.1", "strip-bom": "^3.0.0", "type-fest": "^0.3.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true - } } }, "loader-runner": { @@ -2860,6 +10271,51 @@ "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "requires": { "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "lowercase-keys": { @@ -2876,20 +10332,6 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "map-age-cleaner": { @@ -2940,14 +10382,6 @@ "requires": { "map-age-cleaner": "^0.1.3", "mimic-fn": "^3.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true - } } }, "memory-fs": { @@ -3007,9 +10441,10 @@ } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true }, "mimic-response": { "version": "1.0.1", @@ -3030,25 +10465,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -3072,9 +10488,9 @@ "dev": true }, "node-addon-api": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", - "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" }, "node-gyp-build": { "version": "3.9.0", @@ -3082,9 +10498,9 @@ "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==" }, "node-releases": { - "version": "1.1.64", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.64.tgz", - "integrity": "sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg==", + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", "dev": true }, "normalize-package-data": { @@ -3097,14 +10513,6 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "normalize-path": { @@ -3128,22 +10536,6 @@ "path-key": "^3.0.0" } }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -3151,15 +10543,15 @@ "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "once": { @@ -3176,6 +10568,13 @@ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { "mimic-fn": "^2.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + } } }, "ora": { @@ -3191,6 +10590,51 @@ "mute-stream": "0.0.8", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "p-cancelable": { @@ -3334,9 +10778,9 @@ "dev": true }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pkg-conf": { @@ -3374,12 +10818,12 @@ "dev": true }, "pretty-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-4.0.0.tgz", - "integrity": "sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", "dev": true, "requires": { - "parse-ms": "^2.0.0" + "parse-ms": "^2.1.0" } }, "process-nextick-args": { @@ -3441,14 +10885,35 @@ } }, "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "readable-stream": { @@ -3495,20 +10960,54 @@ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { "rc": "^1.2.8" @@ -3523,6 +11022,29 @@ "rc": "^1.2.8" } }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -3535,11 +11057,12 @@ "dev": true }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, "requires": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, @@ -3576,15 +11099,6 @@ "signal-exit": "^3.0.2" } }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "dev": true, - "requires": { - "through": "~2.3.4" - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -3622,46 +11136,21 @@ "dev": true }, "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - } } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true }, "semver-diff": { "version": "3.1.1", @@ -3716,16 +11205,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "side-channel": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", - "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", - "dev": true, - "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - } - }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -3771,12 +11250,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true } } }, @@ -3787,9 +11260,10 @@ "dev": true }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, "source-map-support": { "version": "0.5.19", @@ -3798,6 +11272,13 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "spawn-command": { @@ -3844,9 +11325,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "stack-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz", - "integrity": "sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -3860,81 +11341,6 @@ } } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - } - } - }, - "string.prototype.repeat": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", - "integrity": "sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=" - }, - "string.prototype.trim": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", - "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -3944,6 +11350,21 @@ "safe-buffer": "~5.1.0" } }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.repeat": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", + "integrity": "sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=" + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -4013,18 +11434,12 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - } + "has-flag": "^3.0.0" } }, "table-layout": { @@ -4039,104 +11454,12 @@ "wordwrapjs": "^4.0.0" } }, - "tap-min": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tap-min/-/tap-min-2.0.0.tgz", - "integrity": "sha512-llKVnIeUOorc9YFmGcfN9kZypBZcz6QA9Pky+cMhXpD/fcU30q1pazSWo6yGBoS2ggeBAkb0BhKZo87xNdUTxQ==", - "dev": true, - "requires": { - "chalk": "^2.1.0", - "duplexer3": "^0.1.4", - "hirestime": "^3.1.1", - "pretty-ms": "^4.0.0", - "readable-stream": "^3.0.6", - "tap-parser": "^9.3.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "tap-parser": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-9.3.3.tgz", - "integrity": "sha512-VlC7tlSZ3EGt2qPLSa9CTJepNkc2yCh7uzhzAF5DxnuujeKbFbKxMA+fxtTWEN2j/KgfGi+mgooiZPKkOhEQyw==", - "dev": true, - "requires": { - "events-to-array": "^1.0.1", - "minipass": "^2.2.0", - "tap-yaml": "^1.0.0" - } - }, - "tap-yaml": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.0.tgz", - "integrity": "sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==", - "dev": true, - "requires": { - "yaml": "^1.5.0" - } - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tape": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", - "integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", - "dev": true, - "requires": { - "deep-equal": "^2.0.3", - "defined": "^1.0.0", - "dotignore": "^0.1.2", - "for-each": "^0.3.3", - "function-bind": "^1.1.1", - "glob": "^7.1.6", - "has": "^1.0.3", - "inherits": "^2.0.4", - "is-regex": "^1.0.5", - "minimist": "^1.2.5", - "object-inspect": "^1.7.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "resolve": "^1.17.0", - "resumer": "^0.0.0", - "string.prototype.trim": "^1.2.1", - "through": "^2.3.8" - } - }, "temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -4190,15 +11513,26 @@ "requires": { "p-try": "^2.0.0" } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, "time-zone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", @@ -4239,9 +11573,9 @@ "dev": true }, "ts-loader": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.7.tgz", - "integrity": "sha512-ooa4wxlZ9TOXaJ/iVyZlWsim79Ul4KyifSwyT2hOrbQA6NZJypsLOE198o8Ko+JV+ZHnMArvWcl4AnRqpCU/Mw==", + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.11.tgz", + "integrity": "sha512-06X+mWA2JXoXJHYAesUUL4mHFYhnmyoCdQVMXofXF552Lzd4wNwSGg7unJpttqUP7ziaruM8d7u8LUB6I1sgzA==", "dev": true, "requires": { "chalk": "^2.3.0", @@ -4251,31 +11585,11 @@ "semver": "^6.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -4286,9 +11600,9 @@ "dev": true }, "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "dev": true }, "typedarray-to-buffer": { @@ -4312,6 +11626,34 @@ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -4380,13 +11722,28 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -4413,9 +11770,9 @@ "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==" }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "validate-npm-package-license": { @@ -4428,10 +11785,58 @@ "spdx-expression-parse": "^3.0.0" } }, + "vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" + }, + "vscode-languageclient": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", + "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", + "requires": { + "semver": "^6.3.0", + "vscode-languageserver-protocol": "^3.15.3" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "vscode-languageserver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", + "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", + "requires": { + "vscode-languageserver-protocol": "^3.15.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "requires": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + }, "watchpack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.0.tgz", - "integrity": "sha512-xSdCxxYZWNk3VK13bZRYhsQpfa8Vg63zXG+3pyU8ouqSLRCv4IGXIp9Kr226q6GBkGRlZrST2wwKtjfKz2m7Cg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.1.tgz", + "integrity": "sha512-vO8AKGX22ZRo6PiOFM9dC0re8IcKh8Kd/aH2zeqUc6w4/jBGlTy2P7fTC6ekT0NjVeGjgU2dGC5rNstKkeLEQg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -4447,9 +11852,9 @@ } }, "webpack": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.3.2.tgz", - "integrity": "sha512-DXsfHoI6lQAR3KnQh7+FsRfs9fs+TEvzXCA35UbKv4kVuzslg7QCMAcpFRZNDMjdtm9N/PoO54XEzGN9TeacQg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.4.0.tgz", + "integrity": "sha512-udpYTyqz8toTTdaOsL2QKPLeZLt2IEm9qY7yTXuFEQhKu5bk0yQD9BtAdVQksmz4jFbbWOiWmm3NHarO0zr/ng==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -4531,32 +11936,43 @@ "find-up": "^4.0.0" } }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, "tapable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.0.0.tgz", - "integrity": "sha512-bjzn0C0RWoffnNdTzNi7rNDhs1Zlwk2tRXgk8EiHKAOX1Mag3d6T0Y5zNa7l9CJ+EoUne/0UHdwS8tMbkh9zDg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.1.1.tgz", + "integrity": "sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ==", "dev": true } } }, "webpack-cli": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.1.0.tgz", - "integrity": "sha512-NdhxXMZmoik62Y05t0h1y65LjBM7BwFPq311ihXuMM3RY6dlc4KkCTyHLzTuBEc+bqq6d3xh+CWmU0xRexNJBA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz", + "integrity": "sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==", "dev": true, "requires": { - "@webpack-cli/info": "^1.0.2", - "@webpack-cli/serve": "^1.0.1", - "ansi-escapes": "^4.3.1", + "@webpack-cli/info": "^1.1.0", + "@webpack-cli/serve": "^1.1.0", "colorette": "^1.2.1", "command-line-usage": "^6.1.0", - "commander": "^6.0.0", - "enquirer": "^2.3.4", - "execa": "^4.0.0", + "commander": "^6.2.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", "import-local": "^3.0.2", - "interpret": "^2.0.0", + "interpret": "^2.2.0", + "leven": "^3.1.0", "rechoir": "^0.7.0", - "v8-compile-cache": "^2.1.0", + "v8-compile-cache": "^2.2.0", "webpack-merge": "^4.2.2" }, "dependencies": { @@ -4585,6 +12001,14 @@ "requires": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "well-known-symbols": { @@ -4602,51 +12026,12 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz", - "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==", - "dev": true, - "requires": { - "is-bigint": "^1.0.0", - "is-boolean-object": "^1.0.0", - "is-number-object": "^1.0.3", - "is-string": "^1.0.4", - "is-symbol": "^1.0.2" - } - }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "which-typed-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", - "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "es-abstract": "^1.17.5", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - } - }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -4727,18 +12112,6 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, "yargs": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.0.tgz", @@ -4751,24 +12124,12 @@ "string-width": "^4.2.0", "y18n": "^5.0.2", "yargs-parser": "^20.2.2" - }, - "dependencies": { - "yargs-parser": { - "version": "20.2.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.3.tgz", - "integrity": "sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww==" - } } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" } } } diff --git a/package.json b/package.json index c53a96f9a..9ed8e0672 100644 --- a/package.json +++ b/package.json @@ -1,64 +1,39 @@ { - "name": "@samvv/bolt", - "version": "0.0.1", - "description": "A programming language for rapid prototyping", - "main": "lib/index.js", - "bin": { - "bolt": "build/bin/bolt.js", - "bolt-test": "build/bin/bolt-test.js" - }, + "name": "bolt-workspace", + "version": "1.0.0", + "private": true, + "description": "The root workspace for building various Bolt language tools", + "workspaces": [ + "@boltlang/compiler", + "@boltlang/langserver", + "@boltlang/cli", + "vscode-extension" + ], "scripts": { - "watch": "webpack --watch --config webpack.dev.js", - "prepare": "webpack --config webpack.prod.js", - "test": "node lib/bin/bolt-test.js", - "generate-ast": "tsastgen src/ast-spec.ts:src/ast.ts", - "update-lkg": "node lib/bin/bolt-test.js create-snapshot lkg" + "test": "concurrently --names compiler 'cd @boltlang/compiler && npm test'", + "watch": "concurrently --names compiler,langserver,cli,vscode 'cd @boltlang/compiler && npm run watch' 'cd @boltlang/langserver && npm run watch' 'cd @boltlang/cli && npm run watch' 'cd vscode-extension && npm run watch'" }, - "author": "Sam Vervaeck ", + "repository": { + "type": "git", + "url": "git+https://github.com/samvv/BoltJS.git" + }, + "author": "Sam Vervaeck", "license": "GPL-3.0", - "repository": "https://github.com/samvv/Bolt", - "dependencies": { - "@types/commonmark": "^0.27.4", - "@types/diff": "^4.0.2", - "@types/fs-extra": "^9.0.2", - "@types/glob": "^7.1.3", - "@types/js-yaml": "^3.12.5", - "@types/microtime": "^2.1.0", - "@types/minimist": "^1.2.0", - "@types/node": "^14.14.6", - "@types/ora": "^3.2.0", - "@types/semver": "^7.3.4", - "@types/uuid": "^8.3.0", - "@types/yargs": "^15.0.9", - "chalk": "^4.1.0", - "commonmark": "^0.29.2", - "diff": "^4.0.2", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "js-yaml": "^3.14.0", - "microtime": "^3.0.0", - "minimist": "^1.2.5", - "moment": "^2.29.1", - "ora": "^5.1.0", - "reflect-metadata": "^0.1.13", - "semver": "^7.3.2", - "source-map-support": "^0.5.19", - "uuid": "^8.3.1", - "yargs": "^16.1.0" + "bugs": { + "url": "https://github.com/samvv/BoltJS/issues" }, + "homepage": "https://github.com/samvv/BoltJS#readme", "devDependencies": { "@babel/core": "^7.12.3", "@babel/plugin-proposal-class-properties": "^7.12.1", - "@types/chai": "^4.2.14", - "@types/tape": "^4.13.0", + "@babel/preset-env": "^7.12.1", + "@types/node": "^14.14.7", "ava": "^3.13.0", - "babel-loader": "^8.1.0", + "babel-loader": "^8.2.1", "concurrently": "^5.3.0", - "tap-min": "^2.0.0", - "tape": "^5.0.1", - "ts-loader": "^8.0.7", + "ts-loader": "^8.0.11", "typescript": "^4.0.5", - "webpack": "^5.3.1", - "webpack-cli": "^4.1.0" + "webpack": "^5.4.0", + "webpack-cli": "^4.2.0" } } diff --git a/src/bin/bolt-test.ts b/src/bin/bolt-test.ts deleted file mode 100644 index 23bb18ef8..000000000 --- a/src/bin/bolt-test.ts +++ /dev/null @@ -1,570 +0,0 @@ - -// NOTE The code in this file is not as clean as we want it to be, but we'll be upgrading our -// test infrastructure anyways with version 1.0.0 so it does not matter much. - -import chalk from "chalk" -import { Parser as CommonmarkParser } from "commonmark" -import * as crypto from "crypto" -import { diffLines } from "diff" -import * as fs from "fs-extra" -import { sync as globSync } from "glob" -import yaml from "js-yaml" -import ora, { Ora } from "ora" -import * as path from "path" -import "reflect-metadata" -import "source-map-support/register" -import { inspect } from "util" -import yargs, { Argv } from "yargs" -import { Syntax, SyntaxKind } from "../ast" -import { Diagnostic, DiagnosticIndex, DiagnosticPrinter, E_TESTS_DO_NOT_COMPARE } from "../diagnostics" -import { Parser } from "../parser" -import { Scanner } from "../scanner" -import { TextFile, TextPos, TextSpan } from "../text" -import { deserializable, deserialize, Json, JsonObject, MapLike, serialize, serializeTag, upsearchSync, assert } from "../util" - -const PACKAGE_ROOT = path.resolve(path.dirname(upsearchSync('package.json')!)); -const DEFAULT_STORAGE_DIR = 'test-storage'; -const STORAGE_DIR = path.join(PACKAGE_ROOT, 'test-storage'); - -const diagnostics = new DiagnosticPrinter(); -let spinner: Ora; - -// TODO move some logic from TestSession to TestSuite -// TODO hash the entire code base and have it serve as a unique key for TestSession - -class FancyError extends Error { - constructor(public message: string) { - super(message); - } -} - -@deserializable() -class Test { - - public key: string; - - constructor( - public readonly span: TextSpan, - public readonly type: string, - public readonly text: string, - public readonly data: JsonObject, - public result?: any, - public error: Error | null = null - ) { - this.key = hash([text, data]); - } - - /** - * Note that tests loose their associated test results when they are serialized. - */ - [serializeTag]() { - return [ - this.span, - this.type, - this.text, - this.data, - this.result, - this.error, - ] - } - -} - -interface ScanForTestsOptions { - include: string[]; - exclude: string[]; -} - -function getKeyForCurrentSources() { - const hasher = crypto.createHash('sha512'); - for (const filepath of globSync('src/**/*.ts')) { - const contents = fs.readFileSync(filepath, 'binary'); - hasher.update(contents) - hasher.update('\0'); - } - return hasher.digest('hex') -} - -function scanForTestsInCurrentSources(options: ScanForTestsOptions) { - const tests: Test[] = []; - const includes = options?.include ?? ['test/**/*.md']; - const excludes = options?.exclude ?? []; - spinner.text = 'Scanning for tests [0 found]'; - for (const include of includes) { - for (const filepath of globSync(include, { ignore: excludes })) { - spinner.info(`Found file ${filepath}`) - for (const test of loadTests(filepath)) { - tests.push(test); - spinner.text = `Scanning for tests [${tests.length} found]`; - } - } - } - return tests; -} - -function getSnapshotForCurrentSources(options: ScanForTestsOptions): TestSnapshot | null { - const key = getKeyForCurrentSources(); - const tests = scanForTestsInCurrentSources(options); - runTests(tests); - if (tests.some(t => t.error !== null)) { - return null; - } - return new TestSnapshot(key, tests); -} - -function runTests(tests: Test[]): void { - let failCount = 0; - let i = 1; - for (const test of tests) { - spinner.text = `Running tests [${i}/${tests.length}]` - const runner = TEST_RUNNERS[test.type] - if (runner === undefined) { - spinner.warn(`Test runner '${test.type}' not found.`) - continue; - } - let result; - try { - test.result = runner(test); - } catch (e) { - test.error = e; - failCount++; - spinner.warn(`The following test from ${path.relative(process.cwd(), test.span.file.fullPath)} failed with "${e.message}":\n\n${test.text}\n`) - } - i++; - } - if (failCount > 0) { - spinner.fail(`${failCount} tests failed.`) - } -} - -//function saveTest(test: Test) { -// fs.mkdirpSync(path.join(STORAGE_DIR, 'tests')); -// fs.writeFileSync(path.join(STORAGE_DIR, 'tests', test.key), JSON.stringify(serialize(test)), 'utf8'); -//} - -@deserializable() -class TestSnapshot { - - constructor( - public key: string, - public tests: Test[], - ) { - fs.mkdirpSync(path.join(STORAGE_DIR, 'snapshots')); - fs.writeFileSync(path.join(STORAGE_DIR, 'snapshots', key), JSON.stringify(serialize(this)), 'utf8'); - } - - public hasFailedTests() { - return this.tests.some(t => t.error !== null); - } - - public saveTo(dir: string) { - fs.mkdirpSync(dir); - const fd = fs.openSync(path.join(dir, this.key), fs.constants.O_WRONLY); - try { - for (const test of this.tests) { - assert(test.error === null); - fs.writeSync(fd, JSON.stringify([serialize(test), serialize(test.result)]) + '\n', undefined, 'utf8'); - } - } finally { - fs.closeSync(fd); - } - } - - private [serializeTag]() { - return [ - this.key, - this.tests, - ] - } - -} - -function loadSnapshot(key: string): TestSnapshot { - const resolvedKey = resolveSnapshotReference(key); - const data = readJson(path.join(STORAGE_DIR, 'snapshots', resolvedKey)); - if (data === null) { - throw new FancyError(`A snapshot named '${resolvedKey}' could not be loaded.`) - } - return deserialize(data); -} - -function valueToString(value: any): string { - return inspect(value, { - colors: false, - depth: Infinity, - }) -} - -function compareTestSnapshots(actualSnapshot: TestSnapshot, expectedSnapshot: TestSnapshot) { - - for (const actualTest of actualSnapshot.tests) { - - const expectedTest = expectedSnapshot.tests.find(t => t.key === actualTest.key); - if (expectedTest === undefined) { - spinner.warn(`Test result '${actualTest.key}' has no correspoding result to compare against.`) - continue; - } - - const diffs = diffLines(valueToString(actualTest.result), valueToString(expectedTest.result)); - if (diffs.some(diff => diff.added || diff.removed)) { - diagnostics.add({ - message: E_TESTS_DO_NOT_COMPARE, - severity: 'error', - node: actualTest, - }); - for (const diff of diffs) { - let out = diff.value; - if (diff.removed) { - out = chalk.red(out); - } else if (diff.added) { - out = chalk.green(out); - } - process.stderr.write(out); - } - } - - } - -} - -function isWhiteSpace(ch: string): boolean { - return /[\n\r\t ]/.test(ch); -} - -interface TestFileMetadata { - type: string; - expect: string; -} - -interface SimpleToken { - text: string; - startPos: TextPos; - endPos: TextPos; -} - -const PREAMBLE_START = '---\n'; -const PREAMBLE_END = '---\n'; - -function getPreamble(text: string): string { - if (!text.startsWith(PREAMBLE_START)) { - return ''; - } - let out = ''; - for (let i = PREAMBLE_START.length; i < text.length; i++) { - if (text.startsWith(PREAMBLE_END, i)) { - break; - } - out += text[i]; - } - return out; -} - -function* loadTests(filepath: string): IterableIterator { - const file = new TextFile(filepath); - const contents = file.getText('utf8'); - const preamble = getPreamble(contents); - const metadata = yaml.safeLoad(preamble); - const parser = new CommonmarkParser(); - const rootNode = parser.parse(contents); - if (rootNode.firstChild === null) { - return; - } - for (let node = rootNode.firstChild; node.next !== null; node = node.next) { - if (node.type === 'code_block') { - if (metadata['split-lines']) { - let startPos = new TextPos(0, node.sourcepos[0][0], node.sourcepos[0][1]); - startPos.advance('```') - startPos.advance(node.info! + '\n') - let endPos = startPos.clone(); - for (const line of node.literal!.split('\n')) { - if (line.length > 0) { - yield new Test(new TextSpan(file, startPos.clone(), endPos.clone()), metadata.type, line, metadata); - startPos = endPos; - } - endPos.advance(line + '\n'); - } - } else { - const startPos = new TextPos(0, node.sourcepos[0][0], node.sourcepos[0][1]); - const endPos = new TextPos(0, node.sourcepos[1][0], node.sourcepos[1][1]); - yield new Test(new TextSpan(file, startPos, endPos), metadata.type, node.literal!, metadata); - } - } - } -} - -function resolveSnapshotReference(reference: string): string { - - // If `name` directly refers to a snapshot, we don't have any more work to do. - if (fs.existsSync(path.join(STORAGE_DIR, 'snapshots', reference))) { - return reference; - } - - // Try to read an alias, returning early if it was indeed found. - const snapshotKey = tryReadFileSync(path.join(STORAGE_DIR, 'aliases', reference)); - if (snapshotKey !== null) { - return snapshotKey; - } - - // We don't support any more refs at the moment, so we indicate failure - throw new FancyError(`A test snapshot named '${reference}' was not found.`) -} - -function readJson(filename: string): Json | null { - const contents = tryReadFileSync(filename); - if (contents === null) { - return null; - } - return JSON.parse(contents); -} - -function tryReadFileSync(filename: string, encoding: BufferEncoding = 'utf8'): string | null { - try { - return fs.readFileSync(filename, encoding); - } catch (e) { - if (e.code === 'ENOENT') { - return null - } - throw e; - } -} - -function tryUnlinkSync(filepath: string): void { - try { - fs.unlinkSync(filepath); - } catch (e) { - if (e.code !== 'ENOENT') { - throw e; - } - } -} - -function hash(value: Json) { - const hasher = crypto.createHash('sha256'); - hasher.update(JSON.stringify(value)); - return hasher.digest('hex'); -} - -type TestRunner = (test: Test) => Json; - -const TEST_RUNNERS: MapLike = { - - scan(test: Test): any { - const diagnostics = new DiagnosticIndex; - const scanner = new Scanner(test.span.file, test.text, test.span.start.clone()); - const tokens = [] - while (true) { - const token = scanner.scan(); - if (token.kind === SyntaxKind.EndOfFile) { - break; - } - tokens.push(token); - } - return { - diagnostics: [...diagnostics.getAllDiagnostics()], - tokens, - }; - }, - - parse(test: Test): any { - const kind = test.data.expect ?? 'SourceFile'; - const diagnostics = new DiagnosticIndex; - const parser = new Parser(); - const tokens = new Scanner(test.span.file, test.text); - let results: Syntax[]; - switch (kind) { - case 'SourceFile': - results = [ parser.parseSourceFile(tokens) ]; - break; - case 'SourceElements': - results = parser.parseSourceElements(tokens); - break; - default: - throw new Error(`I did not know how to parse ${kind}`) - } - return { - diagnostics: [...diagnostics.getAllDiagnostics()], - results, - }; - }, - -} - -const TEST_REPORTERS = { - - scan(test: Test) { - const printer = new DiagnosticPrinter(); - for (const diagnostic of test.result!.diagnostics) { - printer.add(diagnostic as Diagnostic); - } - } - -} - -interface CommonArgv { - -} - -function createTestEngineFromArgs(args: CommonArgv) { - -} - -function wrapper(fn: (args: T) => number | undefined) { - return function (args: T) { - spinner = ora(`Initializing test session ...`).start(); - let exitCode; - try { - exitCode = fn(args); - } catch (e) { - if (e instanceof FancyError) { - spinner.fail(e.message); - process.exit(1); - } else { - throw e; - } - } - process.exit(exitCode ?? 0); - } -} - -yargs - - .command(['$0 [pattern..]', 'run [pattern..]'], 'Run all tests on the current version of the compiler', - yargs => yargs - .array('pattern') - .describe('pattern', 'Only run the tests matching the given pattern') - .array('include') - .describe('include', 'Files to scan for tests') - .default('include', ['test/**/*.md']) - .array('exclude') - .describe('exclude', 'Files to never scan for tests') - .default('exclude', []) - .array('alias') - .describe('alias', 'Save the test results under the given alias') - .default('alias', []) - .string('storage-dir') - .alias('S', 'storage-dir') - .describe('storage-dir', 'The directory where test results will be stored') - .default('storage-dir', DEFAULT_STORAGE_DIR) - , wrapper(args => { - - const testEngine = createTestEngineFromArgs(args); - - // Load and run all tests, saving the results to disk - const snapshot = getSnapshotForCurrentSources(args) - if (snapshot === null || snapshot.hasFailedTests()) { - return 1; - } - - for (const alias of args.alias) { - fs.mkdirpSync(path.join(STORAGE_DIR, 'aliases')) - fs.writeFileSync(path.join(STORAGE_DIR, 'aliases', alias), snapshot.key, 'utf8') - } - - const expectedSnapshot = loadSnapshot('lkg'); - compareTestSnapshots(snapshot, expectedSnapshot) - - } - )) - - .command(['create-snapshot [alias..]'], 'Create a new snapshot from the output of the current compiler', - yargs => yargs - .array('alias') - .describe('alias', 'A user-friendly name to refer to the snapshot.') - .default('alias', []) - .array('include') - .describe('include', 'Files to scan for tests') - .default('include', ['test/**/*.md']) - .array('exclude') - .describe('exclude', 'Files to never scan for tests') - .default('exclude', []) - , wrapper(args => { - - // Load and run all tests, saving the results to disk - const snapshot = getSnapshotForCurrentSources(args); - if (snapshot === null || snapshot.hasFailedTests()) { - return 1; - } - - // Add any aliases that might have been requested for this snapshot - fs.mkdirpSync(path.join(STORAGE_DIR, 'aliases')); - for (const alias of args.alias) { - fs.writeFileSync(path.join(STORAGE_DIR, 'aliases', alias), snapshot.key, 'utf8') - } - - // Output the unqiue identifier for this snapshot - spinner.succeed(`${snapshot.key} created.`) - - } - )) - - .command('compare [expected] [actual]', 'Compare the output of two given tests', - - yargs => yargs - .string('actual') - .describe('actual', 'A reference to a snapshot that will be checked') - .string('expected') - .describe('expected', 'A reference to a test snapshot that will serve as the ground truth') - - , wrapper(args => { - - let expectedKey = args.expected ?? 'lkg'; - let expectedSnapshot = null; - let actualKey = args.actual ?? null; - let actualSnapshot = null; - - if (args.actual === undefined) { - // Load and run all tests, saving the results to disk - const snapshot = getSnapshotForCurrentSources(args); - if (snapshot === null) { - return 1; - } - actualSnapshot = snapshot; - actualKey = snapshot.key; - } - - if (expectedSnapshot === null) { - expectedSnapshot = loadSnapshot(expectedKey); - } - if (actualSnapshot === null) { - actualSnapshot = loadSnapshot(actualKey!); - } - - spinner.info(`Comparing test snapshot ${actualKey} to ${expectedKey}`) - - compareTestSnapshots(actualSnapshot, expectedSnapshot); - - } - )) - - .command( 'clean', 'Clean up test snapshots that are unused', - yargs => yargs - .string('keep') - .array('keep') - .default('keep', ['lkg']) - .describe('keep', 'Keep the given aliases and anything they refer to') - , wrapper(args => { - const snapshotsToKeep = new Set(); - for (const alias of fs.readdirSync(path.join(STORAGE_DIR, 'aliases'))) { - if (args.keep.indexOf(alias) !== -1) { - const snapshotKey = tryReadFileSync(path.join(STORAGE_DIR, 'aliases', alias)); - if (snapshotKey !== null && !fs.existsSync(path.join(STORAGE_DIR, 'snapshots', snapshotKey))) { - spinner.info(`Removing dangling alias ${alias} because the test snapshot it refers to is missing.`) - tryUnlinkSync(path.join(STORAGE_DIR, 'aliases', alias)); - } else { - snapshotsToKeep.add(snapshotKey); - } - } - } - for (const snapshotKey of fs.readdirSync(path.join(STORAGE_DIR, 'snapshots'))) { - if (!snapshotsToKeep.has(snapshotKey)) { - fs.removeSync(path.join(STORAGE_DIR, 'snapshots', snapshotKey)); - } - } - spinner.succeed('Cleanup complete.') - return 0; - } - )) - - .version() - .help() - .argv; diff --git a/src/checker.ts b/src/checker.ts deleted file mode 100644 index 7f538cab0..000000000 --- a/src/checker.ts +++ /dev/null @@ -1,1541 +0,0 @@ - -import { FastStringMap, assert, isPlainObject, some, prettyPrintTag, map, flatMap, filter, memoize, comparator, getKeyTag, pushAll, zip } from "./util"; -import { SyntaxKind, Syntax, isBoltTypeExpression, BoltExpression, BoltFunctionDeclaration, BoltFunctionBodyElement, kindToString, SourceFile, isBoltExpression, BoltCallExpression, BoltIdentifier, isBoltDeclarationLike, isBoltPattern, isJSExpression, isBoltStatement, isJSStatement, isJSPattern, isJSParameter, isBoltParameter, isBoltMatchArm, isBoltRecordFieldValue, isBoltRecordFieldPattern, isEndOfFile, isSyntax, isBoltFunctionDeclaration, isBoltTypeDeclaration, isBoltRecordDeclaration, BoltImplDeclaration, isBoltTraitDeclaration, isBoltImplDeclaration, BoltTypeExpression, BoltDeclaration, BoltTypeDeclaration, BoltReferenceExpression, BoltReferenceTypeExpression, BoltRecordDeclaration, } from "./ast"; -import { convertNodeToSymbolPath, ScopeType, SymbolResolver, SymbolInfo, SymbolPath } from "./resolver"; -import { Value, Record } from "./evaluator"; -import { getAllReturnStatementsInFunctionBody, getFullyQualifiedPathToNode, hasDiagnostic } from "./common"; -import { E_TOO_MANY_ARGUMENTS_FOR_FUNCTION_CALL, E_TOO_FEW_ARGUMENTS_FOR_FUNCTION_CALL, E_CANDIDATE_FUNCTION_REQUIRES_THIS_PARAMETER, E_ARGUMENT_HAS_NO_CORRESPONDING_PARAMETER, E_TYPE_MISMATCH, Diagnostic, E_ARGUMENT_TYPE_NOT_ASSIGNABLE, DiagnosticPrinter, E_THIS_NODE_CAUSED_INVALID_TYPE, E_NOT_CALLABLE, E_PARAMETER_DECLARED_HERE, E_BUILTIN_TYPE_MISSING, E_TYPE_NEVER_MATCHES } from "./diagnostics"; -import { BOLT_MAX_FIELDS_TO_PRINT } from "./constants"; -import { timeStamp } from "console"; - -// TODO For function bodies, we can do something special. -// Sort the return types and find the largest types, eliminating types that fall under other types. -// Next, add the resulting types as type hints to `fnReturnType`. - -// This is a character that is used as a prefix in path names to distinguish -// a global symbol from a symbol coming from a specific source file. -const GLOBAL_SCOPE_MARKER = '@' - -enum TypeKind { - PrimType, - AnyType, - NeverType, - VoidType, - FunctionType, - RecordType, - PlainRecordFieldType, - VariantType, - IntersectType, - UnionType, - TupleType, - CallType, - TraitType, -} - -function toArray(value: T[] | T | null | undefined): T[] { - if (Array.isArray(value)) { - return value; - } - if (value === null || value === undefined) { - return []; - } - return [ value ]; -} - -export type Type - = PrimType - | VoidType - | CallType - | AnyType - | NeverType - | FunctionType - | RecordType - | VariantType - | TupleType - | IntersectType - | UnionType - | PlainRecordFieldType - | TraitType - -enum TypeRefFlags { - None = 0, - HasTypeError = 1, -} - -export class TypeRef { - - private flags = 0; - - constructor(public type: T) { - - } - - public hasTypeError() { - return (this.flags & TypeRefFlags.HasTypeError) > 0; - } - - public markAsHavingTypeError() { - this.flags |= TypeRefFlags.HasTypeError; - } - - public get(): T { - return this.type; - } - - public replaceWith(newType: T | TypeRef): void { - if (newType instanceof TypeRef) { - this.flags = newType.flags; - this.type = newType.type; - } else { - this.type = newType; - } - } - -} - -export function createTypeRef(type: Type) { - return new TypeRef(type); -} - -let nextTypeId = 1; - -function isTypeLessThan(a: Type, b: Type): boolean { - - if (a.kind !== b.kind) { - return a.kind < b.kind; - } - - // These types have only one unique inhabitant, so they are always equal, - // and, by extension, never less than one another. - if ((a.kind === TypeKind.NeverType && a.kind === TypeKind.NeverType) - || (a.kind === TypeKind.AnyType && a.kind === TypeKind.AnyType) - || (a.kind === TypeKind.VoidType && b.kind === TypeKind.VoidType)) { - return false; - } - - if (a.kind === TypeKind.PrimType && b.kind === TypeKind.PrimType) { - return a.name < b.name; - } - - //if (a.kind === TypeKind.UnionType && b.kind === TypeKind.UnionType) { - // a.elementTypes.sort(comparator(areTypesLexicallyLessThan)); - // b.elementTypes.sort(comparator(areTypesLexicallyLessThan)); - // let i = 0; - // let j = 0; - // while (true) { - // if (!areTypesLexicallyLessThan(a.elementTypes[i], b.elementTypes[j])) { - // return false; - // } - // j++; - // } - //} - - if (a.kind === TypeKind.FunctionType && b.kind === TypeKind.FunctionType) { - return a.fnId < b.fnId; - } - - throw new Error(`I did not expected to see the provided type combination.`) -} - -abstract class TypeBase { - - public abstract kind: TypeKind; - - public id = nextTypeId++; - - constructor(public sourceNodes: Syntax[] = []) { - - } - - public [getKeyTag](): string { - return this.id.toString(); - } - - public [prettyPrintTag](): string { - return prettyPrintType(this as Type); - } - -} - -export function isType(value: any) { - return typeof(value) === 'object' - && value !== null - && value.__IS_TYPE !== null; -} - -export class PrimType extends TypeBase { - - public kind: TypeKind.PrimType = TypeKind.PrimType; - - constructor(public name: string, sources: Syntax[] = []) { - super(sources); - } - -} - -export class VoidType extends TypeBase { - public kind: TypeKind.VoidType = TypeKind.VoidType; -} - -export class AnyType extends TypeBase { - public kind: TypeKind.AnyType = TypeKind.AnyType; -} - -export class NeverType extends TypeBase { - public kind: TypeKind.NeverType = TypeKind.NeverType; -} - -export class FunctionType extends TypeBase { - - public kind: TypeKind.FunctionType = TypeKind.FunctionType; - - constructor( - public fnId: number, - public paramTypes: TypeRef[], - public returnType: TypeRef, - sources: Syntax[] = [], - ) { - super(sources); - } - - public getParameterCount(): number { - return this.paramTypes.length; - } - - public getTypeAtParameterIndex(index: number) { - if (index < 0 || index >= this.paramTypes.length) { - throw new Error(`Could not get the parameter type at index ${index} because the index was out of bounds.`); - } - return this.paramTypes[index]; - } - -} - -export class VariantType extends TypeBase { - - public kind: TypeKind.VariantType = TypeKind.VariantType; - - constructor(public elementTypes: TypeRef[], sources: Syntax[] = []) { - super(sources); - } - - public getVariantTypes(): IterableIterator { - return this.elementTypes[Symbol.iterator](); - } - -} - -export class IntersectType extends TypeBase { - - public kind: TypeKind.IntersectType = TypeKind.IntersectType; - - public elementTypes: TypeRef[] = []; - - constructor( - elementTypes: Iterable, - sources: Syntax[] = [] - ) { - super(sources); - this.elementTypes = [...elementTypes]; - } - -} - -export class UnionType extends TypeBase { - - public kind: TypeKind.UnionType = TypeKind.UnionType; - - public elementTypes: TypeRef[] = []; - - constructor( - elementTypes: Iterable = [], - sources: Syntax[] = [] - ) { - super(sources); - this.elementTypes = [...elementTypes]; - } - - public addElement(element: TypeRef): void { - this.elementTypes.push(element); - } - - public getElementTypes(): IterableIterator { - return this.elementTypes[Symbol.iterator](); - } - -} - -export type RecordFieldType - = PlainRecordFieldType - | AnyType - | UnionType - -class PlainRecordFieldType extends TypeBase { - - public kind: TypeKind.PlainRecordFieldType = TypeKind.PlainRecordFieldType; - - constructor(public name: string, public type: TypeRef, sources: Syntax[] = []) { - super(sources); - } - -} - -export class TraitType extends TypeBase { - - public kind: TypeKind.TraitType = TypeKind.TraitType; - - private functionTypesByName = new FastStringMap(); - - constructor( - public source: Syntax, - public memberTypes: Iterable<[string, FunctionType]>, - sources: Syntax[] = [] - ) { - super(sources); - for (const [name, type] of memberTypes) { - this.functionTypesByName.set(name, type); - } - } - -} - -export class RecordType extends TypeBase { - - public kind: TypeKind.RecordType = TypeKind.RecordType; - - private memberTypes: TypeRef[] = []; - private memberTypesByFieldName = new FastStringMap(); - - constructor( - public source: Syntax | Type | number, - iterable?: Iterable>, - sources: Syntax[] = [] - ) { - super(sources); - if (iterable !== undefined) { - for (const type of iterable) { - this.addMemberType(type); - } - } - } - - public getRequiredFieldNames(): IterableIterator { - return this.memberTypesByFieldName.keys(); - } - - public addMemberType(type: TypeRef): void { - this.memberTypes.push(type); - if (type instanceof PlainRecordFieldType) { - this.memberTypesByFieldName.set(type.name, type); - } - } - - public getMemberTypes(): IterableIterator> { - return this.memberTypes[Symbol.iterator](); - } - - public isFieldRequired(name: string): boolean { - return this.memberTypesByFieldName.has(name); - } - - public clear(): void { - this.memberTypes = []; - this.memberTypesByFieldName.clear(); - } - -} - -export class TupleType extends TypeBase { - - kind: TypeKind.TupleType = TypeKind.TupleType; - - constructor( - public elementTypes: TypeRef[] = [], - sources: Syntax[] = [] - ) { - super(sources); - } - -} - -export class CallType extends TypeBase { - - public kind: TypeKind.CallType = TypeKind.CallType; - - constructor( - public fnType: TypeRef, - public argumentTypes: TypeRef[], - sources: Syntax[] = [] - ) { - super(sources); - } - - public getArgumentTypes(): IterableIterator { - return this.argumentTypes[Symbol.iterator](); - } - -} - -function* getAllUnionElementTypeRefs(typeRef: TypeRef): IterableIterator { - const type = typeRef.get(); - switch (type.kind) { - case TypeKind.UnionType: - { - for (const elementType of type.getElementTypes()) { - yield* getAllUnionElementTypeRefs(elementType); - } - break; - } - default: - yield typeRef; - } -} - -function* getAllUnionElementTypes(type: Type): IterableIterator { - switch (type.kind) { - case TypeKind.UnionType: - { - for (const elementType of type.getElementTypes()) { - yield* getAllUnionElementTypes(elementType.get()); - } - break; - } - default: - yield type; - } -} - -export function prettyPrintType(type: Type): string { - - let out = '' - - let hasElementType = false; - - for (const elementType of getAllUnionElementTypes(type)) { - - if (hasElementType) { - out += ' | ' - } else { - hasElementType = true; - } - - switch (elementType.kind) { - - case TypeKind.PlainRecordFieldType: - out += '{ ' + elementType.name + ' } '; - break; - - case TypeKind.CallType: - out += 'return type of ' - out += prettyPrintType(elementType.fnType.get()); - out += '('; - out += elementType.argumentTypes.map(t => prettyPrintType(t.get())).join(', ') - out += ')' - break; - - case TypeKind.PrimType: - out += elementType.name; - break; - - case TypeKind.AnyType: - out += 'any'; - break; - - case TypeKind.NeverType: - out += 'never' - break; - - case TypeKind.FunctionType: - { - out += 'fn ('; - out += elementType.paramTypes.map(prettyPrintType).join(', '); - out += ') -> '; - out += prettyPrintType(elementType.returnType.get()); - break; - } - - case TypeKind.IntersectType: - { - if (elementType.elementTypes.length === 0) { - return ''; - } - out += elementType.elementTypes.map(t => prettyPrintType(t.get())).join(' & '); - break; - } - - case TypeKind.TupleType: - { - out += '(' - let i = 0; - for (const tupleElementType of elementType.elementTypes) { - out += prettyPrintType(tupleElementType.get()); - i++ - if (i >= BOLT_MAX_FIELDS_TO_PRINT) { - out += ' (element types omitted)' - break; - } - } - out += ')' - break; - } - - case TypeKind.RecordType: - { - if (elementType.sourceNodes.length > 0) { - switch (elementType.sourceNodes[0].kind) { - case SyntaxKind.BoltRecordDeclaration: - out += elementType.sourceNodes[0].name.text; - break; - default: - throw new Error(`I did not know how to print AST node for a record type`) - } - } else { - throw new Error(`I did not know how to print the source of a record type.`) - } - break; - //out += '{' - //let i = 0; - //for (const memberType of elementType.getMemberTypes()) { - // for (const memberTypeNoUnion of getAllPossibleElementTypes(memberType)) { - // switch (memberTypeNoUnion.kind) { - // case TypeKind.AnyType: - // out += ' ...'; - // break; - // case TypeKind.PlainRecordFieldType: - // out += ' ' + memberTypeNoUnion.name + ': ' + prettyPrintType(memberTypeNoUnion.type); - // break; - // default: - // throw new Error(`I did not know how to pretty-print a record field type.`) - // } - // i++; - // if (i >= BOLT_MAX_FIELDS_TO_PRINT) { - // out += ' (field types omitted)' - // break - // } - // } - //} - //out += ' }' - //break; - } - - default: - throw new Error(`Could not pretty-print type ${TypeKind[elementType.kind]}`) - - } - - } - - if (!hasElementType) { - out += 'never' - } - - return out; -} - -let nextRecordTypeId = 1; - -function introducesType(node: Syntax) { - return isBoltExpression(node) - || isBoltFunctionDeclaration(node) - || isBoltTypeDeclaration(node) - || isBoltRecordDeclaration(node) - || isBoltParameter(node) - || isBoltRecordFieldValue(node) - || isBoltRecordFieldPattern(node) - || isBoltPattern(node) - || isBoltTypeExpression(node) - || isJSExpression(node) - || isJSPattern(node) - || isJSParameter(node) -} - -export class TypeChecker { - - private dependencyGraph = new FastStringMap(); - - private neverType = createTypeRef(new NeverType()); - - constructor(private resolver: SymbolResolver, private diagnostics: DiagnosticPrinter) { - - } - - private getNeverType() { - return this.neverType; - } - - private getPrimType(path: string): TypeRef { - const elements = path.split('::'); - const symbolPath = new SymbolPath(elements.slice(0,-1), true, elements[elements.length-1]); - const resolvedSymbol = this.resolver.resolveGlobalSymbol(symbolPath, ScopeType.Type); - if (resolvedSymbol === null) { - this.diagnostics.add({ - message: E_BUILTIN_TYPE_MISSING, - args: { name: path }, - severity: 'error', - }) - return createTypeRef(new AnyType); - } - return createTypeRef(new PrimType(GLOBAL_SCOPE_MARKER + path, [...resolvedSymbol.declarations])); - } - - public createTypeForValue(value: Value, source: Syntax): TypeRef { - if (typeof(value) === 'string') { - return createTypeRef(new PrimType('@String', [ source ])); - } else if (typeof(value) === 'bigint') { - return createTypeRef(new PrimType('@int', [ source ])); - } else if (typeof(value) === 'number') { - return createTypeRef(new PrimType('@f64', [ source ])); - } else if (value instanceof Record) { - const memberTypes = []; - for (const [fieldName, fieldValue] of value.getFields()) { - const recordFieldType = new PlainRecordFieldType(name, this.createTypeForValue(fieldValue, source)); - memberTypes.push(recordFieldType); - } - const recordType = new RecordType(nextRecordTypeId++, memberTypes); - return recordType; - } else { - throw new Error(`Could not determine type of given value.`); - } - } - - private diagnoseTypeError(affectedType: Type, invalidType: Type): void { - for (const source of affectedType.sourceNodes) { - this.diagnostics.add({ - message: E_TYPE_MISMATCH, - severity: 'error', - args: { left: affectedType, right: invalidType }, - node: source, - nested: invalidType.sourceNodes.map(node => { - return { - message: E_THIS_NODE_CAUSED_INVALID_TYPE, - severity: 'info', - node, - args: { type: invalidType, origType: affectedType }, - } - }) - }); - } - } - - public registerSourceFile(sourceFile: SourceFile): void { - for (const node of sourceFile.preorder()) { - if (introducesType(node)) { - node.type = createTypeRef(new AnyType); - } - if (isBoltImplDeclaration(node)) { - const scope = this.resolver.getScopeSurroundingNode(node, ScopeType.Type); - assert(scope !== null); - const traitSymbol = this.resolver.resolveSymbolPath(convertNodeToSymbolPath(node.traitTypeExpr), scope!) - for (const traitDecl of traitSymbol!.declarations) { - traitDecl.addImplDeclaration(node); - } - } - } - } - - private *getParentsThatMightNeedUpdate(node: Syntax): IterableIterator { - while (true) { - const parentNode = node.parentNode!; - if (!introducesType(parentNode)) { - break; - } - yield parentNode; - node = parentNode; - } - } - - public solve(sourceFiles: IterableIterator): void { - - let queued: Syntax[] = []; - const nextQueue = new Set(); - - for (const sourceFile of sourceFiles) { - for (const node of sourceFile.preorder()) { - if (introducesType(node)) { - queued.push(node); - } - } - } - - while (true) { - - if (queued.length === 0) { - if (nextQueue.size > 0) { - queued = [...nextQueue]; - nextQueue.clear(); - continue; - } else { - break; - } - } - - const node = queued.shift()!; - - const derivedType = this.deriveTypeUsingChildren(node); - node.type!.replaceWith(new IntersectType([createTypeRef(node.type!.get()), derivedType], [ node ])); - this.checkType(node.type!); - - if (!node.type!.hasTypeError()) { - for (const dependantNode of this.getParentsThatMightNeedUpdate(node)) { - if (introducesType(dependantNode)) { - nextQueue.add(dependantNode); - } - } - for (const dependantNode of this.getNodesRequiringUpdate(node)) { - assert(introducesType(dependantNode)); - nextQueue.add(dependantNode); - } - } - - } - } - - private markNodeAsRequiringUpdate(origNode: Syntax, nodeToUpdate: Syntax) { - if (!this.dependencyGraph.has(origNode.id.toString())) { - this.dependencyGraph.set(origNode.id.toString(), [ nodeToUpdate ]); - } else { - this.dependencyGraph.get(origNode.id.toString()).push(nodeToUpdate); - } - } - - private *getNodesRequiringUpdate(node: Syntax): IterableIterator { - if (!this.dependencyGraph.has(node.id.toString())) { - return; - } - const visited = new Set(); - const stack = [ ...this.dependencyGraph.get(node.id.toString()) ] - while (stack.length > 0) { - const node = stack.pop()!; - if (visited.has(node)) { - continue; - } - yield node; - visited.add(node) - if (this.dependencyGraph.has(node.id.toString())) { - for (const dependantNode of this.dependencyGraph.get(node.id.toString())) { - stack.push(dependantNode); - } - } - } - } - - public isVoidType(type: TypeRef): boolean { - this.checkType(type); - return this.areTypesEquivalent(new VoidType, type); - } - - /** - * Narrows @param outter down to @param inner. If @param outer could not be narrowed, this function return null. - * - * @param targetType The type that will be narrowed. - * @param smallerType The type that serves as the outer bound of `smallerType`. - */ - private deriveTypeUsingChildren(node: Syntax): TypeRef { - - switch (node.kind) { - - case SyntaxKind.JSMemberExpression: - { - // TODO - return createTypeRef(new AnyType); - } - - case SyntaxKind.JSLiteralExpression: - { - if (typeof(node.value) === 'string') { - return this.getPrimType('String'); - } else if (typeof(node.value) === 'number') { - return this.getPrimType('JSNum'); - } else { - throw new Error(`I did not know how to derive a type for JavaScript value ${node.value}`) - } - } - - case SyntaxKind.JSReferenceExpression: - { - // TODO - return createTypeRef(new AnyType); - } - - case SyntaxKind.JSCallExpression: - { - // TODO - return createTypeRef(new AnyType); - } - - case SyntaxKind.BoltMatchExpression: - { - const exprTypes = []; - for (const arm of node.arms) { - this.markNodeAsRequiringUpdate(arm.body, node); - exprTypes.push(arm.body.type!); - } - return createTypeRef(new IntersectType(exprTypes, [ node ])); - } - - case SyntaxKind.BoltParameter: - { - const resultTypes = [ node.bindings.type! ] - this.markNodeAsRequiringUpdate(node.bindings, node); - if (node.typeExpr !== null) { - resultTypes.push(node.typeExpr.type!); - this.markNodeAsRequiringUpdate(node.typeExpr, node); - } - if (node.defaultValue !== null) { - resultTypes.push(node.defaultValue.type!) - this.markNodeAsRequiringUpdate(node.defaultValue, node) - } - return createTypeRef(new UnionType(resultTypes, [ node ])); - } - - case SyntaxKind.BoltFunctionExpression: - { - for (const param of node.params) { - this.markNodeAsRequiringUpdate(param, node); - } - const paramTypes = node.params.map(param => param.type!); - let returnType; - if (node.returnType === null) { - returnType = createTypeRef(new AnyType([ node ])); - } else { - returnType = node.returnType.type!; - this.markNodeAsRequiringUpdate(node.returnType, node); - } - return createTypeRef(new FunctionType(node.id, paramTypes, returnType, [ node ])); - } - - case SyntaxKind.BoltRecordDeclaration: - { - if (node.members === null) { - const symbolPath = getFullyQualifiedPathToNode(node); - return createTypeRef(new PrimType(symbolPath.encode(), [ node ])); - } else { - let memberTypes = [] - for (const member of node.members) { - //assert(member instanceof PlainRecordFieldType); - memberTypes.push(member.type! as TypeRef) - this.markNodeAsRequiringUpdate(member, node); - } - return createTypeRef(new RecordType(node, memberTypes)); - } - } - - case SyntaxKind.BoltRecordDeclarationField: - { - const resultType = new PlainRecordFieldType(node.name.text, node.typeExpr.type!); - this.markNodeAsRequiringUpdate(node.typeExpr, node) - return createTypeRef(resultType); - } - - case SyntaxKind.BoltRecordPattern: - { - let memberTypes = [] - for (const member of node.fields) { - //assert(member.type instanceof PlainRecordFieldType); - memberTypes.push(member.type! as TypeRef); - this.markNodeAsRequiringUpdate(member, node); - } - return createTypeRef(new RecordType(node.name, memberTypes)); - } - - case SyntaxKind.BoltRecordFieldPattern: - { - if (node.isRest) { - // TODO - } else { - assert(node.name !== null); - let nestedFieldType; - if (node.pattern === null) { - nestedFieldType = createTypeRef(new AnyType); - } else { - nestedFieldType = node.pattern.type!; - this.markNodeAsRequiringUpdate(node.pattern, node); - } - return createTypeRef(new PlainRecordFieldType(node.name!.text, nestedFieldType)); - } - } - - case SyntaxKind.BoltTypeAliasDeclaration: - { - // TODO - return createTypeRef(new AnyType([ node ])); - } - - //case SyntaxKind.BoltImplDeclaration: - //{ - // return new TraitType( - // node, - // node.elements - // .filter(isBoltFunctionDeclaration) - // .map(element => { - // this.markNodeAsRequiringUpdate(element, node); - // return [ - // emitNode(element.name), - // element.type!.solved - // ] as [string, FunctionType]; - // }) - // ); - //} - - //case SyntaxKind.BoltTraitDeclaration: - //{ - // // TODO - // return new AnyType; - //} - - case SyntaxKind.BoltVariableDeclaration: - { - let elementTypes = [] - if (node.value !== null) { - elementTypes.push(node.value.type!); - this.markNodeAsRequiringUpdate(node.value, node); - } - if (node.typeExpr !== null) { - elementTypes.push(node.typeExpr.type!); - this.markNodeAsRequiringUpdate(node.typeExpr, node); - } - return createTypeRef(new UnionType(elementTypes, [ node ])); - } - - case SyntaxKind.BoltExpressionPattern: - { - return this.deriveTypeUsingChildren(node.expression); - } - - case SyntaxKind.BoltBindPattern: - { - // TODO - return createTypeRef(new AnyType([ node ])); - } - - case SyntaxKind.BoltConstantExpression: - { - return this.createTypeForValue(node.value, node); - } - - case SyntaxKind.BoltFunctionTypeExpression: - { - const paramTypes = node.params.map(param => { - this.markNodeAsRequiringUpdate(param, node); - return param.type!; - }) - let returnType = null; - if (node.returnType === null) { - returnType = createTypeRef(new AnyType([ node ])); - } else { - returnType = node.returnType.type!; - this.markNodeAsRequiringUpdate(node.returnType!, node); - } - return createTypeRef(new FunctionType(node.id, paramTypes, returnType, [ node ])); - } - - case SyntaxKind.BoltMacroCall: - { - // TODO - return createTypeRef(new AnyType([ node ])); - } - - case SyntaxKind.BoltQuoteExpression: - { - return this.getPrimType('Lang::Bolt::Node'); - } - - //case SyntaxKind.BoltExpressionStatement: - //{ - // return this.deriveTypeUsingChildren(node.expression); - //} - - //case SyntaxKind.BoltReturnStatement: - //{ - // if (node.value === null) { - // const tupleType = new TupleType(); - // return tupleType - // } - // return node.value.type!.solved; - //} - - //case SyntaxKind.BoltBlockExpression: - //{ - // let elementTypes = []; - // if (node.elements !== null) { - // for (const returnStmt of getReturnStatementsInFunctionBody(node.elements)) { - // if (returnStmt.value !== null) { - // elementTypes.push(returnStmt.value.type!.solved) - // this.markNodeAsRequiringUpdate(returnStmt.value, node); - // } - // } - // } - // return new UnionType(elementTypes); - //} - - case SyntaxKind.BoltMemberExpression: - { - let unionTypeElements = []; - assert(node.path.length === 1); - const recordTypes = []; - for (const memberType of this.getTypesForMember(node.path[0], node.path[0].text, node.expression.type!)) { - unionTypeElements.push(memberType); - } - return createTypeRef(new UnionType(unionTypeElements, [ node ])); - } - - case SyntaxKind.BoltCallExpression: - { - let operandTypes = [] - for (const operand of node.operands) { - operandTypes.push(operand.type!); - this.markNodeAsRequiringUpdate(operand, node); - } - this.markNodeAsRequiringUpdate(node.operator, node); - return createTypeRef(new CallType(node.operator.type!, operandTypes, [ node ])); - } - - case SyntaxKind.BoltReferenceExpression: - { - const scope = this.resolver.getScopeSurroundingNode(node, ScopeType.Variable); - if (scope === null) { - return createTypeRef(new AnyType); - } - const symbolPath = convertNodeToSymbolPath(node.name); - const resolvedSym = this.resolver.resolveSymbolPath(symbolPath, scope!); - if (resolvedSym === null) { - return createTypeRef(new AnyType); - } - let elementTypes = []; - for (const decl of resolvedSym.declarations) { - elementTypes.push(decl.type!); - this.markNodeAsRequiringUpdate(decl, node) - } - return createTypeRef(new UnionType(elementTypes)); - } - - case SyntaxKind.BoltFunctionDeclaration: - { - let returnTypes: TypeRef[] = []; - if (node.returnType !== null) { - returnTypes.push(node.returnType.type!); - this.markNodeAsRequiringUpdate(node.returnType, node); - } - if (node.body !== null) { - for (const returnStmt of getAllReturnStatementsInFunctionBody(node.body)) { - if (returnStmt.value !== null) { - returnTypes.push(returnStmt.value.type!); - this.markNodeAsRequiringUpdate(returnStmt.value, node); - } else { - returnTypes.push(createTypeRef(new VoidType([ returnStmt ]))); - } - } - } - let paramTypes = []; - for (const param of node.params) { - paramTypes.push(param.type!); - this.markNodeAsRequiringUpdate(param, node); - } - return createTypeRef(new FunctionType(node.id, paramTypes, createTypeRef(new UnionType(returnTypes, [ node ])), [ node ])); - } - - case SyntaxKind.BoltReferenceTypeExpression: - { - if (node.name.modulePath.length === 0) { - switch ((node.name.name as BoltIdentifier).text) { - case 'never': - return createTypeRef(new NeverType([ node ])); - case 'any': - return createTypeRef(new AnyType([ node ])); - case 'int': - return createTypeRef(new PrimType('@int', [ node ])); - case 'String': - return createTypeRef(new PrimType('@String', [ node ])); - } - } - const scope = this.resolver.getScopeSurroundingNode(node, ScopeType.Type); - assert(scope !== null); - const symbolPath = convertNodeToSymbolPath(node.name); - const resolvedSym = this.resolver.resolveSymbolPath(symbolPath, scope!); - if (resolvedSym === null) { - return createTypeRef(new NeverType([ node ])); - } - let elementTypes = []; - for (const decl of resolvedSym.declarations) { - this.markNodeAsRequiringUpdate(decl, node); - elementTypes.push(decl.type!); - } - return createTypeRef(new UnionType(elementTypes, [ node ])); - } - - default: - throw new Error(`Unexpected node type ${kindToString(node.kind)}`); - - } - } - - //if (returnStmt.value === null) { - // if (!this.isVoidType(returnType)) { - // returnStmt.errors.push({ - // message: E_MAY_NOT_RETURN_A_VALUE, - // severity: 'error', - // nested: [{ - // message: E_MAY_NOT_RETURN_BECAUSE_TYPE_RESOLVES_TO_VOID, - // severity: 'error', - // node: node.returnType !== null ? node.returnType : node, - // }] - // }); - // } - //} else { - // const stmtReturnType = this.getTypeOfExpression(returnStmt.value); - // if (!this.isTypeAssignableTo(returnType, stmtReturnType)) { - // if (this.isVoidType(stmtReturnType)) { - // returnStmt.value.errors.push({ - // message: E_MUST_RETURN_A_VALUE, - // severity: 'error', - // nested: [{ - // message: E_MUST_RETURN_BECAUSE_TYPE_DOES_NOT_RESOLVE_TO_VOID, - // severity: 'error', - // node: node.returnType !== null ? node.returnType : node, - // }] - // }) - // } else { - // returnStmt.value.errors.push({ - // message: E_TYPES_NOT_ASSIGNABLE, - // severity: 'error', - // args: { - // left: returnType, - // right: stmtReturnType, - // } - // }) - // } - // } - //} - - private areTypesEquivalent(a: Type, b: Type): boolean { - - if ((a.kind === TypeKind.NeverType && b.kind === TypeKind.NeverType) - || (a.kind === TypeKind.AnyType && b.kind === TypeKind.AnyType) - || (a.kind == TypeKind.VoidType && b.kind === TypeKind.VoidType) - || (a.kind === TypeKind.FunctionType && b.kind === TypeKind.FunctionType && a.fnId === b.fnId) - || (a.kind === TypeKind.PrimType && b.kind === TypeKind.PrimType && a.name === b.name)) { - return true; - } - - if (a.kind === TypeKind.CallType && b.kind === TypeKind.CallType) { - assert(false); - } - - if ((a.kind === TypeKind.UnionType && b.kind === TypeKind.UnionType) - || (a.kind === TypeKind.IntersectType && b.kind === TypeKind.IntersectType)) { - a.elementTypes.sort(comparator((a, b) => isTypeLessThan(a.get(), b.get()))); - b.elementTypes.sort(comparator((a, b) => isTypeLessThan(a.get(), b.get()))); - let i = 0; - let j = 0; - while (true) { - if (i >= a.elementTypes.length && j >= b.elementTypes.length) { - break; - } - if (i >= a.elementTypes.length || j >= b.elementTypes.length) { - return false; - } - const elementA = a.elementTypes[i++]; - const elementB = b.elementTypes[j++]; - if (!this.areTypesEquivalent(elementA.get(), elementB.get())) { - return false; - } - } - return true; - } - - // FIXME Record types are not handled. - return false; - } - - private checkFunctionCall(callTypeRef: TypeRef, fnType: FunctionType) { - - const callType = callTypeRef.get(); - - if (fnType.paramTypes.length > callType.argumentTypes.length) { - - if (!callTypeRef.hasTypeError()) { - - let nested: Diagnostic[] = []; - for (let i = callType.argumentTypes.length; i < fnType.paramTypes.length; i++) { - nested.push({ - message: E_CANDIDATE_FUNCTION_REQUIRES_THIS_PARAMETER, - severity: 'info', - node: fnType.paramTypes[i].get().sourceNodes[0] - }); - } - this.diagnostics.add({ - message: E_TOO_FEW_ARGUMENTS_FOR_FUNCTION_CALL, - severity: 'error', - node: callType.sourceNodes[0], - args: { - expected: fnType.paramTypes.length, - actual: callType.argumentTypes.length, - }, - nested, - }); - - callTypeRef.markAsHavingTypeError(); - - } - - return false; - - } else if (callType.argumentTypes.length > fnType.paramTypes.length) { - - if (!callTypeRef.hasTypeError()) { - - const nested: Diagnostic[] = []; - for (let i = fnType.paramTypes.length; i < callType.argumentTypes.length; i++) { - nested.push({ - message: E_ARGUMENT_HAS_NO_CORRESPONDING_PARAMETER, - severity: 'info', - node: callType.argumentTypes[i].get().sourceNodes[0], - }); - } - this.diagnostics.add({ - message: E_TOO_MANY_ARGUMENTS_FOR_FUNCTION_CALL, - severity: 'error', - node: callType.sourceNodes[0], - args: { - expected: fnType.paramTypes.length, - actual: callType.argumentTypes.length, - }, - nested, - }); - - callTypeRef.markAsHavingTypeError(); - - } - - return false; - - } else { - - let hasErrors = false; - - const paramCount = fnType.paramTypes.length; - - for (let i = 0; i < paramCount; i++) { - const argTypeRef = callType.argumentTypes[i]; - const argType = argTypeRef.get(); - const paramTypeRef = fnType.paramTypes[i]; - const paramType = paramTypeRef.get(); - if (!this.isTypeAssignableTo(argType, paramType)) { - if (!argTypeRef.hasTypeError()) { - this.diagnostics.add({ - message: E_ARGUMENT_TYPE_NOT_ASSIGNABLE, - severity: 'error', - node: argType.sourceNodes[0], - args: { argType, paramType }, - nested: [{ - message: E_THIS_NODE_CAUSED_INVALID_TYPE, - severity: 'info', - node: paramType.sourceNodes[0], - args: { type: paramType, origType: argType } - }] - }); - argTypeRef.markAsHavingTypeError(); - } - hasErrors = true; - } - } - - return !hasErrors; - - } - - } - - private *getReturnTypes(fnTypeRef: TypeRef, callTypeRef: TypeRef): IterableIterator { - - const fnType = fnTypeRef.get(); - const callType = callTypeRef.get(); - - switch (fnType.kind) { - - case TypeKind.NeverType: - // If we requested the return type of a union containing a 'never'-type, then - // we are not allowed to let any function match. - break; - - case TypeKind.AnyType: - // The return type of an 'any'-type (which includes all functions that have 'any' as return type) - // is the 'any'-type. If we don't find a more specific match, this will be the type that is returned. - yield fnTypeRef; - break; - - case TypeKind.PrimType: - // We can never call a primitive type, so indicate this error to the user. - this.diagnostics.add({ - message: E_NOT_CALLABLE, - severity: 'error', - node: callType.sourceNodes[0], - }); - break; - - case TypeKind.UnionType: - for (const elementType of fnType.elementTypes) { - yield* this.getReturnTypes(elementType, callTypeRef); - } - break; - - case TypeKind.FunctionType: - if (this.checkFunctionCall(callTypeRef, fnType)) { - // If the argument types and parameter types didn't fail to match, - // the function type is eligable to be 'called' by the given ReturnType. - yield fnType.returnType; - } - break; - - case TypeKind.IntersectType: - const returnTypes = []; - for (const elementType of fnType.elementTypes) { - for (const returnType of this.getReturnTypes(elementType, callTypeRef)) { - returnTypes.push(returnType); - } - } - yield createTypeRef(new IntersectType(returnTypes)); - break; - - default: - throw new Error(`Resolving the given type will not work.`) - - } - - } - - private mergeTypes(target: Type, source: Type): void { - assert(this.areTypesEquivalent(target, source)); - if (source !== target) { - pushAll(target.sourceNodes, source.sourceNodes); - target.failed = target.failed || source.failed; - } - } - - private removeNeverTypes(types: TypeRef[]) { - for (let i = 0; i < types.length; i++) { - if (types[i].get().kind === TypeKind.NeverType) { - types.splice(i, 1); - } - } - } - - private removeAnyTypes(types: TypeRef[]) { - for (let i = 0; i < types.length; i++) { - if (types[i].get().kind === TypeKind.AnyType) { - types.splice(i, 1); - } - } - } - - private mergeNeverTypes(types: TypeRef[]): TypeRef | null { - - let firstNeverType = null; - - for (let i = 0; i < types.length; i++) { - const type = types[i]; - if (type.get().kind === TypeKind.NeverType) { - if (firstNeverType === null) { - firstNeverType = type; - } else { - this.mergeTypes(firstNeverType.get(), type.get()); - } - } - } - - return firstNeverType; - - } - - private mergeAnyTypes(types: TypeRef[]): TypeRef | null { - - let firstAnyType = null; - - for (let i = 0; i < types.length; i++) { - const type = types[i]; - if (type.get().kind === TypeKind.AnyType) { - if (firstAnyType === null) { - firstAnyType = type; - } else { - this.mergeTypes(firstAnyType.get(), type.get()); - types.splice(i, 1); - } - } - } - - return firstAnyType; - - } - - private checkType(typeRef: TypeRef) { - - const type = typeRef.get(); - - switch (type.kind) { - - case TypeKind.PrimType: - break; - - case TypeKind.FunctionType: - for (const paramType of type.paramTypes) { - this.checkType(paramType); - } - break; - - case TypeKind.AnyType: - break; - - case TypeKind.NeverType: - if (!typeRef.hasTypeError()) { - this.diagnostics.add({ - message: E_TYPE_NEVER_MATCHES, - severity: 'error', - node: type.sourceNodes[0], - args: { type } - }); - typeRef.markAsHavingTypeError(); - } - break; - - case TypeKind.IntersectType: - { - for (const elementType of type.elementTypes) { - this.checkType(elementType); - } - const neverType = this.mergeNeverTypes(type.elementTypes); - if (neverType !== null) { - this.diagnoseTypeError(type, neverType.get()); - typeRef.replaceWith(neverType); - break; - } - const anyType = this.mergeAnyTypes(type.elementTypes); - let firstSpecialType = null; - for (let i = 0; i < type.elementTypes.length; i++) { - const elementTypeRef = type.elementTypes[i]; - const elementType = elementTypeRef.get(); - if (elementType.kind === TypeKind.PrimType || elementType.kind === TypeKind.FunctionType || elementType.kind === TypeKind.RecordType) { - if (firstSpecialType === null) { - firstSpecialType = elementTypeRef; - } else { - if (this.areTypesEquivalent(firstSpecialType.get(), elementType)) { - this.mergeTypes(firstSpecialType.get(), elementType); - type.elementTypes.splice(i, 1); - } else { - if (!firstSpecialType.hasTypeError()) { - this.diagnoseTypeError(firstSpecialType.get(), elementType); - firstSpecialType.markAsHavingTypeError(); - } - type.elementTypes.splice(i, 1); - // elementType.replaceWith(new NeverType(firstSpecialType.sourceNodes)) - elementTypeRef.markAsHavingTypeError(); - break; - } - } - } - } - if (anyType !== null && type.elementTypes.length > 1) { - this.removeAnyTypes(type.elementTypes); - } - if (type.elementTypes.length === 1) { - typeRef.replaceWith(type.elementTypes[0]); - } else if (type.elementTypes.length === 0) { - typeRef.replaceWith(new AnyType([...type.sourceNodes])); - // TODO Determine whether the new AnyType should be marked as failed (probably not). - } - break; - } - - case TypeKind.UnionType: - { - for (const elementType of type.elementTypes) { - this.checkType(elementType); - } - const neverType = this.mergeNeverTypes(type.elementTypes); - this.removeNeverTypes(type.elementTypes); - const anyType = this.mergeAnyTypes(type.elementTypes); - if (anyType !== null && type.elementTypes.length > 1) { - this.removeAnyTypes(type.elementTypes); - } - if (type.elementTypes.length === 1) { - typeRef.replaceWith(type.elementTypes[0]); - } else if (type.elementTypes.length === 0) { - if (!typeRef.hasTypeError()) { - if (neverType !== null) { - this.diagnoseTypeError(type, neverType.get()); - } - typeRef.markAsHavingTypeError(); - } - typeRef.replaceWith(new AnyType([...type.sourceNodes])); - } - break; - } - - case TypeKind.CallType: - { - this.checkType(type.fnType); - for (const argType of type.getArgumentTypes()) { - this.checkType(argType); - } - const returnTypes = [...this.getReturnTypes(type.fnType, typeRef as TypeRef)]; - if (returnTypes.length === null) { - if (!typeRef.hasTypeError()) { - this.diagnostics.add({ - message: E_NOT_CALLABLE, - node: type.sourceNodes[0], - severity: 'error', - }); - typeRef.markAsHavingTypeError(); - } - typeRef.replaceWith(new AnyType([...type.sourceNodes])); - } else { - typeRef.replaceWith(new UnionType(returnTypes, [...type.sourceNodes])); - this.checkType(typeRef); - } - break; - } - - default: - throw new Error(`I did not know how to check type ${TypeKind[type.kind]}`) - - } - - } - - private isTypeAssignableTo(source: Type, target: Type): boolean { - - // Functions are at the moment immutable and can never be assigned to one another, even not to the 'any'-type. - // FIXME Passing a lambda expression to a function parameter - if (source.kind === TypeKind.FunctionType || target.kind === TypeKind.FunctionType) { - return false; - } - - if (target.kind === TypeKind.NeverType || source.kind === TypeKind.NeverType) { - return false; - } - if (source.kind === TypeKind.AnyType || target.kind === TypeKind.AnyType) { - return true; - } - - if (source.kind === TypeKind.PrimType && target.kind === TypeKind.PrimType) { - return source.name === target.name; - } - - if (target.kind === TypeKind.IntersectType) { - return target.elementTypes.every(t => this.isTypeAssignableTo(source, t)); - } - if (source.kind === TypeKind.IntersectType) { - return source.elementTypes.every(t => this.isTypeAssignableTo(t, target)); - } - - if (source.kind === TypeKind.UnionType) { - return source.elementTypes.every(t => this.isTypeAssignableTo(t, target)); - } - if (target.kind === TypeKind.UnionType) { - return target.elementTypes.every(t => this.isTypeAssignableTo(source, t)); - } - - // FIXME cover more cases - return false; - } - -} diff --git a/src/parsegen/parser.d.ts b/src/parsegen/parser.d.ts deleted file mode 100644 index 96cc7360e..000000000 --- a/src/parsegen/parser.d.ts +++ /dev/null @@ -1,29 +0,0 @@ - -export interface ParseOptions { - [key: string]: any; -} - -export function parse(input: string, opts?: ParseOptions): any; - -export interface Location { - line: number; - column: number; - offset: number; -} - -interface LocationRange { - start: Location, - end: Location -} - -export class SyntaxError { - line: number; - column: number; - offset: number; - location: LocationRange; - expected:any[]; - found:any; - name:string; - message:string; -} - diff --git a/src/parsegen/parser.pegjs b/src/parsegen/parser.pegjs deleted file mode 100644 index feb2b8e99..000000000 --- a/src/parsegen/parser.pegjs +++ /dev/null @@ -1,513 +0,0 @@ -// PEG.js Grammar -// ============== -// -// PEG.js grammar syntax is designed to be simple, expressive, and similar to -// JavaScript where possible. This means that many rules, especially in the -// lexical part, are based on the grammar from ECMA-262, 5.1 Edition [1]. Some -// are directly taken or adapted from the JavaScript example grammar (see -// examples/javascript.pegjs). -// -// Limitations: -// -// * Non-BMP characters are completely ignored to avoid surrogate pair -// handling. -// -// * One can create identifiers containing illegal characters using Unicode -// escape sequences. For example, "abcd\u0020efgh" is not a valid -// identifier, but it is accepted by the parser. -// -// Both limitations could be resolved, but the costs would likely outweigh -// the benefits. -// -// [1] http://www.ecma-international.org/publications/standards/Ecma-262.htm - -{ - - // Used as a shorthand property name for `LabeledExpression` - const pick = true; - - // Used by `LabelIdentifier` to disallow the use of certain words as labels - const RESERVED_WORDS = {}; - - // Populate `RESERVED_WORDS` using the optional option `reservedWords` - const reservedWords = options.reservedWords || util.reservedWords; - if ( Array.isArray( reservedWords ) ) reservedWords.forEach( word => { - - RESERVED_WORDS[ word ] = true; - - } ); - - // Helper to construct a new AST Node - function createNode( type, details ) { - - const node = new ast.Node( type, location() ); - if ( details === null ) return node; - - util.extend( node, details ); - return util.enforceFastProperties( node ); - - } - - // Used by `addComment` to store comments for the Grammar AST - const comments = options.extractComments ? {} : null; - - // Helper that collects all the comments to pass to the Grammar AST - function addComment( text, multiline ) { - - if ( options.extractComments ) { - - const loc = location(); - - comments[ loc.start.offset ] = { - text: text, - multiline: multiline, - location: loc, - }; - - } - - return text; - - } - -} - -// ---- Syntactic Grammar ----- - -Grammar - = __ initializer:(@Initializer __)? rules:(@Rule __)+ { - - return new ast.Grammar( initializer, rules, comments, location() ); - - } - -Initializer - = code:CodeBlock EOS { - - return createNode( "initializer", { code } ); - - } - -Rule - = name:Identifier __ displayName:(@StringLiteral __)? "=" __ expression:Expression EOS { - - if ( displayName ) - - expression = createNode( "named", { - name: displayName, - expression: expression, - } ); - - return createNode( "rule", { name, expression } ); - - } - -Expression - = ChoiceExpression - -ChoiceExpression - = head:ActionExpression tail:(__ "/" __ @ActionExpression)* { - - if ( tail.length === 0 ) return head; - - return createNode( "choice", { - alternatives: [ head ].concat( tail ), - } ); - - } - -ActionExpression - = expression:SequenceExpression code:(__ @CodeBlock)? { - - if ( code === null ) return expression; - - return createNode( "action", { expression, code } ); - - } - -SequenceExpression - = head:LabeledExpression tail:(__ @LabeledExpression)* { - - let elements = [ head ]; - - if ( tail.length === 0 ) { - - if ( head.type !== "labeled" || ! head.pick ) return head; - - } else { - - elements = elements.concat( tail ); - - } - - return createNode( "sequence", { elements } ); - - } - -LabeledExpression - = "@" label:LabelIdentifier? __ expression:PrefixedExpression { - - return createNode( "labeled", { pick, label, expression } ); - - } - / label:LabelIdentifier __ expression:PrefixedExpression { - - return createNode( "labeled", { label, expression } ); - - } - / PrefixedExpression - -LabelIdentifier - = name:Identifier __ ":" { - - if ( RESERVED_WORDS[ name ] !== true ) return name; - - error( `Label can't be a reserved word "${ name }".`, location() ); - - } - -PrefixedExpression - = operator:PrefixedOperator __ expression:SuffixedExpression { - - return createNode( operator, { expression } ); - - } - / SuffixedExpression - -PrefixedOperator - = "$" { return "text"; } - / "&" { return "simple_and"; } - / "!" { return "simple_not"; } - -SuffixedExpression - = expression:PrimaryExpression __ operator:SuffixedOperator { - - return createNode( operator, { expression } ); - - } - / PrimaryExpression - -SuffixedOperator - = "?" { return "optional"; } - / "*" { return "zero_or_more"; } - / "+" { return "one_or_more"; } - -PrimaryExpression - = LiteralMatcher - / CharacterClassMatcher - / AnyMatcher - / RuleReferenceExpression - / SemanticPredicateExpression - / "(" __ e:Expression __ ")" { - - // The purpose of the "group" AST node is just to isolate label scope. We - // don't need to put it around nodes that can't contain any labels or - // nodes that already isolate label scope themselves. - if ( e.type !== "labeled" && e.type !== "sequence" ) return e; - - // This leaves us with "labeled" and "sequence". - return createNode( "group", { expression: e } ); - - } - -RuleReferenceExpression - = name:Identifier !(__ (StringLiteral __)? "=") { - - return createNode( "rule_ref", { name } ); - - } - -SemanticPredicateExpression - = operator:SemanticPredicateOperator __ code:CodeBlock { - - return createNode( operator, { code } ); - - } - -SemanticPredicateOperator - = "&" { return "semantic_and"; } - / "!" { return "semantic_not"; } - -// ---- Lexical Grammar ----- - -SourceCharacter - = . - -WhiteSpace "whitespace" - = "\t" - / "\v" - / "\f" - / " " - / "\u00A0" - / "\uFEFF" - / Zs - -LineTerminator - = [\n\r\u2028\u2029] - -LineTerminatorSequence "end of line" - = "\n" - / "\r\n" - / "\r" - / "\u2028" - / "\u2029" - -Comment "comment" - = MultiLineComment - / SingleLineComment - -MultiLineComment - = "/*" comment:$(!"*/" SourceCharacter)* "*/" { - - return addComment( comment, true ); - - } - -MultiLineCommentNoLineTerminator - = "/*" comment:$(!("*/" / LineTerminator) SourceCharacter)* "*/" { - - return addComment( comment, true ); - - } - -SingleLineComment - = "//" comment:$(!LineTerminator SourceCharacter)* { - - return addComment( comment, false ); - - } - -Identifier "identifier" - = head:IdentifierStart tail:IdentifierPart* { - - return head + tail.join(""); - - } - -IdentifierStart - = UnicodeLetter - / "$" - / "_" - / "\\" @UnicodeEscapeSequence - -IdentifierPart - = IdentifierStart - / UnicodeCombiningMark - / UnicodeDigit - / UnicodeConnectorPunctuation - / "\u200C" - / "\u200D" - -UnicodeLetter - = Lu - / Ll - / Lt - / Lm - / Lo - / Nl - -UnicodeCombiningMark - = Mn - / Mc - -UnicodeDigit - = Nd - -UnicodeConnectorPunctuation - = Pc - -LiteralMatcher "literal" - = value:StringLiteral ignoreCase:"i"? { - - return createNode( "literal", { - value: value, - ignoreCase: ignoreCase !== null, - } ); - - } - -StringLiteral "string" - = '"' chars:DoubleStringCharacter* '"' { return chars.join(""); } - / "'" chars:SingleStringCharacter* "'" { return chars.join(""); } - -DoubleStringCharacter - = !('"' / "\\" / LineTerminator) @SourceCharacter - / "\\" @EscapeSequence - / LineContinuation - -SingleStringCharacter - = !("'" / "\\" / LineTerminator) @SourceCharacter - / "\\" @EscapeSequence - / LineContinuation - -CharacterClassMatcher "character class" - = "[" inverted:"^"? parts:CharacterPart* "]" ignoreCase:"i"? { - - return createNode( "class", { - parts: parts.filter( part => part !== "" ), - inverted: inverted !== null, - ignoreCase: ignoreCase !== null, - } ); - - } - -CharacterPart - = ClassCharacterRange - / ClassCharacter - -ClassCharacterRange - = begin:ClassCharacter "-" end:ClassCharacter { - - if ( begin.charCodeAt( 0 ) > end.charCodeAt( 0 ) ) - - error( "Invalid character range: " + text() + "." ); - - return [ begin, end ]; - - } - -ClassCharacter - = !("]" / "\\" / LineTerminator) @SourceCharacter - / "\\" @EscapeSequence - / LineContinuation - -LineContinuation - = "\\" LineTerminatorSequence { return ""; } - -EscapeSequence - = CharacterEscapeSequence - / "0" !DecimalDigit { return "\0"; } - / HexEscapeSequence - / UnicodeEscapeSequence - -CharacterEscapeSequence - = SingleEscapeCharacter - / NonEscapeCharacter - -SingleEscapeCharacter - = "'" - / '"' - / "\\" - / "b" { return "\b"; } - / "f" { return "\f"; } - / "n" { return "\n"; } - / "r" { return "\r"; } - / "t" { return "\t"; } - / "v" { return "\v"; } - -NonEscapeCharacter - = !(EscapeCharacter / LineTerminator) @SourceCharacter - -EscapeCharacter - = SingleEscapeCharacter - / DecimalDigit - / "x" - / "u" - -HexEscapeSequence - = "x" digits:$(HexDigit HexDigit) { - - return String.fromCharCode( parseInt( digits, 16 ) ); - - } - -UnicodeEscapeSequence - = "u" digits:$(HexDigit HexDigit HexDigit HexDigit) { - - return String.fromCharCode( parseInt( digits, 16 ) ); - - } - -DecimalDigit - = [0-9] - -HexDigit - = [0-9a-f]i - -AnyMatcher - = "." { - - return createNode( "any" ); - - } - -CodeBlock "code block" - = "{" @Code "}" - / "{" { error("Unbalanced brace."); } - -Code - = $((![{}] SourceCharacter)+ / "{" Code "}")* - -// Unicode Character Categories -// -// Extracted from the following Unicode Character Database file: -// -// http://www.unicode.org/Public/11.0.0/ucd/extracted/DerivedGeneralCategory.txt -// -// Unix magic used: -// -// grep "; $CATEGORY" DerivedGeneralCategory.txt | # Filter characters -// cut -f1 -d " " | # Extract code points -// grep -v '[0-9a-fA-F]\{5\}' | # Exclude non-BMP characters -// sed -e 's/\.\./-/' | # Adjust formatting -// sed -e 's/\([0-9a-fA-F]\{4\}\)/\\u\1/g' | # Adjust formatting -// tr -d '\n' # Join lines -// -// ECMA-262 allows using Unicode 3.0 or later, version 8.0.0 was the latest one -// at the time of writing. -// -// Non-BMP characters are completely ignored to avoid surrogate pair handling -// (detecting surrogate pairs isn't possible with a simple character class and -// other methods would degrade performance). I don't consider it a big deal as -// even parsers in JavaScript engines of common browsers seem to ignore them. - -// Letter, Lowercase -Ll = [\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A] - -// Letter, Modifier -Lm = [\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F] - -// Letter, Other -Lo = [\u00AA\u00BA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] - -// Letter, Titlecase -Lt = [\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC] - -// Letter, Uppercase -Lu = [\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A] - -// Mark, Spacing Combining -Mc = [\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC] - -// Mark, Nonspacing -Mn = [\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F] - -// Number, Decimal Digit -Nd = [\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19] - -// Number, Letter -Nl = [\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF] - -// Punctuation, Connector -Pc = [\u005F\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F] - -// Separator, Space -Zs = [\u0020\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000] - -// Skipped - -__ - = (WhiteSpace / LineTerminatorSequence / Comment)* - -_ - = (WhiteSpace / MultiLineCommentNoLineTerminator)* - -// Automatic Semicolon Insertion - -EOS - = __ ";" - / _ SingleLineComment? LineTerminatorSequence - / __ EOF - -EOF - = !. diff --git a/src/test/types.ts b/src/test/types.ts deleted file mode 100644 index 9af0aa3d1..000000000 --- a/src/test/types.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import test from "ava"; - -import { AnyType, IntersectType, PrimType } from "../checker" -import { createRef } from "../util"; - -test('an intersection with an any-type should remove that any-type', t => { - const t1 = new IntersectType([ - createRef(new AnyType()), - createRef(new PrimType('@int')), - ]) - -}); diff --git a/stdlib/Boltfile b/stdlib/Boltfile deleted file mode 100644 index 2e234fef1..000000000 --- a/stdlib/Boltfile +++ /dev/null @@ -1,3 +0,0 @@ -name: stdlib -version: 0.0.1 -auto-import: true \ No newline at end of file diff --git a/stdlib/either.bolt b/stdlib/either.bolt deleted file mode 100644 index 6cf853562..000000000 --- a/stdlib/either.bolt +++ /dev/null @@ -1,3 +0,0 @@ - -pub struct Either; - diff --git a/stdlib/io.bolt b/stdlib/io.bolt deleted file mode 100644 index 6cd9910ea..000000000 --- a/stdlib/io.bolt +++ /dev/null @@ -1,40 +0,0 @@ - -pub mod IO { - - import "./numbers" - import "./either" - import "./vec" - import "./string" - - pub type Result = Either; - - pub foreign "JS" fn print(message: String) { - process.stdout.write(message); - } - - pub struct File; - - pub trait Read { - fn read(self, count: usize, target: Vec) -> Result; - } - - impl Read for File { - - foreign "JS" fn read(self, count, target) -> Result { - - import * as fs from "fs" - - try { - return Ok(fs.readSync(self.fd, target, 0, count, null)); - } catch (e) { - return Err(e.code); - } - - } - - } - -} - -// IO::print("Hello, world!"); - diff --git a/stdlib/lang/bolt.bolt b/stdlib/lang/bolt.bolt deleted file mode 100644 index eefb256a1..000000000 --- a/stdlib/lang/bolt.bolt +++ /dev/null @@ -1,84 +0,0 @@ - -import "../option"; -import "../numbers"; -import "../vec"; -import "../string"; -import "../io"; - -mod Bolt::Lang { - - pub struct Pos { - offset: usize, - line: usize, - column: usize, - } - - pub struct Span { - file: IO::File, - start: Pos, - end: Pos, - } - - define_nodes! { - - Identifier : Symbol { - text: String, - }, - - Statement, - - ReturnStatement : Statement { - expression: Option, - }, - - ConditionalCase { - test: Option, - result: Vec, - }, - - ConditionalStatement : Statement { - cases: Vec, - }, - - Expression, - - ReferenceExpression : Expression { - modulePath: Option, - name: Symbol, - } - - } - - pub type Transformer = fn (node: Node) -> Node; - - fn build_predicate_from_pattern(pattern: Pattern) -> Expression { - match pattern { - BindPattern { name } => quote(true).taint(pattern), - VariantPatten { elements } => quote(or($(elements),*)), - RecordPattern { members } => quote(and($elements),*)), - } - } - - fn eliminate_match_rule(node: Node) { - match node { - quote { - match $value: Expression { - $patterns @ ( $pattern: Pattern => $expression: Expression ),* (,)? - } - } => { - let cases = patterns.map(|pattern| { - ConditionalCase::from_node( - pattern, - build_predicate_from_pattern(pattern), - value - ) - }); - return ConditionalStatement::from_node(node, cases); - } - } - } - - register_transformer!(elminate_match_rule); - -} - diff --git a/stdlib/lib.bolt b/stdlib/lib.bolt deleted file mode 100644 index a30694825..000000000 --- a/stdlib/lib.bolt +++ /dev/null @@ -1,9 +0,0 @@ - -pub import "./option" -pub import "./either" -pub import "./string" -pub import "./numbers" -pub import "./math" -pub import "./vec" -pub import "./lang/bolt" - diff --git a/stdlib/math.bolt b/stdlib/math.bolt deleted file mode 100644 index 0324b088a..000000000 --- a/stdlib/math.bolt +++ /dev/null @@ -1,12 +0,0 @@ - -import "./numbers.bolt"; - -// precedence a + b < a * b; - -pub fn fac(n: I) -> I where I: int { - match n { - 0 => 1, - i => i * fac(i-1), - } -} - diff --git a/stdlib/numbers.bolt b/stdlib/numbers.bolt deleted file mode 100644 index 4c167ba6d..000000000 --- a/stdlib/numbers.bolt +++ /dev/null @@ -1,33 +0,0 @@ - -pub struct i8; -pub struct i16; -pub struct i32; -pub struct i64; -pub struct isize; -pub struct u8; -pub struct u16; -pub struct u32; -pub struct u64; -pub struct usize; - -pub struct int; -pub struct uint; - -trait Num; - -fn (a: N) + (b: N) -> N where N: Num { - N::add(a, b) -} - -fn (a: N) - (b: N) -> N where N: Num { - N::sub(a, b) -} - -fn (a: N) / (b: N) -> N where N: Num { - N::div(a, b) -} - -fn (a: N) * (b: N) -> N where N: Num { - N::mul(a, b) -} - diff --git a/stdlib/option.bolt b/stdlib/option.bolt deleted file mode 100644 index 3a38474ea..000000000 --- a/stdlib/option.bolt +++ /dev/null @@ -1,3 +0,0 @@ - -pub struct Option; - diff --git a/stdlib/string.bolt b/stdlib/string.bolt deleted file mode 100644 index d1251c063..000000000 --- a/stdlib/string.bolt +++ /dev/null @@ -1,3 +0,0 @@ - -pub struct String; - diff --git a/stdlib/vec.bolt b/stdlib/vec.bolt deleted file mode 100644 index ee5538673..000000000 --- a/stdlib/vec.bolt +++ /dev/null @@ -1,3 +0,0 @@ - -pub struct Vec; - diff --git a/test-storage/aliases/lkg b/test-storage/aliases/lkg deleted file mode 100644 index 914acce85..000000000 --- a/test-storage/aliases/lkg +++ /dev/null @@ -1 +0,0 @@ -9e87b23b96c54b7245893be35befc6fe7fd2c14ef41cc4b4815e50aee6b07d0c2c6be999719ecd236a55bbc227598117cfd2f747955c3f10b503edb069cf1828 \ No newline at end of file diff --git a/test-storage/snapshots/9e87b23b96c54b7245893be35befc6fe7fd2c14ef41cc4b4815e50aee6b07d0c2c6be999719ecd236a55bbc227598117cfd2f747955c3f10b503edb069cf1828 b/test-storage/snapshots/9e87b23b96c54b7245893be35befc6fe7fd2c14ef41cc4b4815e50aee6b07d0c2c6be999719ecd236a55bbc227598117cfd2f747955c3f10b503edb069cf1828 deleted file mode 100644 index 8e68275ee..000000000 --- a/test-storage/snapshots/9e87b23b96c54b7245893be35befc6fe7fd2c14ef41cc4b4815e50aee6b07d0c2c6be999719ecd236a55bbc227598117cfd2f747955c3f10b503edb069cf1828 +++ /dev/null @@ -1 +0,0 @@ -{"__type":"classinstance","name":"TestSnapshot","args":["9e87b23b96c54b7245893be35befc6fe7fd2c14ef41cc4b4815e50aee6b07d0c2c6be999719ecd236a55bbc227598117cfd2f747955c3f10b503edb069cf1828",[{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]}]},"scan","Foo",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["Foo",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]},{"__type":"classinstance","name":"TextPos","args":[7,10,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[8,11,1]},{"__type":"classinstance","name":"TextPos","args":[8,11,1]}]},"scan","Bar",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["Bar",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[8,11,1]},{"__type":"classinstance","name":"TextPos","args":[11,11,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[12,12,1]},{"__type":"classinstance","name":"TextPos","args":[12,12,1]}]},"scan","Baz",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["Baz",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[12,12,1]},{"__type":"classinstance","name":"TextPos","args":[15,12,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,19,1]},{"__type":"classinstance","name":"TextPos","args":[4,19,1]}]},"scan","Var1",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["Var1",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,19,1]},{"__type":"classinstance","name":"TextPos","args":[8,19,5]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[9,20,1]},{"__type":"classinstance","name":"TextPos","args":[9,20,1]}]},"scan","Var2",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["Var2",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[9,20,1]},{"__type":"classinstance","name":"TextPos","args":[13,20,5]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[14,21,1]},{"__type":"classinstance","name":"TextPos","args":[14,21,1]}]},"scan","Var10029384",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["Var10029384",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[14,21,1]},{"__type":"classinstance","name":"TextPos","args":[25,21,12]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,27,1]},{"__type":"classinstance","name":"TextPos","args":[4,27,1]}]},"scan","ThisIsALongAndValidIdentifier",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["ThisIsALongAndValidIdentifier",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,27,1]},{"__type":"classinstance","name":"TextPos","args":[33,27,30]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[34,28,1]},{"__type":"classinstance","name":"TextPos","args":[34,28,1]}]},"scan","ThisIsAnEvenLongerButStilCompletelyValidIdentifier",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["ThisIsAnEvenLongerButStilCompletelyValidIdentifier",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[34,28,1]},{"__type":"classinstance","name":"TextPos","args":[84,28,51]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,34,1]},{"__type":"classinstance","name":"TextPos","args":[4,34,1]}]},"scan","a_valid_identifier",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["a_valid_identifier",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,34,1]},{"__type":"classinstance","name":"TextPos","args":[22,34,19]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[23,35,1]},{"__type":"classinstance","name":"TextPos","args":[23,35,1]}]},"scan","another__0000__valid_identfier",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["another__0000__valid_identfier",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[23,35,1]},{"__type":"classinstance","name":"TextPos","args":[53,35,31]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[54,36,1]},{"__type":"classinstance","name":"TextPos","args":[54,36,1]}]},"scan","_1",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["_1",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[54,36,1]},{"__type":"classinstance","name":"TextPos","args":[56,36,3]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[57,37,1]},{"__type":"classinstance","name":"TextPos","args":[57,37,1]}]},"scan","__2",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["__2",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[57,37,1]},{"__type":"classinstance","name":"TextPos","args":[60,37,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[61,38,1]},{"__type":"classinstance","name":"TextPos","args":[61,38,1]}]},"scan","___3",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["___3",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[61,38,1]},{"__type":"classinstance","name":"TextPos","args":[65,38,5]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,44,1]},{"__type":"classinstance","name":"TextPos","args":[4,44,1]}]},"scan","_",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["_",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,44,1]},{"__type":"classinstance","name":"TextPos","args":[5,44,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[6,45,1]},{"__type":"classinstance","name":"TextPos","args":[6,45,1]}]},"scan","__",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["__",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[6,45,1]},{"__type":"classinstance","name":"TextPos","args":[8,45,3]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[9,46,1]},{"__type":"classinstance","name":"TextPos","args":[9,46,1]}]},"scan","___",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["___",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[9,46,1]},{"__type":"classinstance","name":"TextPos","args":[12,46,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,53,1]},{"__type":"classinstance","name":"TextPos","args":[4,53,1]}]},"scan","℘rototype",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["℘rototype",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,53,1]},{"__type":"classinstance","name":"TextPos","args":[13,53,10]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[14,54,1]},{"__type":"classinstance","name":"TextPos","args":[14,54,1]}]},"scan","℮llipsis",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["℮llipsis",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[14,54,1]},{"__type":"classinstance","name":"TextPos","args":[22,54,9]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,60,1]},{"__type":"classinstance","name":"TextPos","args":[4,60,1]}]},"scan","α·β",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["α·β",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[4,60,1]},{"__type":"classinstance","name":"TextPos","args":[7,60,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[8,61,1]},{"__type":"classinstance","name":"TextPos","args":[8,61,1]}]},"scan","ano·teleia",{"type":"scan","expect":"BoltIdentifier","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIdentifier","args":["ano·teleia",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/000-bolt-identifier.md"]},{"__type":"classinstance","name":"TextPos","args":[8,61,1]},{"__type":"classinstance","name":"TextPos","args":[18,61,11]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/001-bolt-string-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]}]},"scan","\"Foo!\"",{"type":"scan","expect":"BoltStringLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltStringLiteral","args":["Foo!",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/001-bolt-string-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]},{"__type":"classinstance","name":"TextPos","args":[10,10,7]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/001-bolt-string-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[11,11,1]},{"__type":"classinstance","name":"TextPos","args":[11,11,1]}]},"scan","\"Once upon a time ...\"",{"type":"scan","expect":"BoltStringLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltStringLiteral","args":["Once upon a time ...",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/001-bolt-string-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[11,11,1]},{"__type":"classinstance","name":"TextPos","args":[33,11,23]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/001-bolt-string-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,18,1]},{"__type":"classinstance","name":"TextPos","args":[4,18,1]}]},"scan","\"S+me w3!rd @SCII ch@r$\"",{"type":"scan","expect":"BoltStringLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltStringLiteral","args":["S+me w3!rd @SCII ch@r$",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/001-bolt-string-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,18,1]},{"__type":"classinstance","name":"TextPos","args":[28,18,25]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]}]},"scan","1",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"1"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,10,1]},{"__type":"classinstance","name":"TextPos","args":[5,10,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[6,11,1]},{"__type":"classinstance","name":"TextPos","args":[6,11,1]}]},"scan","2",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"2"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[6,11,1]},{"__type":"classinstance","name":"TextPos","args":[7,11,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[8,12,1]},{"__type":"classinstance","name":"TextPos","args":[8,12,1]}]},"scan","3",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"3"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[8,12,1]},{"__type":"classinstance","name":"TextPos","args":[9,12,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[10,13,1]},{"__type":"classinstance","name":"TextPos","args":[10,13,1]}]},"scan","4",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"4"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[10,13,1]},{"__type":"classinstance","name":"TextPos","args":[11,13,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[12,14,1]},{"__type":"classinstance","name":"TextPos","args":[12,14,1]}]},"scan","5",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"5"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[12,14,1]},{"__type":"classinstance","name":"TextPos","args":[13,14,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[14,15,1]},{"__type":"classinstance","name":"TextPos","args":[14,15,1]}]},"scan","6",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"6"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[14,15,1]},{"__type":"classinstance","name":"TextPos","args":[15,15,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[16,16,1]},{"__type":"classinstance","name":"TextPos","args":[16,16,1]}]},"scan","7",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"7"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[16,16,1]},{"__type":"classinstance","name":"TextPos","args":[17,16,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[18,17,1]},{"__type":"classinstance","name":"TextPos","args":[18,17,1]}]},"scan","8",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"8"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[18,17,1]},{"__type":"classinstance","name":"TextPos","args":[19,17,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[20,18,1]},{"__type":"classinstance","name":"TextPos","args":[20,18,1]}]},"scan","9",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"9"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[20,18,1]},{"__type":"classinstance","name":"TextPos","args":[21,18,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[22,19,1]},{"__type":"classinstance","name":"TextPos","args":[22,19,1]}]},"scan","0",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[22,19,1]},{"__type":"classinstance","name":"TextPos","args":[23,19,2]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,26,1]},{"__type":"classinstance","name":"TextPos","args":[4,26,1]}]},"scan","12345",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"12345"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,26,1]},{"__type":"classinstance","name":"TextPos","args":[9,26,6]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[10,27,1]},{"__type":"classinstance","name":"TextPos","args":[10,27,1]}]},"scan","99",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"99"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[10,27,1]},{"__type":"classinstance","name":"TextPos","args":[12,27,3]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[13,28,1]},{"__type":"classinstance","name":"TextPos","args":[13,28,1]}]},"scan","10",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"10"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[13,28,1]},{"__type":"classinstance","name":"TextPos","args":[15,28,3]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[16,29,1]},{"__type":"classinstance","name":"TextPos","args":[16,29,1]}]},"scan","01",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"1"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[16,29,1]},{"__type":"classinstance","name":"TextPos","args":[18,29,3]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[19,30,1]},{"__type":"classinstance","name":"TextPos","args":[19,30,1]}]},"scan","000",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[19,30,1]},{"__type":"classinstance","name":"TextPos","args":[22,30,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[23,31,1]},{"__type":"classinstance","name":"TextPos","args":[23,31,1]}]},"scan","0010",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"10"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[23,31,1]},{"__type":"classinstance","name":"TextPos","args":[27,31,5]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,37,1]},{"__type":"classinstance","name":"TextPos","args":[4,37,1]}]},"scan","0b0",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,37,1]},{"__type":"classinstance","name":"TextPos","args":[5,37,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b0",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[5,37,2]},{"__type":"classinstance","name":"TextPos","args":[7,37,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[8,38,1]},{"__type":"classinstance","name":"TextPos","args":[8,38,1]}]},"scan","0b1",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[8,38,1]},{"__type":"classinstance","name":"TextPos","args":[9,38,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b1",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[9,38,2]},{"__type":"classinstance","name":"TextPos","args":[11,38,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[12,39,1]},{"__type":"classinstance","name":"TextPos","args":[12,39,1]}]},"scan","0b10010",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[12,39,1]},{"__type":"classinstance","name":"TextPos","args":[13,39,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b10010",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[13,39,2]},{"__type":"classinstance","name":"TextPos","args":[19,39,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[20,40,1]},{"__type":"classinstance","name":"TextPos","args":[20,40,1]}]},"scan","0b00100",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[20,40,1]},{"__type":"classinstance","name":"TextPos","args":[21,40,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b00100",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[21,40,2]},{"__type":"classinstance","name":"TextPos","args":[27,40,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[28,41,1]},{"__type":"classinstance","name":"TextPos","args":[28,41,1]}]},"scan","0b00000",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[28,41,1]},{"__type":"classinstance","name":"TextPos","args":[29,41,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b00000",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[29,41,2]},{"__type":"classinstance","name":"TextPos","args":[35,41,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,47,1]},{"__type":"classinstance","name":"TextPos","args":[4,47,1]}]},"scan","0b20001",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,47,1]},{"__type":"classinstance","name":"TextPos","args":[5,47,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b20001",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[5,47,2]},{"__type":"classinstance","name":"TextPos","args":[11,47,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[12,48,1]},{"__type":"classinstance","name":"TextPos","args":[12,48,1]}]},"scan","0b12345",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[12,48,1]},{"__type":"classinstance","name":"TextPos","args":[13,48,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b12345",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[13,48,2]},{"__type":"classinstance","name":"TextPos","args":[19,48,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[20,49,1]},{"__type":"classinstance","name":"TextPos","args":[20,49,1]}]},"scan","0b00003",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[20,49,1]},{"__type":"classinstance","name":"TextPos","args":[21,49,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["b00003",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[21,49,2]},{"__type":"classinstance","name":"TextPos","args":[27,49,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,55,1]},{"__type":"classinstance","name":"TextPos","args":[4,55,1]}]},"scan","0o0",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[4,55,1]},{"__type":"classinstance","name":"TextPos","args":[5,55,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["o0",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[5,55,2]},{"__type":"classinstance","name":"TextPos","args":[7,55,4]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[8,56,1]},{"__type":"classinstance","name":"TextPos","args":[8,56,1]}]},"scan","0o00000",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[8,56,1]},{"__type":"classinstance","name":"TextPos","args":[9,56,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["o00000",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[9,56,2]},{"__type":"classinstance","name":"TextPos","args":[15,56,8]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[16,57,1]},{"__type":"classinstance","name":"TextPos","args":[16,57,1]}]},"scan","0o007",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[16,57,1]},{"__type":"classinstance","name":"TextPos","args":[17,57,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["o007",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[17,57,2]},{"__type":"classinstance","name":"TextPos","args":[21,57,6]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[22,58,1]},{"__type":"classinstance","name":"TextPos","args":[22,58,1]}]},"scan","0o706",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[22,58,1]},{"__type":"classinstance","name":"TextPos","args":[23,58,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["o706",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[23,58,2]},{"__type":"classinstance","name":"TextPos","args":[27,58,6]}]}]}]},null]},{"__type":"classinstance","name":"Test","args":[{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[28,59,1]},{"__type":"classinstance","name":"TextPos","args":[28,59,1]}]},"scan","0o12345",{"type":"scan","expect":"BoltIntegerLiteral","split-lines":true},{"diagnostics":[],"tokens":[{"__type":"classinstance","name":"BoltIntegerLiteral","args":[{"__type":"bigint","value":"0"},{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[28,59,1]},{"__type":"classinstance","name":"TextPos","args":[29,59,2]}]}]},{"__type":"classinstance","name":"BoltIdentifier","args":["o12345",{"__type":"classinstance","name":"TextSpan","args":[{"__type":"classinstance","name":"TextFile","args":["test/scan/002-bolt-integer-literal.md"]},{"__type":"classinstance","name":"TextPos","args":[29,59,2]},{"__type":"classinstance","name":"TextPos","args":[35,59,8]}]}]}]},null]}]]} \ No newline at end of file diff --git a/test.bolt b/test.bolt index 3251ff5a8..15bca5854 100644 --- a/test.bolt +++ b/test.bolt @@ -1,16 +1,25 @@ -struct int; -struct String; - +fn (a: int) == (b: int) -> int; fn (a: int) - (b: int) -> int; fn (a: int) * (b: int) -> int; -fn fac(n: int) -> int { - return match n { - 0 => 1, - 1 => 1, - k => k * (k-1), +fn write(data: String); + +struct Point { + x: NumT, + y: NumT, +} + +trait Print { + fn print(self); +} + +impl Print for Point { + fn print(self) { + write("A point!"); } } -fac(1); +let p1 = Point { x: 1, y: 2 } + +p1.printer(); diff --git a/test/001-punct-depth-1.bolt b/test/001-punct-depth-1.bolt deleted file mode 100644 index b5bc91879..000000000 --- a/test/001-punct-depth-1.bolt +++ /dev/null @@ -1,3 +0,0 @@ -{ foo baz bar }; -( foo baz bar ); -[ foo baz bar ]; diff --git a/test/002-fn-decl-operator.bolt b/test/002-fn-decl-operator.bolt deleted file mode 100644 index 766e43ac8..000000000 --- a/test/002-fn-decl-operator.bolt +++ /dev/null @@ -1,9 +0,0 @@ - -fn + x; - -fn a + b; - -fn (a: Int) + (b: Int); - -fn a + b -> Int; - diff --git a/test/scan/000-bolt-identifier.md b/test/scan/000-bolt-identifier.md deleted file mode 100644 index fa77f0c72..000000000 --- a/test/scan/000-bolt-identifier.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -type: scan -expect: BoltIdentifier -split-lines: true ---- - -The most simple identifiers are those made out of ASCII letters: - -``` -Foo -Bar -Baz -``` - -However, they may also contain digits as long as they do not begin with a -digit: - -``` -Var1 -Var2 -Var10029384 -``` - -Identifiers may be as long as you want: - -``` -ThisIsALongAndValidIdentifier -ThisIsAnEvenLongerButStilCompletelyValidIdentifier -``` - -Moreover, they may have arbitrary underscores (`_`) in their names. - -``` -a_valid_identifier -another__0000__valid_identfier -_1 -__2 -___3 -``` - -They may even be nothing more than underscores: - -``` -_ -__ -___ -``` - -All identifiers starting with a `ID_Start` character are valid identifiers, -including `Other_ID_Start`: - -``` -℘rototype -℮llipsis -``` - -Likewise, the following code points using `Other_ID_Continue` are also valid: - -``` -α·β -ano·teleia -``` - -And, of course, the combination of `ID_Start` and `ID_Continue`: - -``` -alfa·beta -``` - diff --git a/test/scan/001-bolt-string-literal.md b/test/scan/001-bolt-string-literal.md deleted file mode 100644 index db0a21d78..000000000 --- a/test/scan/001-bolt-string-literal.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -type: scan -expect: BoltStringLiteral -split-lines: true ---- - -A string may hold arbirary ASCII characters, including spaces: - -``` -"Foo!" -"Once upon a time ..." -``` - -Special ASCII characters have no effect, other than that they are appended to -the contents of the string: - -``` -"S+me w3!rd @SCII ch@r$" -``` - -Some special escape sequences: - -``` -"\n\r" -"\n" -``` diff --git a/test/scan/002-bolt-integer-literal.md b/test/scan/002-bolt-integer-literal.md deleted file mode 100644 index fb625568f..000000000 --- a/test/scan/002-bolt-integer-literal.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -type: scan -expect: BoltIntegerLiteral -split-lines: true ---- - -All decimal digits are valid integers. - -``` -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -``` - -Any combination of decimal digits are valid integers, including integers -prefixed with an abirary amount of zeroes. - -``` -12345 -99 -10 -01 -000 -0010 -``` - -In binary mode, integers are read in base-2. - -``` -0b0 -0b1 -0b10010 -0b00100 -0b00000 -``` - -This means the following expressions are invalid in binary mode: - -``` -0b20001 -0b12345 -0b00003 -``` - -In octal mode, integers are read in base-8. - -``` -0o0 -0o00000 -0o007 -0o706 -0o12345 -``` - -This means the following expressions are invalid in octal mode: - -``` -0o8 -0o9 -0o123456789 -``` - diff --git a/vscode-extension/.gitattributes b/vscode-extension/.gitattributes new file mode 100644 index 000000000..13bc9c2ee --- /dev/null +++ b/vscode-extension/.gitattributes @@ -0,0 +1,3 @@ +# Set default behavior to automatically normalize line endings. +* text=auto + diff --git a/vscode-extension/.gitignore b/vscode-extension/.gitignore new file mode 100644 index 000000000..e02a4c6dd --- /dev/null +++ b/vscode-extension/.gitignore @@ -0,0 +1,3 @@ +/dist/ +node_modules/ +*.vsix \ No newline at end of file diff --git a/vscode-extension/.vscodeignore b/vscode-extension/.vscodeignore new file mode 100644 index 000000000..f369b5e55 --- /dev/null +++ b/vscode-extension/.vscodeignore @@ -0,0 +1,4 @@ +.vscode/** +.vscode-test/** +.gitignore +vsc-extension-quickstart.md diff --git a/vscode-extension/CHANGELOG.md b/vscode-extension/CHANGELOG.md new file mode 100644 index 000000000..1b6227ff5 --- /dev/null +++ b/vscode-extension/CHANGELOG.md @@ -0,0 +1,15 @@ +# Change Log + +All notable changes to the "bolt" VSCode extension will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + + - Basic TextMate syntax highlighting for keywords, some constants, some + built-in types, and string/char literals + +- Initial release diff --git a/vscode-extension/LICENSE.txt b/vscode-extension/LICENSE.txt new file mode 100644 index 000000000..d77123881 --- /dev/null +++ b/vscode-extension/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Sam Vervaeck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vscode-extension/README.md b/vscode-extension/README.md new file mode 100644 index 000000000..d0cce60c1 --- /dev/null +++ b/vscode-extension/README.md @@ -0,0 +1,27 @@ +Bolt +==== + +This is an plugin providing experimental support for the Bolt programming +language in Visual Studio Code. + +## Planned Features + + - Syntax highlighting with contextual information from the compiler + - Rich type hints that appear whenever you hover an expression + - Integration with the build tools + - A debugger that works independently from the target platform + +## Extension Settings + +This extension contributes the following settings: + + - `bolt.pathToLanguageServer`: you can set this to point to a custom binary + that will be spawned instead of the built-in language server + - `bolt.watchLanguageServer`: set to `true` to automatically restart the + lanuage server whenever the binary was changed on the file system + +## License + +This software is generously licensed under the MIT license. See `LICENSE.txt` +for more information. + diff --git a/vscode-extension/dist/extension.js b/vscode-extension/dist/extension.js new file mode 100644 index 000000000..069163f7d --- /dev/null +++ b/vscode-extension/dist/extension.js @@ -0,0 +1,13452 @@ +module.exports = +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./src/extension.ts": +/*!**************************!*\ + !*** ./src/extension.ts ***! + \**************************/ +/*! flagged exports */ +/*! export __esModule [provided] [maybe used in main (runtime-defined)] [usage prevents renaming] */ +/*! export activate [provided] [maybe used in main (runtime-defined)] [usage prevents renaming] */ +/*! export deactivate [provided] [maybe used in main (runtime-defined)] [usage prevents renaming] */ +/*! other exports [not provided] [maybe used in main (runtime-defined)] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.deactivate = exports.activate = void 0; +const net = __webpack_require__(/*! net */ "net"); +const path = __webpack_require__(/*! path */ "path"); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageclient_1 = __webpack_require__(/*! vscode-languageclient */ "../node_modules/vscode-languageclient/lib/main.js"); +let client; +function spawnLanguageClient(context) { + if (client) { + return; + } + const config = vscode_1.workspace.getConfiguration('bolt'); + const watchLanguageServer = config.get('watchLanguageServer'); + let pathToLanguageServer = config.get('pathToLanguageServer'); + if (pathToLanguageServer === null) { + pathToLanguageServer = context.asAbsolutePath(path.join('bin', 'langserver.js')); + } + let serverOptions; + const languageServerPort = process.env['VSCODE_BOLT_LANGUAGE_SERVER_PORT']; + if (languageServerPort !== undefined) { + const port = Number(languageServerPort); + if (isNaN(port)) { + return; + } + serverOptions = () => { + const socket = net.connect(port); + return Promise.resolve({ reader: socket, writer: socket }); + }; + } + else { + serverOptions = { module: pathToLanguageServer, transport: vscode_languageclient_1.TransportKind.ipc }; + } + ; + // Options to control the language client + let clientOptions = { + // Register the server for plain text documents + documentSelector: [{ scheme: 'file', language: 'bolt' }], + synchronize: { + // Notify the server about file changes to '.clientrc files contained in the workspace + fileEvents: vscode_1.workspace.createFileSystemWatcher('**/*.bolt') + } + }; + // Create the language client and start the client. + client = new vscode_languageclient_1.LanguageClient('bolt-client', 'Bolt Language Server', serverOptions, clientOptions); + // Start the client. This will also launch the server + client.start(); +} +function activate(context) { + spawnLanguageClient(context); +} +exports.activate = activate; +function deactivate() { + if (!client) { + return undefined; + } + return client.stop(); +} +exports.deactivate = deactivate; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/cancellation.js": +/*!**********************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/cancellation.js ***! + \**********************************************************/ +/*! flagged exports */ +/*! export CancellationToken [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CancellationTokenSource [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const events_1 = __webpack_require__(/*! ./events */ "../node_modules/vscode-jsonrpc/lib/events.js"); +const Is = __webpack_require__(/*! ./is */ "../node_modules/vscode-jsonrpc/lib/is.js"); +var CancellationToken; +(function (CancellationToken) { + CancellationToken.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: events_1.Event.None + }); + CancellationToken.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: events_1.Event.None + }); + function is(value) { + let candidate = value; + return candidate && (candidate === CancellationToken.None + || candidate === CancellationToken.Cancelled + || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested)); + } + CancellationToken.is = is; +})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {})); +const shortcutEvent = Object.freeze(function (callback, context) { + let handle = setTimeout(callback.bind(context), 0); + return { dispose() { clearTimeout(handle); } }; +}); +class MutableToken { + constructor() { + this._isCancelled = false; + } + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(undefined); + this.dispose(); + } + } + } + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; + } + if (!this._emitter) { + this._emitter = new events_1.Emitter(); + } + return this._emitter.event; + } + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = undefined; + } + } +} +class CancellationTokenSource { + get token() { + if (!this._token) { + // be lazy and create the token only when + // actually needed + this._token = new MutableToken(); + } + return this._token; + } + cancel() { + if (!this._token) { + // save an object by returning the default + // cancelled token when cancellation happens + // before someone asks for the token + this._token = CancellationToken.Cancelled; + } + else { + this._token.cancel(); + } + } + dispose() { + if (!this._token) { + // ensure to initialize with an empty token if we had none + this._token = CancellationToken.None; + } + else if (this._token instanceof MutableToken) { + // actually dispose + this._token.dispose(); + } + } +} +exports.CancellationTokenSource = CancellationTokenSource; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/events.js": +/*!****************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/events.js ***! + \****************************************************/ +/*! flagged exports */ +/*! export Disposable [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Emitter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Event [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var Disposable; +(function (Disposable) { + function create(func) { + return { + dispose: func + }; + } + Disposable.create = create; +})(Disposable = exports.Disposable || (exports.Disposable = {})); +var Event; +(function (Event) { + const _disposable = { dispose() { } }; + Event.None = function () { return _disposable; }; +})(Event = exports.Event || (exports.Event = {})); +class CallbackList { + add(callback, context = null, bucket) { + if (!this._callbacks) { + this._callbacks = []; + this._contexts = []; + } + this._callbacks.push(callback); + this._contexts.push(context); + if (Array.isArray(bucket)) { + bucket.push({ dispose: () => this.remove(callback, context) }); + } + } + remove(callback, context = null) { + if (!this._callbacks) { + return; + } + var foundCallbackWithDifferentContext = false; + for (var i = 0, len = this._callbacks.length; i < len; i++) { + if (this._callbacks[i] === callback) { + if (this._contexts[i] === context) { + // callback & context match => remove it + this._callbacks.splice(i, 1); + this._contexts.splice(i, 1); + return; + } + else { + foundCallbackWithDifferentContext = true; + } + } + } + if (foundCallbackWithDifferentContext) { + throw new Error('When adding a listener with a context, you should remove it with the same context'); + } + } + invoke(...args) { + if (!this._callbacks) { + return []; + } + var ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0); + for (var i = 0, len = callbacks.length; i < len; i++) { + try { + ret.push(callbacks[i].apply(contexts[i], args)); + } + catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + } + return ret; + } + isEmpty() { + return !this._callbacks || this._callbacks.length === 0; + } + dispose() { + this._callbacks = undefined; + this._contexts = undefined; + } +} +class Emitter { + constructor(_options) { + this._options = _options; + } + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event() { + if (!this._event) { + this._event = (listener, thisArgs, disposables) => { + if (!this._callbacks) { + this._callbacks = new CallbackList(); + } + if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) { + this._options.onFirstListenerAdd(this); + } + this._callbacks.add(listener, thisArgs); + let result; + result = { + dispose: () => { + this._callbacks.remove(listener, thisArgs); + result.dispose = Emitter._noop; + if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) { + this._options.onLastListenerRemove(this); + } + } + }; + if (Array.isArray(disposables)) { + disposables.push(result); + } + return result; + }; + } + return this._event; + } + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event) { + if (this._callbacks) { + this._callbacks.invoke.call(this._callbacks, event); + } + } + dispose() { + if (this._callbacks) { + this._callbacks.dispose(); + this._callbacks = undefined; + } + } +} +exports.Emitter = Emitter; +Emitter._noop = function () { }; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/is.js": +/*!************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/is.js ***! + \************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export array [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export boolean [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export error [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export func [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export number [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export string [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export stringArray [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function boolean(value) { + return value === true || value === false; +} +exports.boolean = boolean; +function string(value) { + return typeof value === 'string' || value instanceof String; +} +exports.string = string; +function number(value) { + return typeof value === 'number' || value instanceof Number; +} +exports.number = number; +function error(value) { + return value instanceof Error; +} +exports.error = error; +function func(value) { + return typeof value === 'function'; +} +exports.func = func; +function array(value) { + return Array.isArray(value); +} +exports.array = array; +function stringArray(value) { + return array(value) && value.every(elem => string(elem)); +} +exports.stringArray = stringArray; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/linkedMap.js": +/*!*******************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/linkedMap.js ***! + \*******************************************************/ +/*! flagged exports */ +/*! export LinkedMap [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Touch [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", ({ value: true })); +var Touch; +(function (Touch) { + Touch.None = 0; + Touch.First = 1; + Touch.Last = 2; +})(Touch = exports.Touch || (exports.Touch = {})); +class LinkedMap { + constructor() { + this._map = new Map(); + this._head = undefined; + this._tail = undefined; + this._size = 0; + } + clear() { + this._map.clear(); + this._head = undefined; + this._tail = undefined; + this._size = 0; + } + isEmpty() { + return !this._head && !this._tail; + } + get size() { + return this._size; + } + has(key) { + return this._map.has(key); + } + get(key) { + const item = this._map.get(key); + if (!item) { + return undefined; + } + return item.value; + } + set(key, value, touch = Touch.None) { + let item = this._map.get(key); + if (item) { + item.value = value; + if (touch !== Touch.None) { + this.touch(item, touch); + } + } + else { + item = { key, value, next: undefined, previous: undefined }; + switch (touch) { + case Touch.None: + this.addItemLast(item); + break; + case Touch.First: + this.addItemFirst(item); + break; + case Touch.Last: + this.addItemLast(item); + break; + default: + this.addItemLast(item); + break; + } + this._map.set(key, item); + this._size++; + } + } + delete(key) { + const item = this._map.get(key); + if (!item) { + return false; + } + this._map.delete(key); + this.removeItem(item); + this._size--; + return true; + } + shift() { + if (!this._head && !this._tail) { + return undefined; + } + if (!this._head || !this._tail) { + throw new Error('Invalid list'); + } + const item = this._head; + this._map.delete(item.key); + this.removeItem(item); + this._size--; + return item.value; + } + forEach(callbackfn, thisArg) { + let current = this._head; + while (current) { + if (thisArg) { + callbackfn.bind(thisArg)(current.value, current.key, this); + } + else { + callbackfn(current.value, current.key, this); + } + current = current.next; + } + } + forEachReverse(callbackfn, thisArg) { + let current = this._tail; + while (current) { + if (thisArg) { + callbackfn.bind(thisArg)(current.value, current.key, this); + } + else { + callbackfn(current.value, current.key, this); + } + current = current.previous; + } + } + values() { + let result = []; + let current = this._head; + while (current) { + result.push(current.value); + current = current.next; + } + return result; + } + keys() { + let result = []; + let current = this._head; + while (current) { + result.push(current.key); + current = current.next; + } + return result; + } + /* JSON RPC run on es5 which has no Symbol.iterator + public keys(): IterableIterator { + let current = this._head; + let iterator: IterableIterator = { + [Symbol.iterator]() { + return iterator; + }, + next():IteratorResult { + if (current) { + let result = { value: current.key, done: false }; + current = current.next; + return result; + } else { + return { value: undefined, done: true }; + } + } + }; + return iterator; + } + + public values(): IterableIterator { + let current = this._head; + let iterator: IterableIterator = { + [Symbol.iterator]() { + return iterator; + }, + next():IteratorResult { + if (current) { + let result = { value: current.value, done: false }; + current = current.next; + return result; + } else { + return { value: undefined, done: true }; + } + } + }; + return iterator; + } + */ + addItemFirst(item) { + // First time Insert + if (!this._head && !this._tail) { + this._tail = item; + } + else if (!this._head) { + throw new Error('Invalid list'); + } + else { + item.next = this._head; + this._head.previous = item; + } + this._head = item; + } + addItemLast(item) { + // First time Insert + if (!this._head && !this._tail) { + this._head = item; + } + else if (!this._tail) { + throw new Error('Invalid list'); + } + else { + item.previous = this._tail; + this._tail.next = item; + } + this._tail = item; + } + removeItem(item) { + if (item === this._head && item === this._tail) { + this._head = undefined; + this._tail = undefined; + } + else if (item === this._head) { + this._head = item.next; + } + else if (item === this._tail) { + this._tail = item.previous; + } + else { + const next = item.next; + const previous = item.previous; + if (!next || !previous) { + throw new Error('Invalid list'); + } + next.previous = previous; + previous.next = next; + } + } + touch(item, touch) { + if (!this._head || !this._tail) { + throw new Error('Invalid list'); + } + if ((touch !== Touch.First && touch !== Touch.Last)) { + return; + } + if (touch === Touch.First) { + if (item === this._head) { + return; + } + const next = item.next; + const previous = item.previous; + // Unlink the item + if (item === this._tail) { + // previous must be defined since item was not head but is tail + // So there are more than on item in the map + previous.next = undefined; + this._tail = previous; + } + else { + // Both next and previous are not undefined since item was neither head nor tail. + next.previous = previous; + previous.next = next; + } + // Insert the node at head + item.previous = undefined; + item.next = this._head; + this._head.previous = item; + this._head = item; + } + else if (touch === Touch.Last) { + if (item === this._tail) { + return; + } + const next = item.next; + const previous = item.previous; + // Unlink the item. + if (item === this._head) { + // next must be defined since item was not tail but is head + // So there are more than on item in the map + next.previous = undefined; + this._head = next; + } + else { + // Both next and previous are not undefined since item was neither head nor tail. + next.previous = previous; + previous.next = next; + } + item.next = undefined; + item.previous = this._tail; + this._tail.next = item; + this._tail = item; + } + } +} +exports.LinkedMap = LinkedMap; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/main.js": +/*!**************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/main.js ***! + \**************************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/*! CommonJS bailout: exports.hasOwnProperty(...) prevents optimization as exports is passed as call context at 8:26-48 */ +/*! CommonJS bailout: exports is used directly at 8:53-60 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +/// + +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", ({ value: true })); +const Is = __webpack_require__(/*! ./is */ "../node_modules/vscode-jsonrpc/lib/is.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-jsonrpc/lib/messages.js"); +exports.RequestType = messages_1.RequestType; +exports.RequestType0 = messages_1.RequestType0; +exports.RequestType1 = messages_1.RequestType1; +exports.RequestType2 = messages_1.RequestType2; +exports.RequestType3 = messages_1.RequestType3; +exports.RequestType4 = messages_1.RequestType4; +exports.RequestType5 = messages_1.RequestType5; +exports.RequestType6 = messages_1.RequestType6; +exports.RequestType7 = messages_1.RequestType7; +exports.RequestType8 = messages_1.RequestType8; +exports.RequestType9 = messages_1.RequestType9; +exports.ResponseError = messages_1.ResponseError; +exports.ErrorCodes = messages_1.ErrorCodes; +exports.NotificationType = messages_1.NotificationType; +exports.NotificationType0 = messages_1.NotificationType0; +exports.NotificationType1 = messages_1.NotificationType1; +exports.NotificationType2 = messages_1.NotificationType2; +exports.NotificationType3 = messages_1.NotificationType3; +exports.NotificationType4 = messages_1.NotificationType4; +exports.NotificationType5 = messages_1.NotificationType5; +exports.NotificationType6 = messages_1.NotificationType6; +exports.NotificationType7 = messages_1.NotificationType7; +exports.NotificationType8 = messages_1.NotificationType8; +exports.NotificationType9 = messages_1.NotificationType9; +const messageReader_1 = __webpack_require__(/*! ./messageReader */ "../node_modules/vscode-jsonrpc/lib/messageReader.js"); +exports.MessageReader = messageReader_1.MessageReader; +exports.StreamMessageReader = messageReader_1.StreamMessageReader; +exports.IPCMessageReader = messageReader_1.IPCMessageReader; +exports.SocketMessageReader = messageReader_1.SocketMessageReader; +const messageWriter_1 = __webpack_require__(/*! ./messageWriter */ "../node_modules/vscode-jsonrpc/lib/messageWriter.js"); +exports.MessageWriter = messageWriter_1.MessageWriter; +exports.StreamMessageWriter = messageWriter_1.StreamMessageWriter; +exports.IPCMessageWriter = messageWriter_1.IPCMessageWriter; +exports.SocketMessageWriter = messageWriter_1.SocketMessageWriter; +const events_1 = __webpack_require__(/*! ./events */ "../node_modules/vscode-jsonrpc/lib/events.js"); +exports.Disposable = events_1.Disposable; +exports.Event = events_1.Event; +exports.Emitter = events_1.Emitter; +const cancellation_1 = __webpack_require__(/*! ./cancellation */ "../node_modules/vscode-jsonrpc/lib/cancellation.js"); +exports.CancellationTokenSource = cancellation_1.CancellationTokenSource; +exports.CancellationToken = cancellation_1.CancellationToken; +const linkedMap_1 = __webpack_require__(/*! ./linkedMap */ "../node_modules/vscode-jsonrpc/lib/linkedMap.js"); +__export(__webpack_require__(/*! ./pipeSupport */ "../node_modules/vscode-jsonrpc/lib/pipeSupport.js")); +__export(__webpack_require__(/*! ./socketSupport */ "../node_modules/vscode-jsonrpc/lib/socketSupport.js")); +var CancelNotification; +(function (CancelNotification) { + CancelNotification.type = new messages_1.NotificationType('$/cancelRequest'); +})(CancelNotification || (CancelNotification = {})); +var ProgressNotification; +(function (ProgressNotification) { + ProgressNotification.type = new messages_1.NotificationType('$/progress'); +})(ProgressNotification || (ProgressNotification = {})); +class ProgressType { + constructor() { + } +} +exports.ProgressType = ProgressType; +exports.NullLogger = Object.freeze({ + error: () => { }, + warn: () => { }, + info: () => { }, + log: () => { } +}); +var Trace; +(function (Trace) { + Trace[Trace["Off"] = 0] = "Off"; + Trace[Trace["Messages"] = 1] = "Messages"; + Trace[Trace["Verbose"] = 2] = "Verbose"; +})(Trace = exports.Trace || (exports.Trace = {})); +(function (Trace) { + function fromString(value) { + if (!Is.string(value)) { + return Trace.Off; + } + value = value.toLowerCase(); + switch (value) { + case 'off': + return Trace.Off; + case 'messages': + return Trace.Messages; + case 'verbose': + return Trace.Verbose; + default: + return Trace.Off; + } + } + Trace.fromString = fromString; + function toString(value) { + switch (value) { + case Trace.Off: + return 'off'; + case Trace.Messages: + return 'messages'; + case Trace.Verbose: + return 'verbose'; + default: + return 'off'; + } + } + Trace.toString = toString; +})(Trace = exports.Trace || (exports.Trace = {})); +var TraceFormat; +(function (TraceFormat) { + TraceFormat["Text"] = "text"; + TraceFormat["JSON"] = "json"; +})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {})); +(function (TraceFormat) { + function fromString(value) { + value = value.toLowerCase(); + if (value === 'json') { + return TraceFormat.JSON; + } + else { + return TraceFormat.Text; + } + } + TraceFormat.fromString = fromString; +})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {})); +var SetTraceNotification; +(function (SetTraceNotification) { + SetTraceNotification.type = new messages_1.NotificationType('$/setTraceNotification'); +})(SetTraceNotification = exports.SetTraceNotification || (exports.SetTraceNotification = {})); +var LogTraceNotification; +(function (LogTraceNotification) { + LogTraceNotification.type = new messages_1.NotificationType('$/logTraceNotification'); +})(LogTraceNotification = exports.LogTraceNotification || (exports.LogTraceNotification = {})); +var ConnectionErrors; +(function (ConnectionErrors) { + /** + * The connection is closed. + */ + ConnectionErrors[ConnectionErrors["Closed"] = 1] = "Closed"; + /** + * The connection got disposed. + */ + ConnectionErrors[ConnectionErrors["Disposed"] = 2] = "Disposed"; + /** + * The connection is already in listening mode. + */ + ConnectionErrors[ConnectionErrors["AlreadyListening"] = 3] = "AlreadyListening"; +})(ConnectionErrors = exports.ConnectionErrors || (exports.ConnectionErrors = {})); +class ConnectionError extends Error { + constructor(code, message) { + super(message); + this.code = code; + Object.setPrototypeOf(this, ConnectionError.prototype); + } +} +exports.ConnectionError = ConnectionError; +var ConnectionStrategy; +(function (ConnectionStrategy) { + function is(value) { + let candidate = value; + return candidate && Is.func(candidate.cancelUndispatched); + } + ConnectionStrategy.is = is; +})(ConnectionStrategy = exports.ConnectionStrategy || (exports.ConnectionStrategy = {})); +var ConnectionState; +(function (ConnectionState) { + ConnectionState[ConnectionState["New"] = 1] = "New"; + ConnectionState[ConnectionState["Listening"] = 2] = "Listening"; + ConnectionState[ConnectionState["Closed"] = 3] = "Closed"; + ConnectionState[ConnectionState["Disposed"] = 4] = "Disposed"; +})(ConnectionState || (ConnectionState = {})); +function _createMessageConnection(messageReader, messageWriter, logger, strategy) { + let sequenceNumber = 0; + let notificationSquenceNumber = 0; + let unknownResponseSquenceNumber = 0; + const version = '2.0'; + let starRequestHandler = undefined; + let requestHandlers = Object.create(null); + let starNotificationHandler = undefined; + let notificationHandlers = Object.create(null); + let progressHandlers = new Map(); + let timer; + let messageQueue = new linkedMap_1.LinkedMap(); + let responsePromises = Object.create(null); + let requestTokens = Object.create(null); + let trace = Trace.Off; + let traceFormat = TraceFormat.Text; + let tracer; + let state = ConnectionState.New; + let errorEmitter = new events_1.Emitter(); + let closeEmitter = new events_1.Emitter(); + let unhandledNotificationEmitter = new events_1.Emitter(); + let unhandledProgressEmitter = new events_1.Emitter(); + let disposeEmitter = new events_1.Emitter(); + function createRequestQueueKey(id) { + return 'req-' + id.toString(); + } + function createResponseQueueKey(id) { + if (id === null) { + return 'res-unknown-' + (++unknownResponseSquenceNumber).toString(); + } + else { + return 'res-' + id.toString(); + } + } + function createNotificationQueueKey() { + return 'not-' + (++notificationSquenceNumber).toString(); + } + function addMessageToQueue(queue, message) { + if (messages_1.isRequestMessage(message)) { + queue.set(createRequestQueueKey(message.id), message); + } + else if (messages_1.isResponseMessage(message)) { + queue.set(createResponseQueueKey(message.id), message); + } + else { + queue.set(createNotificationQueueKey(), message); + } + } + function cancelUndispatched(_message) { + return undefined; + } + function isListening() { + return state === ConnectionState.Listening; + } + function isClosed() { + return state === ConnectionState.Closed; + } + function isDisposed() { + return state === ConnectionState.Disposed; + } + function closeHandler() { + if (state === ConnectionState.New || state === ConnectionState.Listening) { + state = ConnectionState.Closed; + closeEmitter.fire(undefined); + } + // If the connection is disposed don't sent close events. + } + function readErrorHandler(error) { + errorEmitter.fire([error, undefined, undefined]); + } + function writeErrorHandler(data) { + errorEmitter.fire(data); + } + messageReader.onClose(closeHandler); + messageReader.onError(readErrorHandler); + messageWriter.onClose(closeHandler); + messageWriter.onError(writeErrorHandler); + function triggerMessageQueue() { + if (timer || messageQueue.size === 0) { + return; + } + timer = setImmediate(() => { + timer = undefined; + processMessageQueue(); + }); + } + function processMessageQueue() { + if (messageQueue.size === 0) { + return; + } + let message = messageQueue.shift(); + try { + if (messages_1.isRequestMessage(message)) { + handleRequest(message); + } + else if (messages_1.isNotificationMessage(message)) { + handleNotification(message); + } + else if (messages_1.isResponseMessage(message)) { + handleResponse(message); + } + else { + handleInvalidMessage(message); + } + } + finally { + triggerMessageQueue(); + } + } + let callback = (message) => { + try { + // We have received a cancellation message. Check if the message is still in the queue + // and cancel it if allowed to do so. + if (messages_1.isNotificationMessage(message) && message.method === CancelNotification.type.method) { + let key = createRequestQueueKey(message.params.id); + let toCancel = messageQueue.get(key); + if (messages_1.isRequestMessage(toCancel)) { + let response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel); + if (response && (response.error !== void 0 || response.result !== void 0)) { + messageQueue.delete(key); + response.id = toCancel.id; + traceSendingResponse(response, message.method, Date.now()); + messageWriter.write(response); + return; + } + } + } + addMessageToQueue(messageQueue, message); + } + finally { + triggerMessageQueue(); + } + }; + function handleRequest(requestMessage) { + if (isDisposed()) { + // we return here silently since we fired an event when the + // connection got disposed. + return; + } + function reply(resultOrError, method, startTime) { + let message = { + jsonrpc: version, + id: requestMessage.id + }; + if (resultOrError instanceof messages_1.ResponseError) { + message.error = resultOrError.toJson(); + } + else { + message.result = resultOrError === void 0 ? null : resultOrError; + } + traceSendingResponse(message, method, startTime); + messageWriter.write(message); + } + function replyError(error, method, startTime) { + let message = { + jsonrpc: version, + id: requestMessage.id, + error: error.toJson() + }; + traceSendingResponse(message, method, startTime); + messageWriter.write(message); + } + function replySuccess(result, method, startTime) { + // The JSON RPC defines that a response must either have a result or an error + // So we can't treat undefined as a valid response result. + if (result === void 0) { + result = null; + } + let message = { + jsonrpc: version, + id: requestMessage.id, + result: result + }; + traceSendingResponse(message, method, startTime); + messageWriter.write(message); + } + traceReceivedRequest(requestMessage); + let element = requestHandlers[requestMessage.method]; + let type; + let requestHandler; + if (element) { + type = element.type; + requestHandler = element.handler; + } + let startTime = Date.now(); + if (requestHandler || starRequestHandler) { + let cancellationSource = new cancellation_1.CancellationTokenSource(); + let tokenKey = String(requestMessage.id); + requestTokens[tokenKey] = cancellationSource; + try { + let handlerResult; + if (requestMessage.params === void 0 || (type !== void 0 && type.numberOfParams === 0)) { + handlerResult = requestHandler + ? requestHandler(cancellationSource.token) + : starRequestHandler(requestMessage.method, cancellationSource.token); + } + else if (Is.array(requestMessage.params) && (type === void 0 || type.numberOfParams > 1)) { + handlerResult = requestHandler + ? requestHandler(...requestMessage.params, cancellationSource.token) + : starRequestHandler(requestMessage.method, ...requestMessage.params, cancellationSource.token); + } + else { + handlerResult = requestHandler + ? requestHandler(requestMessage.params, cancellationSource.token) + : starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token); + } + let promise = handlerResult; + if (!handlerResult) { + delete requestTokens[tokenKey]; + replySuccess(handlerResult, requestMessage.method, startTime); + } + else if (promise.then) { + promise.then((resultOrError) => { + delete requestTokens[tokenKey]; + reply(resultOrError, requestMessage.method, startTime); + }, error => { + delete requestTokens[tokenKey]; + if (error instanceof messages_1.ResponseError) { + replyError(error, requestMessage.method, startTime); + } + else if (error && Is.string(error.message)) { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime); + } + else { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime); + } + }); + } + else { + delete requestTokens[tokenKey]; + reply(handlerResult, requestMessage.method, startTime); + } + } + catch (error) { + delete requestTokens[tokenKey]; + if (error instanceof messages_1.ResponseError) { + reply(error, requestMessage.method, startTime); + } + else if (error && Is.string(error.message)) { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime); + } + else { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime); + } + } + } + else { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime); + } + } + function handleResponse(responseMessage) { + if (isDisposed()) { + // See handle request. + return; + } + if (responseMessage.id === null) { + if (responseMessage.error) { + logger.error(`Received response message without id: Error is: \n${JSON.stringify(responseMessage.error, undefined, 4)}`); + } + else { + logger.error(`Received response message without id. No further error information provided.`); + } + } + else { + let key = String(responseMessage.id); + let responsePromise = responsePromises[key]; + traceReceivedResponse(responseMessage, responsePromise); + if (responsePromise) { + delete responsePromises[key]; + try { + if (responseMessage.error) { + let error = responseMessage.error; + responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data)); + } + else if (responseMessage.result !== void 0) { + responsePromise.resolve(responseMessage.result); + } + else { + throw new Error('Should never happen.'); + } + } + catch (error) { + if (error.message) { + logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`); + } + else { + logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`); + } + } + } + } + } + function handleNotification(message) { + if (isDisposed()) { + // See handle request. + return; + } + let type = undefined; + let notificationHandler; + if (message.method === CancelNotification.type.method) { + notificationHandler = (params) => { + let id = params.id; + let source = requestTokens[String(id)]; + if (source) { + source.cancel(); + } + }; + } + else { + let element = notificationHandlers[message.method]; + if (element) { + notificationHandler = element.handler; + type = element.type; + } + } + if (notificationHandler || starNotificationHandler) { + try { + traceReceivedNotification(message); + if (message.params === void 0 || (type !== void 0 && type.numberOfParams === 0)) { + notificationHandler ? notificationHandler() : starNotificationHandler(message.method); + } + else if (Is.array(message.params) && (type === void 0 || type.numberOfParams > 1)) { + notificationHandler ? notificationHandler(...message.params) : starNotificationHandler(message.method, ...message.params); + } + else { + notificationHandler ? notificationHandler(message.params) : starNotificationHandler(message.method, message.params); + } + } + catch (error) { + if (error.message) { + logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`); + } + else { + logger.error(`Notification handler '${message.method}' failed unexpectedly.`); + } + } + } + else { + unhandledNotificationEmitter.fire(message); + } + } + function handleInvalidMessage(message) { + if (!message) { + logger.error('Received empty message.'); + return; + } + logger.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(message, null, 4)}`); + // Test whether we find an id to reject the promise + let responseMessage = message; + if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) { + let key = String(responseMessage.id); + let responseHandler = responsePromises[key]; + if (responseHandler) { + responseHandler.reject(new Error('The received response has neither a result nor an error property.')); + } + } + } + function traceSendingRequest(message) { + if (trace === Trace.Off || !tracer) { + return; + } + if (traceFormat === TraceFormat.Text) { + let data = undefined; + if (trace === Trace.Verbose && message.params) { + data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; + } + tracer.log(`Sending request '${message.method} - (${message.id})'.`, data); + } + else { + logLSPMessage('send-request', message); + } + } + function traceSendingNotification(message) { + if (trace === Trace.Off || !tracer) { + return; + } + if (traceFormat === TraceFormat.Text) { + let data = undefined; + if (trace === Trace.Verbose) { + if (message.params) { + data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; + } + else { + data = 'No parameters provided.\n\n'; + } + } + tracer.log(`Sending notification '${message.method}'.`, data); + } + else { + logLSPMessage('send-notification', message); + } + } + function traceSendingResponse(message, method, startTime) { + if (trace === Trace.Off || !tracer) { + return; + } + if (traceFormat === TraceFormat.Text) { + let data = undefined; + if (trace === Trace.Verbose) { + if (message.error && message.error.data) { + data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\n\n`; + } + else { + if (message.result) { + data = `Result: ${JSON.stringify(message.result, null, 4)}\n\n`; + } + else if (message.error === void 0) { + data = 'No result returned.\n\n'; + } + } + } + tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data); + } + else { + logLSPMessage('send-response', message); + } + } + function traceReceivedRequest(message) { + if (trace === Trace.Off || !tracer) { + return; + } + if (traceFormat === TraceFormat.Text) { + let data = undefined; + if (trace === Trace.Verbose && message.params) { + data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; + } + tracer.log(`Received request '${message.method} - (${message.id})'.`, data); + } + else { + logLSPMessage('receive-request', message); + } + } + function traceReceivedNotification(message) { + if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) { + return; + } + if (traceFormat === TraceFormat.Text) { + let data = undefined; + if (trace === Trace.Verbose) { + if (message.params) { + data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; + } + else { + data = 'No parameters provided.\n\n'; + } + } + tracer.log(`Received notification '${message.method}'.`, data); + } + else { + logLSPMessage('receive-notification', message); + } + } + function traceReceivedResponse(message, responsePromise) { + if (trace === Trace.Off || !tracer) { + return; + } + if (traceFormat === TraceFormat.Text) { + let data = undefined; + if (trace === Trace.Verbose) { + if (message.error && message.error.data) { + data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\n\n`; + } + else { + if (message.result) { + data = `Result: ${JSON.stringify(message.result, null, 4)}\n\n`; + } + else if (message.error === void 0) { + data = 'No result returned.\n\n'; + } + } + } + if (responsePromise) { + let error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : ''; + tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data); + } + else { + tracer.log(`Received response ${message.id} without active response promise.`, data); + } + } + else { + logLSPMessage('receive-response', message); + } + } + function logLSPMessage(type, message) { + if (!tracer || trace === Trace.Off) { + return; + } + const lspMessage = { + isLSPMessage: true, + type, + message, + timestamp: Date.now() + }; + tracer.log(lspMessage); + } + function throwIfClosedOrDisposed() { + if (isClosed()) { + throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.'); + } + if (isDisposed()) { + throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.'); + } + } + function throwIfListening() { + if (isListening()) { + throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening'); + } + } + function throwIfNotListening() { + if (!isListening()) { + throw new Error('Call listen() first.'); + } + } + function undefinedToNull(param) { + if (param === void 0) { + return null; + } + else { + return param; + } + } + function computeMessageParams(type, params) { + let result; + let numberOfParams = type.numberOfParams; + switch (numberOfParams) { + case 0: + result = null; + break; + case 1: + result = undefinedToNull(params[0]); + break; + default: + result = []; + for (let i = 0; i < params.length && i < numberOfParams; i++) { + result.push(undefinedToNull(params[i])); + } + if (params.length < numberOfParams) { + for (let i = params.length; i < numberOfParams; i++) { + result.push(null); + } + } + break; + } + return result; + } + let connection = { + sendNotification: (type, ...params) => { + throwIfClosedOrDisposed(); + let method; + let messageParams; + if (Is.string(type)) { + method = type; + switch (params.length) { + case 0: + messageParams = null; + break; + case 1: + messageParams = params[0]; + break; + default: + messageParams = params; + break; + } + } + else { + method = type.method; + messageParams = computeMessageParams(type, params); + } + let notificationMessage = { + jsonrpc: version, + method: method, + params: messageParams + }; + traceSendingNotification(notificationMessage); + messageWriter.write(notificationMessage); + }, + onNotification: (type, handler) => { + throwIfClosedOrDisposed(); + if (Is.func(type)) { + starNotificationHandler = type; + } + else if (handler) { + if (Is.string(type)) { + notificationHandlers[type] = { type: undefined, handler }; + } + else { + notificationHandlers[type.method] = { type, handler }; + } + } + }, + onProgress: (_type, token, handler) => { + if (progressHandlers.has(token)) { + throw new Error(`Progress handler for token ${token} already registered`); + } + progressHandlers.set(token, handler); + return { + dispose: () => { + progressHandlers.delete(token); + } + }; + }, + sendProgress: (_type, token, value) => { + connection.sendNotification(ProgressNotification.type, { token, value }); + }, + onUnhandledProgress: unhandledProgressEmitter.event, + sendRequest: (type, ...params) => { + throwIfClosedOrDisposed(); + throwIfNotListening(); + let method; + let messageParams; + let token = undefined; + if (Is.string(type)) { + method = type; + switch (params.length) { + case 0: + messageParams = null; + break; + case 1: + // The cancellation token is optional so it can also be undefined. + if (cancellation_1.CancellationToken.is(params[0])) { + messageParams = null; + token = params[0]; + } + else { + messageParams = undefinedToNull(params[0]); + } + break; + default: + const last = params.length - 1; + if (cancellation_1.CancellationToken.is(params[last])) { + token = params[last]; + if (params.length === 2) { + messageParams = undefinedToNull(params[0]); + } + else { + messageParams = params.slice(0, last).map(value => undefinedToNull(value)); + } + } + else { + messageParams = params.map(value => undefinedToNull(value)); + } + break; + } + } + else { + method = type.method; + messageParams = computeMessageParams(type, params); + let numberOfParams = type.numberOfParams; + token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined; + } + let id = sequenceNumber++; + let result = new Promise((resolve, reject) => { + let requestMessage = { + jsonrpc: version, + id: id, + method: method, + params: messageParams + }; + let responsePromise = { method: method, timerStart: Date.now(), resolve, reject }; + traceSendingRequest(requestMessage); + try { + messageWriter.write(requestMessage); + } + catch (e) { + // Writing the message failed. So we need to reject the promise. + responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, e.message ? e.message : 'Unknown reason')); + responsePromise = null; + } + if (responsePromise) { + responsePromises[String(id)] = responsePromise; + } + }); + if (token) { + token.onCancellationRequested(() => { + connection.sendNotification(CancelNotification.type, { id }); + }); + } + return result; + }, + onRequest: (type, handler) => { + throwIfClosedOrDisposed(); + if (Is.func(type)) { + starRequestHandler = type; + } + else if (handler) { + if (Is.string(type)) { + requestHandlers[type] = { type: undefined, handler }; + } + else { + requestHandlers[type.method] = { type, handler }; + } + } + }, + trace: (_value, _tracer, sendNotificationOrTraceOptions) => { + let _sendNotification = false; + let _traceFormat = TraceFormat.Text; + if (sendNotificationOrTraceOptions !== void 0) { + if (Is.boolean(sendNotificationOrTraceOptions)) { + _sendNotification = sendNotificationOrTraceOptions; + } + else { + _sendNotification = sendNotificationOrTraceOptions.sendNotification || false; + _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text; + } + } + trace = _value; + traceFormat = _traceFormat; + if (trace === Trace.Off) { + tracer = undefined; + } + else { + tracer = _tracer; + } + if (_sendNotification && !isClosed() && !isDisposed()) { + connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) }); + } + }, + onError: errorEmitter.event, + onClose: closeEmitter.event, + onUnhandledNotification: unhandledNotificationEmitter.event, + onDispose: disposeEmitter.event, + dispose: () => { + if (isDisposed()) { + return; + } + state = ConnectionState.Disposed; + disposeEmitter.fire(undefined); + let error = new Error('Connection got disposed.'); + Object.keys(responsePromises).forEach((key) => { + responsePromises[key].reject(error); + }); + responsePromises = Object.create(null); + requestTokens = Object.create(null); + messageQueue = new linkedMap_1.LinkedMap(); + // Test for backwards compatibility + if (Is.func(messageWriter.dispose)) { + messageWriter.dispose(); + } + if (Is.func(messageReader.dispose)) { + messageReader.dispose(); + } + }, + listen: () => { + throwIfClosedOrDisposed(); + throwIfListening(); + state = ConnectionState.Listening; + messageReader.listen(callback); + }, + inspect: () => { + // eslint-disable-next-line no-console + console.log('inspect'); + } + }; + connection.onNotification(LogTraceNotification.type, (params) => { + if (trace === Trace.Off || !tracer) { + return; + } + tracer.log(params.message, trace === Trace.Verbose ? params.verbose : undefined); + }); + connection.onNotification(ProgressNotification.type, (params) => { + const handler = progressHandlers.get(params.token); + if (handler) { + handler(params.value); + } + else { + unhandledProgressEmitter.fire(params); + } + }); + return connection; +} +function isMessageReader(value) { + return value.listen !== void 0 && value.read === void 0; +} +function isMessageWriter(value) { + return value.write !== void 0 && value.end === void 0; +} +function createMessageConnection(input, output, logger, strategy) { + if (!logger) { + logger = exports.NullLogger; + } + let reader = isMessageReader(input) ? input : new messageReader_1.StreamMessageReader(input); + let writer = isMessageWriter(output) ? output : new messageWriter_1.StreamMessageWriter(output); + return _createMessageConnection(reader, writer, logger, strategy); +} +exports.createMessageConnection = createMessageConnection; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/messageReader.js": +/*!***********************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/messageReader.js ***! + \***********************************************************/ +/*! flagged exports */ +/*! export AbstractMessageReader [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export IPCMessageReader [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export MessageReader [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SocketMessageReader [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export StreamMessageReader [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const events_1 = __webpack_require__(/*! ./events */ "../node_modules/vscode-jsonrpc/lib/events.js"); +const Is = __webpack_require__(/*! ./is */ "../node_modules/vscode-jsonrpc/lib/is.js"); +let DefaultSize = 8192; +let CR = Buffer.from('\r', 'ascii')[0]; +let LF = Buffer.from('\n', 'ascii')[0]; +let CRLF = '\r\n'; +class MessageBuffer { + constructor(encoding = 'utf8') { + this.encoding = encoding; + this.index = 0; + this.buffer = Buffer.allocUnsafe(DefaultSize); + } + append(chunk) { + var toAppend = chunk; + if (typeof (chunk) === 'string') { + var str = chunk; + var bufferLen = Buffer.byteLength(str, this.encoding); + toAppend = Buffer.allocUnsafe(bufferLen); + toAppend.write(str, 0, bufferLen, this.encoding); + } + if (this.buffer.length - this.index >= toAppend.length) { + toAppend.copy(this.buffer, this.index, 0, toAppend.length); + } + else { + var newSize = (Math.ceil((this.index + toAppend.length) / DefaultSize) + 1) * DefaultSize; + if (this.index === 0) { + this.buffer = Buffer.allocUnsafe(newSize); + toAppend.copy(this.buffer, 0, 0, toAppend.length); + } + else { + this.buffer = Buffer.concat([this.buffer.slice(0, this.index), toAppend], newSize); + } + } + this.index += toAppend.length; + } + tryReadHeaders() { + let result = undefined; + let current = 0; + while (current + 3 < this.index && (this.buffer[current] !== CR || this.buffer[current + 1] !== LF || this.buffer[current + 2] !== CR || this.buffer[current + 3] !== LF)) { + current++; + } + // No header / body separator found (e.g CRLFCRLF) + if (current + 3 >= this.index) { + return result; + } + result = Object.create(null); + let headers = this.buffer.toString('ascii', 0, current).split(CRLF); + headers.forEach((header) => { + let index = header.indexOf(':'); + if (index === -1) { + throw new Error('Message header must separate key and value using :'); + } + let key = header.substr(0, index); + let value = header.substr(index + 1).trim(); + result[key] = value; + }); + let nextStart = current + 4; + this.buffer = this.buffer.slice(nextStart); + this.index = this.index - nextStart; + return result; + } + tryReadContent(length) { + if (this.index < length) { + return null; + } + let result = this.buffer.toString(this.encoding, 0, length); + let nextStart = length; + this.buffer.copy(this.buffer, 0, nextStart); + this.index = this.index - nextStart; + return result; + } + get numberOfBytes() { + return this.index; + } +} +var MessageReader; +(function (MessageReader) { + function is(value) { + let candidate = value; + return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) && + Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage); + } + MessageReader.is = is; +})(MessageReader = exports.MessageReader || (exports.MessageReader = {})); +class AbstractMessageReader { + constructor() { + this.errorEmitter = new events_1.Emitter(); + this.closeEmitter = new events_1.Emitter(); + this.partialMessageEmitter = new events_1.Emitter(); + } + dispose() { + this.errorEmitter.dispose(); + this.closeEmitter.dispose(); + } + get onError() { + return this.errorEmitter.event; + } + fireError(error) { + this.errorEmitter.fire(this.asError(error)); + } + get onClose() { + return this.closeEmitter.event; + } + fireClose() { + this.closeEmitter.fire(undefined); + } + get onPartialMessage() { + return this.partialMessageEmitter.event; + } + firePartialMessage(info) { + this.partialMessageEmitter.fire(info); + } + asError(error) { + if (error instanceof Error) { + return error; + } + else { + return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`); + } + } +} +exports.AbstractMessageReader = AbstractMessageReader; +class StreamMessageReader extends AbstractMessageReader { + constructor(readable, encoding = 'utf8') { + super(); + this.readable = readable; + this.buffer = new MessageBuffer(encoding); + this._partialMessageTimeout = 10000; + } + set partialMessageTimeout(timeout) { + this._partialMessageTimeout = timeout; + } + get partialMessageTimeout() { + return this._partialMessageTimeout; + } + listen(callback) { + this.nextMessageLength = -1; + this.messageToken = 0; + this.partialMessageTimer = undefined; + this.callback = callback; + this.readable.on('data', (data) => { + this.onData(data); + }); + this.readable.on('error', (error) => this.fireError(error)); + this.readable.on('close', () => this.fireClose()); + } + onData(data) { + this.buffer.append(data); + while (true) { + if (this.nextMessageLength === -1) { + let headers = this.buffer.tryReadHeaders(); + if (!headers) { + return; + } + let contentLength = headers['Content-Length']; + if (!contentLength) { + throw new Error('Header must provide a Content-Length property.'); + } + let length = parseInt(contentLength); + if (isNaN(length)) { + throw new Error('Content-Length value must be a number.'); + } + this.nextMessageLength = length; + // Take the encoding form the header. For compatibility + // treat both utf-8 and utf8 as node utf8 + } + var msg = this.buffer.tryReadContent(this.nextMessageLength); + if (msg === null) { + /** We haven't received the full message yet. */ + this.setPartialMessageTimer(); + return; + } + this.clearPartialMessageTimer(); + this.nextMessageLength = -1; + this.messageToken++; + var json = JSON.parse(msg); + this.callback(json); + } + } + clearPartialMessageTimer() { + if (this.partialMessageTimer) { + clearTimeout(this.partialMessageTimer); + this.partialMessageTimer = undefined; + } + } + setPartialMessageTimer() { + this.clearPartialMessageTimer(); + if (this._partialMessageTimeout <= 0) { + return; + } + this.partialMessageTimer = setTimeout((token, timeout) => { + this.partialMessageTimer = undefined; + if (token === this.messageToken) { + this.firePartialMessage({ messageToken: token, waitingTime: timeout }); + this.setPartialMessageTimer(); + } + }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout); + } +} +exports.StreamMessageReader = StreamMessageReader; +class IPCMessageReader extends AbstractMessageReader { + constructor(process) { + super(); + this.process = process; + let eventEmitter = this.process; + eventEmitter.on('error', (error) => this.fireError(error)); + eventEmitter.on('close', () => this.fireClose()); + } + listen(callback) { + this.process.on('message', callback); + } +} +exports.IPCMessageReader = IPCMessageReader; +class SocketMessageReader extends StreamMessageReader { + constructor(socket, encoding = 'utf-8') { + super(socket, encoding); + } +} +exports.SocketMessageReader = SocketMessageReader; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/messageWriter.js": +/*!***********************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/messageWriter.js ***! + \***********************************************************/ +/*! flagged exports */ +/*! export AbstractMessageWriter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export IPCMessageWriter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export MessageWriter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SocketMessageWriter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export StreamMessageWriter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const events_1 = __webpack_require__(/*! ./events */ "../node_modules/vscode-jsonrpc/lib/events.js"); +const Is = __webpack_require__(/*! ./is */ "../node_modules/vscode-jsonrpc/lib/is.js"); +let ContentLength = 'Content-Length: '; +let CRLF = '\r\n'; +var MessageWriter; +(function (MessageWriter) { + function is(value) { + let candidate = value; + return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) && + Is.func(candidate.onError) && Is.func(candidate.write); + } + MessageWriter.is = is; +})(MessageWriter = exports.MessageWriter || (exports.MessageWriter = {})); +class AbstractMessageWriter { + constructor() { + this.errorEmitter = new events_1.Emitter(); + this.closeEmitter = new events_1.Emitter(); + } + dispose() { + this.errorEmitter.dispose(); + this.closeEmitter.dispose(); + } + get onError() { + return this.errorEmitter.event; + } + fireError(error, message, count) { + this.errorEmitter.fire([this.asError(error), message, count]); + } + get onClose() { + return this.closeEmitter.event; + } + fireClose() { + this.closeEmitter.fire(undefined); + } + asError(error) { + if (error instanceof Error) { + return error; + } + else { + return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`); + } + } +} +exports.AbstractMessageWriter = AbstractMessageWriter; +class StreamMessageWriter extends AbstractMessageWriter { + constructor(writable, encoding = 'utf8') { + super(); + this.writable = writable; + this.encoding = encoding; + this.errorCount = 0; + this.writable.on('error', (error) => this.fireError(error)); + this.writable.on('close', () => this.fireClose()); + } + write(msg) { + let json = JSON.stringify(msg); + let contentLength = Buffer.byteLength(json, this.encoding); + let headers = [ + ContentLength, contentLength.toString(), CRLF, + CRLF + ]; + try { + // Header must be written in ASCII encoding + this.writable.write(headers.join(''), 'ascii'); + // Now write the content. This can be written in any encoding + this.writable.write(json, this.encoding); + this.errorCount = 0; + } + catch (error) { + this.errorCount++; + this.fireError(error, msg, this.errorCount); + } + } +} +exports.StreamMessageWriter = StreamMessageWriter; +class IPCMessageWriter extends AbstractMessageWriter { + constructor(process) { + super(); + this.process = process; + this.errorCount = 0; + this.queue = []; + this.sending = false; + let eventEmitter = this.process; + eventEmitter.on('error', (error) => this.fireError(error)); + eventEmitter.on('close', () => this.fireClose); + } + write(msg) { + if (!this.sending && this.queue.length === 0) { + // See https://github.com/nodejs/node/issues/7657 + this.doWriteMessage(msg); + } + else { + this.queue.push(msg); + } + } + doWriteMessage(msg) { + try { + if (this.process.send) { + this.sending = true; + this.process.send(msg, undefined, undefined, (error) => { + this.sending = false; + if (error) { + this.errorCount++; + this.fireError(error, msg, this.errorCount); + } + else { + this.errorCount = 0; + } + if (this.queue.length > 0) { + this.doWriteMessage(this.queue.shift()); + } + }); + } + } + catch (error) { + this.errorCount++; + this.fireError(error, msg, this.errorCount); + } + } +} +exports.IPCMessageWriter = IPCMessageWriter; +class SocketMessageWriter extends AbstractMessageWriter { + constructor(socket, encoding = 'utf8') { + super(); + this.socket = socket; + this.queue = []; + this.sending = false; + this.encoding = encoding; + this.errorCount = 0; + this.socket.on('error', (error) => this.fireError(error)); + this.socket.on('close', () => this.fireClose()); + } + dispose() { + super.dispose(); + this.socket.destroy(); + } + write(msg) { + if (!this.sending && this.queue.length === 0) { + // See https://github.com/nodejs/node/issues/7657 + this.doWriteMessage(msg); + } + else { + this.queue.push(msg); + } + } + doWriteMessage(msg) { + let json = JSON.stringify(msg); + let contentLength = Buffer.byteLength(json, this.encoding); + let headers = [ + ContentLength, contentLength.toString(), CRLF, + CRLF + ]; + try { + // Header must be written in ASCII encoding + this.sending = true; + this.socket.write(headers.join(''), 'ascii', (error) => { + if (error) { + this.handleError(error, msg); + } + try { + // Now write the content. This can be written in any encoding + this.socket.write(json, this.encoding, (error) => { + this.sending = false; + if (error) { + this.handleError(error, msg); + } + else { + this.errorCount = 0; + } + if (this.queue.length > 0) { + this.doWriteMessage(this.queue.shift()); + } + }); + } + catch (error) { + this.handleError(error, msg); + } + }); + } + catch (error) { + this.handleError(error, msg); + } + } + handleError(error, msg) { + this.errorCount++; + this.fireError(error, msg, this.errorCount); + } +} +exports.SocketMessageWriter = SocketMessageWriter; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/messages.js": +/*!******************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/messages.js ***! + \******************************************************/ +/*! flagged exports */ +/*! export AbstractMessageType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ErrorCodes [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType0 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType1 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType2 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType3 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType4 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType5 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType6 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType7 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType8 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export NotificationType9 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType0 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType1 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType2 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType3 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType4 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType5 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType6 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType7 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType8 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RequestType9 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ResponseError [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export isNotificationMessage [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export isRequestMessage [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export isResponseMessage [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const is = __webpack_require__(/*! ./is */ "../node_modules/vscode-jsonrpc/lib/is.js"); +/** + * Predefined error codes. + */ +var ErrorCodes; +(function (ErrorCodes) { + // Defined by JSON RPC + ErrorCodes.ParseError = -32700; + ErrorCodes.InvalidRequest = -32600; + ErrorCodes.MethodNotFound = -32601; + ErrorCodes.InvalidParams = -32602; + ErrorCodes.InternalError = -32603; + ErrorCodes.serverErrorStart = -32099; + ErrorCodes.serverErrorEnd = -32000; + ErrorCodes.ServerNotInitialized = -32002; + ErrorCodes.UnknownErrorCode = -32001; + // Defined by the protocol. + ErrorCodes.RequestCancelled = -32800; + ErrorCodes.ContentModified = -32801; + // Defined by VSCode library. + ErrorCodes.MessageWriteError = 1; + ErrorCodes.MessageReadError = 2; +})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); +/** + * An error object return in a response in case a request + * has failed. + */ +class ResponseError extends Error { + constructor(code, message, data) { + super(message); + this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode; + this.data = data; + Object.setPrototypeOf(this, ResponseError.prototype); + } + toJson() { + return { + code: this.code, + message: this.message, + data: this.data, + }; + } +} +exports.ResponseError = ResponseError; +/** + * An abstract implementation of a MessageType. + */ +class AbstractMessageType { + constructor(_method, _numberOfParams) { + this._method = _method; + this._numberOfParams = _numberOfParams; + } + get method() { + return this._method; + } + get numberOfParams() { + return this._numberOfParams; + } +} +exports.AbstractMessageType = AbstractMessageType; +/** + * Classes to type request response pairs + * + * The type parameter RO will be removed in the next major version + * of the JSON RPC library since it is a LSP concept and doesn't + * belong here. For now it is tagged as default never. + */ +class RequestType0 extends AbstractMessageType { + constructor(method) { + super(method, 0); + } +} +exports.RequestType0 = RequestType0; +class RequestType extends AbstractMessageType { + constructor(method) { + super(method, 1); + } +} +exports.RequestType = RequestType; +class RequestType1 extends AbstractMessageType { + constructor(method) { + super(method, 1); + } +} +exports.RequestType1 = RequestType1; +class RequestType2 extends AbstractMessageType { + constructor(method) { + super(method, 2); + } +} +exports.RequestType2 = RequestType2; +class RequestType3 extends AbstractMessageType { + constructor(method) { + super(method, 3); + } +} +exports.RequestType3 = RequestType3; +class RequestType4 extends AbstractMessageType { + constructor(method) { + super(method, 4); + } +} +exports.RequestType4 = RequestType4; +class RequestType5 extends AbstractMessageType { + constructor(method) { + super(method, 5); + } +} +exports.RequestType5 = RequestType5; +class RequestType6 extends AbstractMessageType { + constructor(method) { + super(method, 6); + } +} +exports.RequestType6 = RequestType6; +class RequestType7 extends AbstractMessageType { + constructor(method) { + super(method, 7); + } +} +exports.RequestType7 = RequestType7; +class RequestType8 extends AbstractMessageType { + constructor(method) { + super(method, 8); + } +} +exports.RequestType8 = RequestType8; +class RequestType9 extends AbstractMessageType { + constructor(method) { + super(method, 9); + } +} +exports.RequestType9 = RequestType9; +/** + * The type parameter RO will be removed in the next major version + * of the JSON RPC library since it is a LSP concept and doesn't + * belong here. For now it is tagged as default never. + */ +class NotificationType extends AbstractMessageType { + constructor(method) { + super(method, 1); + this._ = undefined; + } +} +exports.NotificationType = NotificationType; +class NotificationType0 extends AbstractMessageType { + constructor(method) { + super(method, 0); + } +} +exports.NotificationType0 = NotificationType0; +class NotificationType1 extends AbstractMessageType { + constructor(method) { + super(method, 1); + } +} +exports.NotificationType1 = NotificationType1; +class NotificationType2 extends AbstractMessageType { + constructor(method) { + super(method, 2); + } +} +exports.NotificationType2 = NotificationType2; +class NotificationType3 extends AbstractMessageType { + constructor(method) { + super(method, 3); + } +} +exports.NotificationType3 = NotificationType3; +class NotificationType4 extends AbstractMessageType { + constructor(method) { + super(method, 4); + } +} +exports.NotificationType4 = NotificationType4; +class NotificationType5 extends AbstractMessageType { + constructor(method) { + super(method, 5); + } +} +exports.NotificationType5 = NotificationType5; +class NotificationType6 extends AbstractMessageType { + constructor(method) { + super(method, 6); + } +} +exports.NotificationType6 = NotificationType6; +class NotificationType7 extends AbstractMessageType { + constructor(method) { + super(method, 7); + } +} +exports.NotificationType7 = NotificationType7; +class NotificationType8 extends AbstractMessageType { + constructor(method) { + super(method, 8); + } +} +exports.NotificationType8 = NotificationType8; +class NotificationType9 extends AbstractMessageType { + constructor(method) { + super(method, 9); + } +} +exports.NotificationType9 = NotificationType9; +/** + * Tests if the given message is a request message + */ +function isRequestMessage(message) { + let candidate = message; + return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id)); +} +exports.isRequestMessage = isRequestMessage; +/** + * Tests if the given message is a notification message + */ +function isNotificationMessage(message) { + let candidate = message; + return candidate && is.string(candidate.method) && message.id === void 0; +} +exports.isNotificationMessage = isNotificationMessage; +/** + * Tests if the given message is a response message + */ +function isResponseMessage(message) { + let candidate = message; + return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null); +} +exports.isResponseMessage = isResponseMessage; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/pipeSupport.js": +/*!*********************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/pipeSupport.js ***! + \*********************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createClientPipeTransport [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createServerPipeTransport [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export generateRandomPipeName [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const path_1 = __webpack_require__(/*! path */ "path"); +const os_1 = __webpack_require__(/*! os */ "os"); +const crypto_1 = __webpack_require__(/*! crypto */ "crypto"); +const net_1 = __webpack_require__(/*! net */ "net"); +const messageReader_1 = __webpack_require__(/*! ./messageReader */ "../node_modules/vscode-jsonrpc/lib/messageReader.js"); +const messageWriter_1 = __webpack_require__(/*! ./messageWriter */ "../node_modules/vscode-jsonrpc/lib/messageWriter.js"); +function generateRandomPipeName() { + const randomSuffix = crypto_1.randomBytes(21).toString('hex'); + if (process.platform === 'win32') { + return `\\\\.\\pipe\\vscode-jsonrpc-${randomSuffix}-sock`; + } + else { + // Mac/Unix: use socket file + return path_1.join(os_1.tmpdir(), `vscode-${randomSuffix}.sock`); + } +} +exports.generateRandomPipeName = generateRandomPipeName; +function createClientPipeTransport(pipeName, encoding = 'utf-8') { + let connectResolve; + let connected = new Promise((resolve, _reject) => { + connectResolve = resolve; + }); + return new Promise((resolve, reject) => { + let server = net_1.createServer((socket) => { + server.close(); + connectResolve([ + new messageReader_1.SocketMessageReader(socket, encoding), + new messageWriter_1.SocketMessageWriter(socket, encoding) + ]); + }); + server.on('error', reject); + server.listen(pipeName, () => { + server.removeListener('error', reject); + resolve({ + onConnected: () => { return connected; } + }); + }); + }); +} +exports.createClientPipeTransport = createClientPipeTransport; +function createServerPipeTransport(pipeName, encoding = 'utf-8') { + const socket = net_1.createConnection(pipeName); + return [ + new messageReader_1.SocketMessageReader(socket, encoding), + new messageWriter_1.SocketMessageWriter(socket, encoding) + ]; +} +exports.createServerPipeTransport = createServerPipeTransport; + + +/***/ }), + +/***/ "../node_modules/vscode-jsonrpc/lib/socketSupport.js": +/*!***********************************************************!*\ + !*** ../node_modules/vscode-jsonrpc/lib/socketSupport.js ***! + \***********************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createClientSocketTransport [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createServerSocketTransport [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const net_1 = __webpack_require__(/*! net */ "net"); +const messageReader_1 = __webpack_require__(/*! ./messageReader */ "../node_modules/vscode-jsonrpc/lib/messageReader.js"); +const messageWriter_1 = __webpack_require__(/*! ./messageWriter */ "../node_modules/vscode-jsonrpc/lib/messageWriter.js"); +function createClientSocketTransport(port, encoding = 'utf-8') { + let connectResolve; + let connected = new Promise((resolve, _reject) => { + connectResolve = resolve; + }); + return new Promise((resolve, reject) => { + let server = net_1.createServer((socket) => { + server.close(); + connectResolve([ + new messageReader_1.SocketMessageReader(socket, encoding), + new messageWriter_1.SocketMessageWriter(socket, encoding) + ]); + }); + server.on('error', reject); + server.listen(port, '127.0.0.1', () => { + server.removeListener('error', reject); + resolve({ + onConnected: () => { return connected; } + }); + }); + }); +} +exports.createClientSocketTransport = createClientSocketTransport; +function createServerSocketTransport(port, encoding = 'utf-8') { + const socket = net_1.createConnection(port, '127.0.0.1'); + return [ + new messageReader_1.SocketMessageReader(socket, encoding), + new messageWriter_1.SocketMessageWriter(socket, encoding) + ]; +} +exports.createServerSocketTransport = createServerSocketTransport; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/callHierarchy.proposed.js": +/*!***************************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/callHierarchy.proposed.js ***! + \***************************************************************************/ +/*! flagged exports */ +/*! export CallHierarchyFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +var protocol2code; +(function (protocol2code) { + function asCallHierarchyItem(converter, item) { + if (item === null) { + return undefined; + } + let result = new vscode_1.CallHierarchyItem(converter.asSymbolKind(item.kind), item.name, item.detail || '', converter.asUri(item.uri), converter.asRange(item.range), converter.asRange(item.selectionRange)); + if (item.tags !== undefined) { + result.tags = converter.asSymbolTags(item.tags); + } + return result; + } + protocol2code.asCallHierarchyItem = asCallHierarchyItem; + function asCallHierarchyItems(converter, items) { + if (items === null) { + return undefined; + } + let result = items.map(item => asCallHierarchyItem(converter, item)); + return result[0]; + } + protocol2code.asCallHierarchyItems = asCallHierarchyItems; + function asCallHierarchyIncomingCall(converter, item) { + return new vscode_1.CallHierarchyIncomingCall(asCallHierarchyItem(converter, item.from), converter.asRanges(item.fromRanges)); + } + protocol2code.asCallHierarchyIncomingCall = asCallHierarchyIncomingCall; + function asCallHierarchyIncomingCalls(converter, items) { + if (items === null) { + return undefined; + } + return items.map(item => asCallHierarchyIncomingCall(converter, item)); + } + protocol2code.asCallHierarchyIncomingCalls = asCallHierarchyIncomingCalls; + function asCallHierarchyOutgoingCall(converter, item) { + return new vscode_1.CallHierarchyOutgoingCall(asCallHierarchyItem(converter, item.to), converter.asRanges(item.fromRanges)); + } + protocol2code.asCallHierarchyOutgoingCall = asCallHierarchyOutgoingCall; + function asCallHierarchyOutgoingCalls(converter, items) { + if (items === null) { + return undefined; + } + return items.map(item => asCallHierarchyOutgoingCall(converter, item)); + } + protocol2code.asCallHierarchyOutgoingCalls = asCallHierarchyOutgoingCalls; +})(protocol2code || (protocol2code = {})); +var code2protocol; +(function (code2protocol) { + function asCallHierarchyItem(converter, value) { + const result = { + name: value.name, + kind: converter.asSymbolKind(value.kind), + uri: converter.asUri(value.uri), + range: converter.asRange(value.range), + selectionRange: converter.asRange(value.selectionRange) + }; + if (value.detail !== undefined && value.detail.length > 0) { + result.detail = value.detail; + } + if (value.tags !== undefined) { + result.tags = converter.asSymbolTags(value.tags); + } + return result; + } + code2protocol.asCallHierarchyItem = asCallHierarchyItem; +})(code2protocol || (code2protocol = {})); +class CallHierarchyProvider { + constructor(client) { + this.client = client; + this.middleware = client.clientOptions.middleware; + } + prepareCallHierarchy(document, position, token) { + const client = this.client; + const middleware = this.middleware; + const prepareCallHierarchy = (document, position, token) => { + const params = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position); + return client.sendRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type, params, token).then((result) => { + return protocol2code.asCallHierarchyItems(this.client.protocol2CodeConverter, result); + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type, error); + return Promise.resolve(null); + }); + }; + return middleware.prepareCallHierarchy + ? middleware.prepareCallHierarchy(document, position, token, prepareCallHierarchy) + : prepareCallHierarchy(document, position, token); + } + provideCallHierarchyIncomingCalls(item, token) { + const client = this.client; + const middleware = this.middleware; + const provideCallHierarchyIncomingCalls = (item, token) => { + const params = { + item: code2protocol.asCallHierarchyItem(client.code2ProtocolConverter, item) + }; + return client.sendRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyIncomingCallsRequest.type, params, token).then((result) => { + return protocol2code.asCallHierarchyIncomingCalls(client.protocol2CodeConverter, result); + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyIncomingCallsRequest.type, error); + return Promise.resolve(null); + }); + }; + return middleware.provideCallHierarchyIncomingCalls + ? middleware.provideCallHierarchyIncomingCalls(item, token, provideCallHierarchyIncomingCalls) + : provideCallHierarchyIncomingCalls(item, token); + } + provideCallHierarchyOutgoingCalls(item, token) { + const client = this.client; + const middleware = this.middleware; + const provideCallHierarchyOutgoingCalls = (item, token) => { + const params = { + item: code2protocol.asCallHierarchyItem(client.code2ProtocolConverter, item) + }; + return client.sendRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyOutgoingCallsRequest.type, params, token).then((result) => { + return protocol2code.asCallHierarchyOutgoingCalls(client.protocol2CodeConverter, result); + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyOutgoingCallsRequest.type, error); + return Promise.resolve(null); + }); + }; + return middleware.provideCallHierarchyOutgingCalls + ? middleware.provideCallHierarchyOutgingCalls(item, token, provideCallHierarchyOutgoingCalls) + : provideCallHierarchyOutgoingCalls(item, token); + } +} +class CallHierarchyFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type); + } + fillClientCapabilities(cap) { + const capabilites = cap; + const capability = ensure(ensure(capabilites, 'textDocument'), 'callHierarchy'); + capability.dynamicRegistration = true; + } + initialize(cap, documentSelector) { + const capabilities = cap; + const [id, options] = this.getRegistration(documentSelector, capabilities.callHierarchyProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const client = this._client; + const provider = new CallHierarchyProvider(client); + return [vscode_1.languages.registerCallHierarchyProvider(options.documentSelector, provider), provider]; + } +} +exports.CallHierarchyFeature = CallHierarchyFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/client.js": +/*!***********************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/client.js ***! + \***********************************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/*! CommonJS bailout: exports.hasOwnProperty(...) prevents optimization as exports is passed as call context at 7:26-48 */ +/*! CommonJS bailout: exports is used directly at 7:53-60 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const c2p = __webpack_require__(/*! ./codeConverter */ "../node_modules/vscode-languageclient/lib/codeConverter.js"); +const p2c = __webpack_require__(/*! ./protocolConverter */ "../node_modules/vscode-languageclient/lib/protocolConverter.js"); +const Is = __webpack_require__(/*! ./utils/is */ "../node_modules/vscode-languageclient/lib/utils/is.js"); +const async_1 = __webpack_require__(/*! ./utils/async */ "../node_modules/vscode-languageclient/lib/utils/async.js"); +const UUID = __webpack_require__(/*! ./utils/uuid */ "../node_modules/vscode-languageclient/lib/utils/uuid.js"); +const progressPart_1 = __webpack_require__(/*! ./progressPart */ "../node_modules/vscode-languageclient/lib/progressPart.js"); +__export(__webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js")); +class ConsoleLogger { + error(message) { + console.error(message); + } + warn(message) { + console.warn(message); + } + info(message) { + console.info(message); + } + log(message) { + console.log(message); + } +} +function createConnection(input, output, errorHandler, closeHandler) { + let logger = new ConsoleLogger(); + let connection = vscode_languageserver_protocol_1.createProtocolConnection(input, output, logger); + connection.onError((data) => { errorHandler(data[0], data[1], data[2]); }); + connection.onClose(closeHandler); + let result = { + listen: () => connection.listen(), + sendRequest: (type, ...params) => connection.sendRequest(Is.string(type) ? type : type.method, ...params), + onRequest: (type, handler) => connection.onRequest(Is.string(type) ? type : type.method, handler), + sendNotification: (type, params) => connection.sendNotification(Is.string(type) ? type : type.method, params), + onNotification: (type, handler) => connection.onNotification(Is.string(type) ? type : type.method, handler), + onProgress: connection.onProgress, + sendProgress: connection.sendProgress, + trace: (value, tracer, sendNotificationOrTraceOptions) => { + const defaultTraceOptions = { + sendNotification: false, + traceFormat: vscode_languageserver_protocol_1.TraceFormat.Text + }; + if (sendNotificationOrTraceOptions === void 0) { + connection.trace(value, tracer, defaultTraceOptions); + } + else if (Is.boolean(sendNotificationOrTraceOptions)) { + connection.trace(value, tracer, sendNotificationOrTraceOptions); + } + else { + connection.trace(value, tracer, sendNotificationOrTraceOptions); + } + }, + initialize: (params) => connection.sendRequest(vscode_languageserver_protocol_1.InitializeRequest.type, params), + shutdown: () => connection.sendRequest(vscode_languageserver_protocol_1.ShutdownRequest.type, undefined), + exit: () => connection.sendNotification(vscode_languageserver_protocol_1.ExitNotification.type), + onLogMessage: (handler) => connection.onNotification(vscode_languageserver_protocol_1.LogMessageNotification.type, handler), + onShowMessage: (handler) => connection.onNotification(vscode_languageserver_protocol_1.ShowMessageNotification.type, handler), + onTelemetry: (handler) => connection.onNotification(vscode_languageserver_protocol_1.TelemetryEventNotification.type, handler), + didChangeConfiguration: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, params), + didChangeWatchedFiles: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type, params), + didOpenTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, params), + didChangeTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params), + didCloseTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, params), + didSaveTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type, params), + onDiagnostics: (handler) => connection.onNotification(vscode_languageserver_protocol_1.PublishDiagnosticsNotification.type, handler), + dispose: () => connection.dispose() + }; + return result; +} +/** + * An action to be performed when the connection is producing errors. + */ +var ErrorAction; +(function (ErrorAction) { + /** + * Continue running the server. + */ + ErrorAction[ErrorAction["Continue"] = 1] = "Continue"; + /** + * Shutdown the server. + */ + ErrorAction[ErrorAction["Shutdown"] = 2] = "Shutdown"; +})(ErrorAction = exports.ErrorAction || (exports.ErrorAction = {})); +/** + * An action to be performed when the connection to a server got closed. + */ +var CloseAction; +(function (CloseAction) { + /** + * Don't restart the server. The connection stays closed. + */ + CloseAction[CloseAction["DoNotRestart"] = 1] = "DoNotRestart"; + /** + * Restart the server. + */ + CloseAction[CloseAction["Restart"] = 2] = "Restart"; +})(CloseAction = exports.CloseAction || (exports.CloseAction = {})); +class DefaultErrorHandler { + constructor(name) { + this.name = name; + this.restarts = []; + } + error(_error, _message, count) { + if (count && count <= 3) { + return ErrorAction.Continue; + } + return ErrorAction.Shutdown; + } + closed() { + this.restarts.push(Date.now()); + if (this.restarts.length < 5) { + return CloseAction.Restart; + } + else { + let diff = this.restarts[this.restarts.length - 1] - this.restarts[0]; + if (diff <= 3 * 60 * 1000) { + vscode_1.window.showErrorMessage(`The ${this.name} server crashed 5 times in the last 3 minutes. The server will not be restarted.`); + return CloseAction.DoNotRestart; + } + else { + this.restarts.shift(); + return CloseAction.Restart; + } + } + } +} +var RevealOutputChannelOn; +(function (RevealOutputChannelOn) { + RevealOutputChannelOn[RevealOutputChannelOn["Info"] = 1] = "Info"; + RevealOutputChannelOn[RevealOutputChannelOn["Warn"] = 2] = "Warn"; + RevealOutputChannelOn[RevealOutputChannelOn["Error"] = 3] = "Error"; + RevealOutputChannelOn[RevealOutputChannelOn["Never"] = 4] = "Never"; +})(RevealOutputChannelOn = exports.RevealOutputChannelOn || (exports.RevealOutputChannelOn = {})); +var State; +(function (State) { + State[State["Stopped"] = 1] = "Stopped"; + State[State["Starting"] = 3] = "Starting"; + State[State["Running"] = 2] = "Running"; +})(State = exports.State || (exports.State = {})); +var ClientState; +(function (ClientState) { + ClientState[ClientState["Initial"] = 0] = "Initial"; + ClientState[ClientState["Starting"] = 1] = "Starting"; + ClientState[ClientState["StartFailed"] = 2] = "StartFailed"; + ClientState[ClientState["Running"] = 3] = "Running"; + ClientState[ClientState["Stopping"] = 4] = "Stopping"; + ClientState[ClientState["Stopped"] = 5] = "Stopped"; +})(ClientState || (ClientState = {})); +const SupportedSymbolKinds = [ + vscode_languageserver_protocol_1.SymbolKind.File, + vscode_languageserver_protocol_1.SymbolKind.Module, + vscode_languageserver_protocol_1.SymbolKind.Namespace, + vscode_languageserver_protocol_1.SymbolKind.Package, + vscode_languageserver_protocol_1.SymbolKind.Class, + vscode_languageserver_protocol_1.SymbolKind.Method, + vscode_languageserver_protocol_1.SymbolKind.Property, + vscode_languageserver_protocol_1.SymbolKind.Field, + vscode_languageserver_protocol_1.SymbolKind.Constructor, + vscode_languageserver_protocol_1.SymbolKind.Enum, + vscode_languageserver_protocol_1.SymbolKind.Interface, + vscode_languageserver_protocol_1.SymbolKind.Function, + vscode_languageserver_protocol_1.SymbolKind.Variable, + vscode_languageserver_protocol_1.SymbolKind.Constant, + vscode_languageserver_protocol_1.SymbolKind.String, + vscode_languageserver_protocol_1.SymbolKind.Number, + vscode_languageserver_protocol_1.SymbolKind.Boolean, + vscode_languageserver_protocol_1.SymbolKind.Array, + vscode_languageserver_protocol_1.SymbolKind.Object, + vscode_languageserver_protocol_1.SymbolKind.Key, + vscode_languageserver_protocol_1.SymbolKind.Null, + vscode_languageserver_protocol_1.SymbolKind.EnumMember, + vscode_languageserver_protocol_1.SymbolKind.Struct, + vscode_languageserver_protocol_1.SymbolKind.Event, + vscode_languageserver_protocol_1.SymbolKind.Operator, + vscode_languageserver_protocol_1.SymbolKind.TypeParameter +]; +const SupportedCompletionItemKinds = [ + vscode_languageserver_protocol_1.CompletionItemKind.Text, + vscode_languageserver_protocol_1.CompletionItemKind.Method, + vscode_languageserver_protocol_1.CompletionItemKind.Function, + vscode_languageserver_protocol_1.CompletionItemKind.Constructor, + vscode_languageserver_protocol_1.CompletionItemKind.Field, + vscode_languageserver_protocol_1.CompletionItemKind.Variable, + vscode_languageserver_protocol_1.CompletionItemKind.Class, + vscode_languageserver_protocol_1.CompletionItemKind.Interface, + vscode_languageserver_protocol_1.CompletionItemKind.Module, + vscode_languageserver_protocol_1.CompletionItemKind.Property, + vscode_languageserver_protocol_1.CompletionItemKind.Unit, + vscode_languageserver_protocol_1.CompletionItemKind.Value, + vscode_languageserver_protocol_1.CompletionItemKind.Enum, + vscode_languageserver_protocol_1.CompletionItemKind.Keyword, + vscode_languageserver_protocol_1.CompletionItemKind.Snippet, + vscode_languageserver_protocol_1.CompletionItemKind.Color, + vscode_languageserver_protocol_1.CompletionItemKind.File, + vscode_languageserver_protocol_1.CompletionItemKind.Reference, + vscode_languageserver_protocol_1.CompletionItemKind.Folder, + vscode_languageserver_protocol_1.CompletionItemKind.EnumMember, + vscode_languageserver_protocol_1.CompletionItemKind.Constant, + vscode_languageserver_protocol_1.CompletionItemKind.Struct, + vscode_languageserver_protocol_1.CompletionItemKind.Event, + vscode_languageserver_protocol_1.CompletionItemKind.Operator, + vscode_languageserver_protocol_1.CompletionItemKind.TypeParameter +]; +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +var DynamicFeature; +(function (DynamicFeature) { + function is(value) { + let candidate = value; + return candidate && Is.func(candidate.register) && Is.func(candidate.unregister) && Is.func(candidate.dispose) && candidate.messages !== void 0; + } + DynamicFeature.is = is; +})(DynamicFeature || (DynamicFeature = {})); +class DocumentNotifiactions { + constructor(_client, _event, _type, _middleware, _createParams, _selectorFilter) { + this._client = _client; + this._event = _event; + this._type = _type; + this._middleware = _middleware; + this._createParams = _createParams; + this._selectorFilter = _selectorFilter; + this._selectors = new Map(); + } + static textDocumentFilter(selectors, textDocument) { + for (const selector of selectors) { + if (vscode_1.languages.match(selector, textDocument)) { + return true; + } + } + return false; + } + register(_message, data) { + if (!data.registerOptions.documentSelector) { + return; + } + if (!this._listener) { + this._listener = this._event(this.callback, this); + } + this._selectors.set(data.id, data.registerOptions.documentSelector); + } + callback(data) { + if (!this._selectorFilter || this._selectorFilter(this._selectors.values(), data)) { + if (this._middleware) { + this._middleware(data, (data) => this._client.sendNotification(this._type, this._createParams(data))); + } + else { + this._client.sendNotification(this._type, this._createParams(data)); + } + this.notificationSent(data); + } + } + notificationSent(_data) { + } + unregister(id) { + this._selectors.delete(id); + if (this._selectors.size === 0 && this._listener) { + this._listener.dispose(); + this._listener = undefined; + } + } + dispose() { + this._selectors.clear(); + if (this._listener) { + this._listener.dispose(); + this._listener = undefined; + } + } + getProvider(document) { + for (const selector of this._selectors.values()) { + if (vscode_1.languages.match(selector, document)) { + return { + send: (data) => { + this.callback(data); + } + }; + } + } + throw new Error(`No provider available for the given text document`); + } +} +class DidOpenTextDocumentFeature extends DocumentNotifiactions { + constructor(client, _syncedDocuments) { + super(client, vscode_1.workspace.onDidOpenTextDocument, vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, client.clientOptions.middleware.didOpen, (textDocument) => client.code2ProtocolConverter.asOpenTextDocumentParams(textDocument), DocumentNotifiactions.textDocumentFilter); + this._syncedDocuments = _syncedDocuments; + } + get messages() { + return vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync; + if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) { + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } }); + } + } + register(message, data) { + super.register(message, data); + if (!data.registerOptions.documentSelector) { + return; + } + let documentSelector = data.registerOptions.documentSelector; + vscode_1.workspace.textDocuments.forEach((textDocument) => { + let uri = textDocument.uri.toString(); + if (this._syncedDocuments.has(uri)) { + return; + } + if (vscode_1.languages.match(documentSelector, textDocument)) { + let middleware = this._client.clientOptions.middleware; + let didOpen = (textDocument) => { + this._client.sendNotification(this._type, this._createParams(textDocument)); + }; + if (middleware.didOpen) { + middleware.didOpen(textDocument, didOpen); + } + else { + didOpen(textDocument); + } + this._syncedDocuments.set(uri, textDocument); + } + }); + } + notificationSent(textDocument) { + super.notificationSent(textDocument); + this._syncedDocuments.set(textDocument.uri.toString(), textDocument); + } +} +class DidCloseTextDocumentFeature extends DocumentNotifiactions { + constructor(client, _syncedDocuments) { + super(client, vscode_1.workspace.onDidCloseTextDocument, vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, client.clientOptions.middleware.didClose, (textDocument) => client.code2ProtocolConverter.asCloseTextDocumentParams(textDocument), DocumentNotifiactions.textDocumentFilter); + this._syncedDocuments = _syncedDocuments; + } + get messages() { + return vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync; + if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) { + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } }); + } + } + notificationSent(textDocument) { + super.notificationSent(textDocument); + this._syncedDocuments.delete(textDocument.uri.toString()); + } + unregister(id) { + let selector = this._selectors.get(id); + // The super call removed the selector from the map + // of selectors. + super.unregister(id); + let selectors = this._selectors.values(); + this._syncedDocuments.forEach((textDocument) => { + if (vscode_1.languages.match(selector, textDocument) && !this._selectorFilter(selectors, textDocument)) { + let middleware = this._client.clientOptions.middleware; + let didClose = (textDocument) => { + this._client.sendNotification(this._type, this._createParams(textDocument)); + }; + this._syncedDocuments.delete(textDocument.uri.toString()); + if (middleware.didClose) { + middleware.didClose(textDocument, didClose); + } + else { + didClose(textDocument); + } + } + }); + } +} +class DidChangeTextDocumentFeature { + constructor(_client) { + this._client = _client; + this._changeData = new Map(); + this._forcingDelivery = false; + } + get messages() { + return vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync; + if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.change !== void 0 && textDocumentSyncOptions.change !== vscode_languageserver_protocol_1.TextDocumentSyncKind.None) { + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: Object.assign({}, { documentSelector: documentSelector }, { syncKind: textDocumentSyncOptions.change }) + }); + } + } + register(_message, data) { + if (!data.registerOptions.documentSelector) { + return; + } + if (!this._listener) { + this._listener = vscode_1.workspace.onDidChangeTextDocument(this.callback, this); + } + this._changeData.set(data.id, { + documentSelector: data.registerOptions.documentSelector, + syncKind: data.registerOptions.syncKind + }); + } + callback(event) { + // Text document changes are send for dirty changes as well. We don't + // have dirty / undirty events in the LSP so we ignore content changes + // with length zero. + if (event.contentChanges.length === 0) { + return; + } + for (const changeData of this._changeData.values()) { + if (vscode_1.languages.match(changeData.documentSelector, event.document)) { + let middleware = this._client.clientOptions.middleware; + if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental) { + let params = this._client.code2ProtocolConverter.asChangeTextDocumentParams(event); + if (middleware.didChange) { + middleware.didChange(event, () => this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params)); + } + else { + this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params); + } + } + else if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) { + let didChange = (event) => { + if (this._changeDelayer) { + if (this._changeDelayer.uri !== event.document.uri.toString()) { + // Use this force delivery to track boolean state. Otherwise we might call two times. + this.forceDelivery(); + this._changeDelayer.uri = event.document.uri.toString(); + } + this._changeDelayer.delayer.trigger(() => { + this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, this._client.code2ProtocolConverter.asChangeTextDocumentParams(event.document)); + }); + } + else { + this._changeDelayer = { + uri: event.document.uri.toString(), + delayer: new async_1.Delayer(200) + }; + this._changeDelayer.delayer.trigger(() => { + this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, this._client.code2ProtocolConverter.asChangeTextDocumentParams(event.document)); + }, -1); + } + }; + if (middleware.didChange) { + middleware.didChange(event, didChange); + } + else { + didChange(event); + } + } + } + } + } + unregister(id) { + this._changeData.delete(id); + if (this._changeData.size === 0 && this._listener) { + this._listener.dispose(); + this._listener = undefined; + } + } + dispose() { + this._changeDelayer = undefined; + this._forcingDelivery = false; + this._changeData.clear(); + if (this._listener) { + this._listener.dispose(); + this._listener = undefined; + } + } + forceDelivery() { + if (this._forcingDelivery || !this._changeDelayer) { + return; + } + try { + this._forcingDelivery = true; + this._changeDelayer.delayer.forceDelivery(); + } + finally { + this._forcingDelivery = false; + } + } + getProvider(document) { + for (const changeData of this._changeData.values()) { + if (vscode_1.languages.match(changeData.documentSelector, document)) { + return { + send: (event) => { + this.callback(event); + } + }; + } + } + throw new Error(`No provider available for the given text document`); + } +} +class WillSaveFeature extends DocumentNotifiactions { + constructor(client) { + super(client, vscode_1.workspace.onWillSaveTextDocument, vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type, client.clientOptions.middleware.willSave, (willSaveEvent) => client.code2ProtocolConverter.asWillSaveTextDocumentParams(willSaveEvent), (selectors, willSaveEvent) => DocumentNotifiactions.textDocumentFilter(selectors, willSaveEvent.document)); + } + get messages() { + return vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type; + } + fillClientCapabilities(capabilities) { + let value = ensure(ensure(capabilities, 'textDocument'), 'synchronization'); + value.willSave = true; + } + initialize(capabilities, documentSelector) { + let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync; + if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSave) { + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: { documentSelector: documentSelector } + }); + } + } +} +class WillSaveWaitUntilFeature { + constructor(_client) { + this._client = _client; + this._selectors = new Map(); + } + get messages() { + return vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type; + } + fillClientCapabilities(capabilities) { + let value = ensure(ensure(capabilities, 'textDocument'), 'synchronization'); + value.willSaveWaitUntil = true; + } + initialize(capabilities, documentSelector) { + let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync; + if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSaveWaitUntil) { + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: { documentSelector: documentSelector } + }); + } + } + register(_message, data) { + if (!data.registerOptions.documentSelector) { + return; + } + if (!this._listener) { + this._listener = vscode_1.workspace.onWillSaveTextDocument(this.callback, this); + } + this._selectors.set(data.id, data.registerOptions.documentSelector); + } + callback(event) { + if (DocumentNotifiactions.textDocumentFilter(this._selectors.values(), event.document)) { + let middleware = this._client.clientOptions.middleware; + let willSaveWaitUntil = (event) => { + return this._client.sendRequest(vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type, this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(event)).then((edits) => { + let vEdits = this._client.protocol2CodeConverter.asTextEdits(edits); + return vEdits === void 0 ? [] : vEdits; + }); + }; + event.waitUntil(middleware.willSaveWaitUntil + ? middleware.willSaveWaitUntil(event, willSaveWaitUntil) + : willSaveWaitUntil(event)); + } + } + unregister(id) { + this._selectors.delete(id); + if (this._selectors.size === 0 && this._listener) { + this._listener.dispose(); + this._listener = undefined; + } + } + dispose() { + this._selectors.clear(); + if (this._listener) { + this._listener.dispose(); + this._listener = undefined; + } + } +} +class DidSaveTextDocumentFeature extends DocumentNotifiactions { + constructor(client) { + super(client, vscode_1.workspace.onDidSaveTextDocument, vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type, client.clientOptions.middleware.didSave, (textDocument) => client.code2ProtocolConverter.asSaveTextDocumentParams(textDocument, this._includeText), DocumentNotifiactions.textDocumentFilter); + } + get messages() { + return vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'textDocument'), 'synchronization').didSave = true; + } + initialize(capabilities, documentSelector) { + let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync; + if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.save) { + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: Object.assign({}, { documentSelector: documentSelector }, { includeText: !!textDocumentSyncOptions.save.includeText }) + }); + } + } + register(method, data) { + this._includeText = !!data.registerOptions.includeText; + super.register(method, data); + } +} +class FileSystemWatcherFeature { + constructor(_client, _notifyFileEvent) { + this._client = _client; + this._notifyFileEvent = _notifyFileEvent; + this._watchers = new Map(); + } + get messages() { + return vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'workspace'), 'didChangeWatchedFiles').dynamicRegistration = true; + } + initialize(_capabilities, _documentSelector) { + } + register(_method, data) { + if (!Array.isArray(data.registerOptions.watchers)) { + return; + } + let disposeables = []; + for (let watcher of data.registerOptions.watchers) { + if (!Is.string(watcher.globPattern)) { + continue; + } + let watchCreate = true, watchChange = true, watchDelete = true; + if (watcher.kind !== void 0 && watcher.kind !== null) { + watchCreate = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Create) !== 0; + watchChange = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Change) !== 0; + watchDelete = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Delete) !== 0; + } + let fileSystemWatcher = vscode_1.workspace.createFileSystemWatcher(watcher.globPattern, !watchCreate, !watchChange, !watchDelete); + this.hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete); + disposeables.push(fileSystemWatcher); + } + this._watchers.set(data.id, disposeables); + } + registerRaw(id, fileSystemWatchers) { + let disposeables = []; + for (let fileSystemWatcher of fileSystemWatchers) { + this.hookListeners(fileSystemWatcher, true, true, true, disposeables); + } + this._watchers.set(id, disposeables); + } + hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete, listeners) { + if (watchCreate) { + fileSystemWatcher.onDidCreate((resource) => this._notifyFileEvent({ + uri: this._client.code2ProtocolConverter.asUri(resource), + type: vscode_languageserver_protocol_1.FileChangeType.Created + }), null, listeners); + } + if (watchChange) { + fileSystemWatcher.onDidChange((resource) => this._notifyFileEvent({ + uri: this._client.code2ProtocolConverter.asUri(resource), + type: vscode_languageserver_protocol_1.FileChangeType.Changed + }), null, listeners); + } + if (watchDelete) { + fileSystemWatcher.onDidDelete((resource) => this._notifyFileEvent({ + uri: this._client.code2ProtocolConverter.asUri(resource), + type: vscode_languageserver_protocol_1.FileChangeType.Deleted + }), null, listeners); + } + } + unregister(id) { + let disposeables = this._watchers.get(id); + if (disposeables) { + for (let disposable of disposeables) { + disposable.dispose(); + } + } + } + dispose() { + this._watchers.forEach((disposeables) => { + for (let disposable of disposeables) { + disposable.dispose(); + } + }); + this._watchers.clear(); + } +} +class TextDocumentFeature { + constructor(_client, _message) { + this._client = _client; + this._message = _message; + this._registrations = new Map(); + } + get messages() { + return this._message; + } + register(message, data) { + if (message.method !== this.messages.method) { + throw new Error(`Register called on wrong feature. Requested ${message.method} but reached feature ${this.messages.method}`); + } + if (!data.registerOptions.documentSelector) { + return; + } + let registration = this.registerLanguageProvider(data.registerOptions); + this._registrations.set(data.id, { disposable: registration[0], data, provider: registration[1] }); + } + unregister(id) { + let registration = this._registrations.get(id); + if (registration !== undefined) { + registration.disposable.dispose(); + } + } + dispose() { + this._registrations.forEach((value) => { + value.disposable.dispose(); + }); + this._registrations.clear(); + } + getRegistration(documentSelector, capability) { + if (!capability) { + return [undefined, undefined]; + } + else if (vscode_languageserver_protocol_1.TextDocumentRegistrationOptions.is(capability)) { + const id = vscode_languageserver_protocol_1.StaticRegistrationOptions.hasId(capability) ? capability.id : UUID.generateUuid(); + const selector = capability.documentSelector || documentSelector; + if (selector) { + return [id, Object.assign({}, capability, { documentSelector: selector })]; + } + } + else if (Is.boolean(capability) && capability === true || vscode_languageserver_protocol_1.WorkDoneProgressOptions.is(capability)) { + if (!documentSelector) { + return [undefined, undefined]; + } + let options = (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector })); + return [UUID.generateUuid(), options]; + } + return [undefined, undefined]; + } + getRegistrationOptions(documentSelector, capability) { + if (!documentSelector || !capability) { + return undefined; + } + return (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector })); + } + getProvider(textDocument) { + for (const registration of this._registrations.values()) { + let selector = registration.data.registerOptions.documentSelector; + if (selector !== null && vscode_1.languages.match(selector, textDocument)) { + return registration.provider; + } + } + throw new Error(`The feature has no registration for the provided text document ${textDocument.uri.toString()}`); + } +} +exports.TextDocumentFeature = TextDocumentFeature; +class WorkspaceFeature { + constructor(_client, _message) { + this._client = _client; + this._message = _message; + this._registrations = new Map(); + } + get messages() { + return this._message; + } + register(message, data) { + if (message.method !== this.messages.method) { + throw new Error(`Register called on wron feature. Requested ${message.method} but reached feature ${this.messages.method}`); + } + const registration = this.registerLanguageProvider(data.registerOptions); + this._registrations.set(data.id, { disposable: registration[0], provider: registration[1] }); + } + unregister(id) { + let registration = this._registrations.get(id); + if (registration !== undefined) { + registration.disposable.dispose(); + } + } + dispose() { + this._registrations.forEach((registration) => { + registration.disposable.dispose(); + }); + this._registrations.clear(); + } + getProviders() { + const result = []; + for (const registration of this._registrations.values()) { + result.push(registration.provider); + } + return result; + } +} +class CompletionItemFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.CompletionRequest.type); + } + fillClientCapabilities(capabilites) { + let completion = ensure(ensure(capabilites, 'textDocument'), 'completion'); + completion.dynamicRegistration = true; + completion.contextSupport = true; + completion.completionItem = { + snippetSupport: true, + commitCharactersSupport: true, + documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText], + deprecatedSupport: true, + preselectSupport: true, + tagSupport: { valueSet: [vscode_languageserver_protocol_1.CompletionItemTag.Deprecated] } + }; + completion.completionItemKind = { valueSet: SupportedCompletionItemKinds }; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.completionProvider); + if (!options) { + return; + } + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: options + }); + } + registerLanguageProvider(options) { + const triggerCharacters = options.triggerCharacters || []; + const provider = { + provideCompletionItems: (document, position, token, context) => { + const client = this._client; + const middleware = this._client.clientOptions.middleware; + const provideCompletionItems = (document, position, context, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.CompletionRequest.type, client.code2ProtocolConverter.asCompletionParams(document, position, context), token).then(client.protocol2CodeConverter.asCompletionResult, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.CompletionRequest.type, error); + return Promise.resolve([]); + }); + }; + return middleware.provideCompletionItem + ? middleware.provideCompletionItem(document, position, context, token, provideCompletionItems) + : provideCompletionItems(document, position, context, token); + }, + resolveCompletionItem: options.resolveProvider + ? (item, token) => { + const client = this._client; + const middleware = this._client.clientOptions.middleware; + const resolveCompletionItem = (item, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, client.code2ProtocolConverter.asCompletionItem(item), token).then(client.protocol2CodeConverter.asCompletionItem, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, error); + return Promise.resolve(item); + }); + }; + return middleware.resolveCompletionItem + ? middleware.resolveCompletionItem(item, token, resolveCompletionItem) + : resolveCompletionItem(item, token); + } + : undefined + }; + return [vscode_1.languages.registerCompletionItemProvider(options.documentSelector, provider, ...triggerCharacters), provider]; + } +} +class HoverFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.HoverRequest.type); + } + fillClientCapabilities(capabilites) { + const hoverCapability = (ensure(ensure(capabilites, 'textDocument'), 'hover')); + hoverCapability.dynamicRegistration = true; + hoverCapability.contentFormat = [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText]; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.hoverProvider); + if (!options) { + return; + } + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: options + }); + } + registerLanguageProvider(options) { + const provider = { + provideHover: (document, position, token) => { + const client = this._client; + const provideHover = (document, position, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.HoverRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asHover, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.HoverRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideHover + ? middleware.provideHover(document, position, token, provideHover) + : provideHover(document, position, token); + } + }; + return [vscode_1.languages.registerHoverProvider(options.documentSelector, provider), provider]; + } +} +class SignatureHelpFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.SignatureHelpRequest.type); + } + fillClientCapabilities(capabilites) { + let config = ensure(ensure(capabilites, 'textDocument'), 'signatureHelp'); + config.dynamicRegistration = true; + config.signatureInformation = { documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText] }; + config.signatureInformation.parameterInformation = { labelOffsetSupport: true }; + config.contextSupport = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.signatureHelpProvider); + if (!options) { + return; + } + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: options + }); + } + registerLanguageProvider(options) { + const provider = { + provideSignatureHelp: (document, position, token, context) => { + const client = this._client; + const providerSignatureHelp = (document, position, context, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, client.code2ProtocolConverter.asSignatureHelpParams(document, position, context), token).then(client.protocol2CodeConverter.asSignatureHelp, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideSignatureHelp + ? middleware.provideSignatureHelp(document, position, context, token, providerSignatureHelp) + : providerSignatureHelp(document, position, context, token); + } + }; + let disposable; + if (options.retriggerCharacters === undefined) { + const triggerCharacters = options.triggerCharacters || []; + disposable = vscode_1.languages.registerSignatureHelpProvider(options.documentSelector, provider, ...triggerCharacters); + } + else { + const metaData = { + triggerCharacters: options.triggerCharacters || [], + retriggerCharacters: options.retriggerCharacters || [] + }; + disposable = vscode_1.languages.registerSignatureHelpProvider(options.documentSelector, provider, metaData); + } + return [disposable, provider]; + } +} +class DefinitionFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DefinitionRequest.type); + } + fillClientCapabilities(capabilites) { + let definitionSupport = ensure(ensure(capabilites, 'textDocument'), 'definition'); + definitionSupport.dynamicRegistration = true; + definitionSupport.linkSupport = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.definitionProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDefinition: (document, position, token) => { + const client = this._client; + const provideDefinition = (document, position, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDefinitionResult, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDefinition + ? middleware.provideDefinition(document, position, token, provideDefinition) + : provideDefinition(document, position, token); + } + }; + return [vscode_1.languages.registerDefinitionProvider(options.documentSelector, provider), provider]; + } +} +class ReferencesFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.ReferencesRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'references').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.referencesProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideReferences: (document, position, options, token) => { + const client = this._client; + const _providerReferences = (document, position, options, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, client.code2ProtocolConverter.asReferenceParams(document, position, options), token).then(client.protocol2CodeConverter.asReferences, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideReferences + ? middleware.provideReferences(document, position, options, token, _providerReferences) + : _providerReferences(document, position, options, token); + } + }; + return [vscode_1.languages.registerReferenceProvider(options.documentSelector, provider), provider]; + } +} +class DocumentHighlightFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentHighlightRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'documentHighlight').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.documentHighlightProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDocumentHighlights: (document, position, token) => { + const client = this._client; + const _provideDocumentHighlights = (document, position, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDocumentHighlights, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDocumentHighlights + ? middleware.provideDocumentHighlights(document, position, token, _provideDocumentHighlights) + : _provideDocumentHighlights(document, position, token); + } + }; + return [vscode_1.languages.registerDocumentHighlightProvider(options.documentSelector, provider), provider]; + } +} +class DocumentSymbolFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentSymbolRequest.type); + } + fillClientCapabilities(capabilites) { + let symbolCapabilities = ensure(ensure(capabilites, 'textDocument'), 'documentSymbol'); + symbolCapabilities.dynamicRegistration = true; + symbolCapabilities.symbolKind = { + valueSet: SupportedSymbolKinds + }; + symbolCapabilities.hierarchicalDocumentSymbolSupport = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.documentSymbolProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDocumentSymbols: (document, token) => { + const client = this._client; + const _provideDocumentSymbols = (document, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, client.code2ProtocolConverter.asDocumentSymbolParams(document), token).then((data) => { + if (data === null) { + return undefined; + } + if (data.length === 0) { + return []; + } + else { + let element = data[0]; + if (vscode_languageserver_protocol_1.DocumentSymbol.is(element)) { + return client.protocol2CodeConverter.asDocumentSymbols(data); + } + else { + return client.protocol2CodeConverter.asSymbolInformations(data); + } + } + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDocumentSymbols + ? middleware.provideDocumentSymbols(document, token, _provideDocumentSymbols) + : _provideDocumentSymbols(document, token); + } + }; + return [vscode_1.languages.registerDocumentSymbolProvider(options.documentSelector, provider), provider]; + } +} +class WorkspaceSymbolFeature extends WorkspaceFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type); + } + fillClientCapabilities(capabilites) { + let symbolCapabilities = ensure(ensure(capabilites, 'workspace'), 'symbol'); + symbolCapabilities.dynamicRegistration = true; + symbolCapabilities.symbolKind = { + valueSet: SupportedSymbolKinds + }; + } + initialize(capabilities) { + if (!capabilities.workspaceSymbolProvider) { + return; + } + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: capabilities.workspaceSymbolProvider === true ? { workDoneProgress: false } : capabilities.workspaceSymbolProvider + }); + } + registerLanguageProvider(_options) { + const provider = { + provideWorkspaceSymbols: (query, token) => { + const client = this._client; + const provideWorkspaceSymbols = (query, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, { query }, token).then(client.protocol2CodeConverter.asSymbolInformations, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideWorkspaceSymbols + ? middleware.provideWorkspaceSymbols(query, token, provideWorkspaceSymbols) + : provideWorkspaceSymbols(query, token); + } + }; + return [vscode_1.languages.registerWorkspaceSymbolProvider(provider), provider]; + } +} +class CodeActionFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.CodeActionRequest.type); + } + fillClientCapabilities(capabilites) { + const cap = ensure(ensure(capabilites, 'textDocument'), 'codeAction'); + cap.dynamicRegistration = true; + cap.isPreferredSupport = true; + cap.codeActionLiteralSupport = { + codeActionKind: { + valueSet: [ + vscode_languageserver_protocol_1.CodeActionKind.Empty, + vscode_languageserver_protocol_1.CodeActionKind.QuickFix, + vscode_languageserver_protocol_1.CodeActionKind.Refactor, + vscode_languageserver_protocol_1.CodeActionKind.RefactorExtract, + vscode_languageserver_protocol_1.CodeActionKind.RefactorInline, + vscode_languageserver_protocol_1.CodeActionKind.RefactorRewrite, + vscode_languageserver_protocol_1.CodeActionKind.Source, + vscode_languageserver_protocol_1.CodeActionKind.SourceOrganizeImports + ] + } + }; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.codeActionProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideCodeActions: (document, range, context, token) => { + const client = this._client; + const _provideCodeActions = (document, range, context, token) => { + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + range: client.code2ProtocolConverter.asRange(range), + context: client.code2ProtocolConverter.asCodeActionContext(context) + }; + return client.sendRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, params, token).then((values) => { + if (values === null) { + return undefined; + } + const result = []; + for (let item of values) { + if (vscode_languageserver_protocol_1.Command.is(item)) { + result.push(client.protocol2CodeConverter.asCommand(item)); + } + else { + result.push(client.protocol2CodeConverter.asCodeAction(item)); + } + } + return result; + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideCodeActions + ? middleware.provideCodeActions(document, range, context, token, _provideCodeActions) + : _provideCodeActions(document, range, context, token); + } + }; + return [vscode_1.languages.registerCodeActionsProvider(options.documentSelector, provider, (options.codeActionKinds + ? { providedCodeActionKinds: this._client.protocol2CodeConverter.asCodeActionKinds(options.codeActionKinds) } + : undefined)), provider]; + } +} +class CodeLensFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.CodeLensRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'codeLens').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.codeLensProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideCodeLenses: (document, token) => { + const client = this._client; + const provideCodeLenses = (document, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, client.code2ProtocolConverter.asCodeLensParams(document), token).then(client.protocol2CodeConverter.asCodeLenses, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideCodeLenses + ? middleware.provideCodeLenses(document, token, provideCodeLenses) + : provideCodeLenses(document, token); + }, + resolveCodeLens: (options.resolveProvider) + ? (codeLens, token) => { + const client = this._client; + const resolveCodeLens = (codeLens, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, client.code2ProtocolConverter.asCodeLens(codeLens), token).then(client.protocol2CodeConverter.asCodeLens, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, error); + return codeLens; + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.resolveCodeLens + ? middleware.resolveCodeLens(codeLens, token, resolveCodeLens) + : resolveCodeLens(codeLens, token); + } + : undefined + }; + return [vscode_1.languages.registerCodeLensProvider(options.documentSelector, provider), provider]; + } +} +class DocumentFormattingFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentFormattingRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'formatting').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.documentFormattingProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDocumentFormattingEdits: (document, options, token) => { + const client = this._client; + const provideDocumentFormattingEdits = (document, options, token) => { + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + options: client.code2ProtocolConverter.asFormattingOptions(options) + }; + return client.sendRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, params, token).then(client.protocol2CodeConverter.asTextEdits, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDocumentFormattingEdits + ? middleware.provideDocumentFormattingEdits(document, options, token, provideDocumentFormattingEdits) + : provideDocumentFormattingEdits(document, options, token); + } + }; + return [vscode_1.languages.registerDocumentFormattingEditProvider(options.documentSelector, provider), provider]; + } +} +class DocumentRangeFormattingFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'rangeFormatting').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.documentRangeFormattingProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDocumentRangeFormattingEdits: (document, range, options, token) => { + const client = this._client; + const provideDocumentRangeFormattingEdits = (document, range, options, token) => { + let params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + range: client.code2ProtocolConverter.asRange(range), + options: client.code2ProtocolConverter.asFormattingOptions(options) + }; + return client.sendRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, params, token).then(client.protocol2CodeConverter.asTextEdits, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, error); + return Promise.resolve([]); + }); + }; + let middleware = client.clientOptions.middleware; + return middleware.provideDocumentRangeFormattingEdits + ? middleware.provideDocumentRangeFormattingEdits(document, range, options, token, provideDocumentRangeFormattingEdits) + : provideDocumentRangeFormattingEdits(document, range, options, token); + } + }; + return [vscode_1.languages.registerDocumentRangeFormattingEditProvider(options.documentSelector, provider), provider]; + } +} +class DocumentOnTypeFormattingFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'onTypeFormatting').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.documentOnTypeFormattingProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideOnTypeFormattingEdits: (document, position, ch, options, token) => { + const client = this._client; + const provideOnTypeFormattingEdits = (document, position, ch, options, token) => { + let params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + position: client.code2ProtocolConverter.asPosition(position), + ch: ch, + options: client.code2ProtocolConverter.asFormattingOptions(options) + }; + return client.sendRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, params, token).then(client.protocol2CodeConverter.asTextEdits, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideOnTypeFormattingEdits + ? middleware.provideOnTypeFormattingEdits(document, position, ch, options, token, provideOnTypeFormattingEdits) + : provideOnTypeFormattingEdits(document, position, ch, options, token); + } + }; + const moreTriggerCharacter = options.moreTriggerCharacter || []; + return [vscode_1.languages.registerOnTypeFormattingEditProvider(options.documentSelector, provider, options.firstTriggerCharacter, ...moreTriggerCharacter), provider]; + } +} +class RenameFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.RenameRequest.type); + } + fillClientCapabilities(capabilites) { + let rename = ensure(ensure(capabilites, 'textDocument'), 'rename'); + rename.dynamicRegistration = true; + rename.prepareSupport = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.renameProvider); + if (!options) { + return; + } + if (Is.boolean(capabilities.renameProvider)) { + options.prepareProvider = false; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideRenameEdits: (document, position, newName, token) => { + const client = this._client; + const provideRenameEdits = (document, position, newName, token) => { + let params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + position: client.code2ProtocolConverter.asPosition(position), + newName: newName + }; + return client.sendRequest(vscode_languageserver_protocol_1.RenameRequest.type, params, token).then(client.protocol2CodeConverter.asWorkspaceEdit, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.RenameRequest.type, error); + return Promise.reject(new Error(error.message)); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideRenameEdits + ? middleware.provideRenameEdits(document, position, newName, token, provideRenameEdits) + : provideRenameEdits(document, position, newName, token); + }, + prepareRename: options.prepareProvider + ? (document, position, token) => { + const client = this._client; + const prepareRename = (document, position, token) => { + let params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + position: client.code2ProtocolConverter.asPosition(position), + }; + return client.sendRequest(vscode_languageserver_protocol_1.PrepareRenameRequest.type, params, token).then((result) => { + if (vscode_languageserver_protocol_1.Range.is(result)) { + return client.protocol2CodeConverter.asRange(result); + } + else if (result && vscode_languageserver_protocol_1.Range.is(result.range)) { + return { + range: client.protocol2CodeConverter.asRange(result.range), + placeholder: result.placeholder + }; + } + // To cancel the rename vscode API expects a rejected promise. + return Promise.reject(new Error(`The element can't be renamed.`)); + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.PrepareRenameRequest.type, error); + return Promise.reject(new Error(error.message)); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.prepareRename + ? middleware.prepareRename(document, position, token, prepareRename) + : prepareRename(document, position, token); + } + : undefined + }; + return [vscode_1.languages.registerRenameProvider(options.documentSelector, provider), provider]; + } +} +class DocumentLinkFeature extends TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentLinkRequest.type); + } + fillClientCapabilities(capabilites) { + const documentLinkCapabilities = ensure(ensure(capabilites, 'textDocument'), 'documentLink'); + documentLinkCapabilities.dynamicRegistration = true; + documentLinkCapabilities.tooltipSupport = true; + } + initialize(capabilities, documentSelector) { + const options = this.getRegistrationOptions(documentSelector, capabilities.documentLinkProvider); + if (!options) { + return; + } + this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDocumentLinks: (document, token) => { + const client = this._client; + const provideDocumentLinks = (document, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, client.code2ProtocolConverter.asDocumentLinkParams(document), token).then(client.protocol2CodeConverter.asDocumentLinks, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, error); + return Promise.resolve([]); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDocumentLinks + ? middleware.provideDocumentLinks(document, token, provideDocumentLinks) + : provideDocumentLinks(document, token); + }, + resolveDocumentLink: options.resolveProvider + ? (link, token) => { + const client = this._client; + let resolveDocumentLink = (link, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, client.code2ProtocolConverter.asDocumentLink(link), token).then(client.protocol2CodeConverter.asDocumentLink, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, error); + return Promise.resolve(link); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.resolveDocumentLink + ? middleware.resolveDocumentLink(link, token, resolveDocumentLink) + : resolveDocumentLink(link, token); + } + : undefined + }; + return [vscode_1.languages.registerDocumentLinkProvider(options.documentSelector, provider), provider]; + } +} +class ConfigurationFeature { + constructor(_client) { + this._client = _client; + this._listeners = new Map(); + } + get messages() { + return vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'workspace'), 'didChangeConfiguration').dynamicRegistration = true; + } + initialize() { + let section = this._client.clientOptions.synchronize.configurationSection; + if (section !== void 0) { + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: { + section: section + } + }); + } + } + register(_message, data) { + let disposable = vscode_1.workspace.onDidChangeConfiguration((event) => { + this.onDidChangeConfiguration(data.registerOptions.section, event); + }); + this._listeners.set(data.id, disposable); + if (data.registerOptions.section !== void 0) { + this.onDidChangeConfiguration(data.registerOptions.section, undefined); + } + } + unregister(id) { + let disposable = this._listeners.get(id); + if (disposable) { + this._listeners.delete(id); + disposable.dispose(); + } + } + dispose() { + for (let disposable of this._listeners.values()) { + disposable.dispose(); + } + this._listeners.clear(); + } + onDidChangeConfiguration(configurationSection, event) { + let sections; + if (Is.string(configurationSection)) { + sections = [configurationSection]; + } + else { + sections = configurationSection; + } + if (sections !== void 0 && event !== void 0) { + let affected = sections.some((section) => event.affectsConfiguration(section)); + if (!affected) { + return; + } + } + let didChangeConfiguration = (sections) => { + if (sections === void 0) { + this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: null }); + return; + } + this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: this.extractSettingsInformation(sections) }); + }; + let middleware = this.getMiddleware(); + middleware + ? middleware(sections, didChangeConfiguration) + : didChangeConfiguration(sections); + } + extractSettingsInformation(keys) { + function ensurePath(config, path) { + let current = config; + for (let i = 0; i < path.length - 1; i++) { + let obj = current[path[i]]; + if (!obj) { + obj = Object.create(null); + current[path[i]] = obj; + } + current = obj; + } + return current; + } + let resource = this._client.clientOptions.workspaceFolder + ? this._client.clientOptions.workspaceFolder.uri + : undefined; + let result = Object.create(null); + for (let i = 0; i < keys.length; i++) { + let key = keys[i]; + let index = key.indexOf('.'); + let config = null; + if (index >= 0) { + config = vscode_1.workspace.getConfiguration(key.substr(0, index), resource).get(key.substr(index + 1)); + } + else { + config = vscode_1.workspace.getConfiguration(key, resource); + } + if (config) { + let path = keys[i].split('.'); + ensurePath(result, path)[path[path.length - 1]] = config; + } + } + return result; + } + getMiddleware() { + let middleware = this._client.clientOptions.middleware; + if (middleware.workspace && middleware.workspace.didChangeConfiguration) { + return middleware.workspace.didChangeConfiguration; + } + else { + return undefined; + } + } +} +class ExecuteCommandFeature { + constructor(_client) { + this._client = _client; + this._commands = new Map(); + } + get messages() { + return vscode_languageserver_protocol_1.ExecuteCommandRequest.type; + } + fillClientCapabilities(capabilities) { + ensure(ensure(capabilities, 'workspace'), 'executeCommand').dynamicRegistration = true; + } + initialize(capabilities) { + if (!capabilities.executeCommandProvider) { + return; + } + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: Object.assign({}, capabilities.executeCommandProvider) + }); + } + register(_message, data) { + const client = this._client; + const middleware = client.clientOptions.middleware; + const executeCommand = (command, args) => { + let params = { + command, + arguments: args + }; + return client.sendRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, params).then(undefined, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, error); + }); + }; + if (data.registerOptions.commands) { + const disposeables = []; + for (const command of data.registerOptions.commands) { + disposeables.push(vscode_1.commands.registerCommand(command, (...args) => { + return middleware.executeCommand + ? middleware.executeCommand(command, args, executeCommand) + : executeCommand(command, args); + })); + } + this._commands.set(data.id, disposeables); + } + } + unregister(id) { + let disposeables = this._commands.get(id); + if (disposeables) { + disposeables.forEach(disposable => disposable.dispose()); + } + } + dispose() { + this._commands.forEach((value) => { + value.forEach(disposable => disposable.dispose()); + }); + this._commands.clear(); + } +} +var MessageTransports; +(function (MessageTransports) { + function is(value) { + let candidate = value; + return candidate && vscode_languageserver_protocol_1.MessageReader.is(value.reader) && vscode_languageserver_protocol_1.MessageWriter.is(value.writer); + } + MessageTransports.is = is; +})(MessageTransports = exports.MessageTransports || (exports.MessageTransports = {})); +class OnReady { + constructor(_resolve, _reject) { + this._resolve = _resolve; + this._reject = _reject; + this._used = false; + } + get isUsed() { + return this._used; + } + resolve() { + this._used = true; + this._resolve(); + } + reject(error) { + this._used = true; + this._reject(error); + } +} +class BaseLanguageClient { + constructor(id, name, clientOptions) { + this._traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text; + this._features = []; + this._method2Message = new Map(); + this._dynamicFeatures = new Map(); + this._id = id; + this._name = name; + clientOptions = clientOptions || {}; + this._clientOptions = { + documentSelector: clientOptions.documentSelector || [], + synchronize: clientOptions.synchronize || {}, + diagnosticCollectionName: clientOptions.diagnosticCollectionName, + outputChannelName: clientOptions.outputChannelName || this._name, + revealOutputChannelOn: clientOptions.revealOutputChannelOn || RevealOutputChannelOn.Error, + stdioEncoding: clientOptions.stdioEncoding || 'utf8', + initializationOptions: clientOptions.initializationOptions, + initializationFailedHandler: clientOptions.initializationFailedHandler, + progressOnInitialization: !!clientOptions.progressOnInitialization, + errorHandler: clientOptions.errorHandler || new DefaultErrorHandler(this._name), + middleware: clientOptions.middleware || {}, + uriConverters: clientOptions.uriConverters, + workspaceFolder: clientOptions.workspaceFolder + }; + this._clientOptions.synchronize = this._clientOptions.synchronize || {}; + this.state = ClientState.Initial; + this._connectionPromise = undefined; + this._resolvedConnection = undefined; + this._initializeResult = undefined; + if (clientOptions.outputChannel) { + this._outputChannel = clientOptions.outputChannel; + this._disposeOutputChannel = false; + } + else { + this._outputChannel = undefined; + this._disposeOutputChannel = true; + } + this._traceOutputChannel = clientOptions.traceOutputChannel; + this._listeners = undefined; + this._providers = undefined; + this._diagnostics = undefined; + this._fileEvents = []; + this._fileEventDelayer = new async_1.Delayer(250); + this._onReady = new Promise((resolve, reject) => { + this._onReadyCallbacks = new OnReady(resolve, reject); + }); + this._onStop = undefined; + this._telemetryEmitter = new vscode_languageserver_protocol_1.Emitter(); + this._stateChangeEmitter = new vscode_languageserver_protocol_1.Emitter(); + this._tracer = { + log: (messageOrDataObject, data) => { + if (Is.string(messageOrDataObject)) { + this.logTrace(messageOrDataObject, data); + } + else { + this.logObjectTrace(messageOrDataObject); + } + }, + }; + this._c2p = c2p.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.code2Protocol : undefined); + this._p2c = p2c.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.protocol2Code : undefined); + this._syncedDocuments = new Map(); + this.registerBuiltinFeatures(); + } + get state() { + return this._state; + } + set state(value) { + let oldState = this.getPublicState(); + this._state = value; + let newState = this.getPublicState(); + if (newState !== oldState) { + this._stateChangeEmitter.fire({ oldState, newState }); + } + } + getPublicState() { + if (this.state === ClientState.Running) { + return State.Running; + } + else if (this.state === ClientState.Starting) { + return State.Starting; + } + else { + return State.Stopped; + } + } + get initializeResult() { + return this._initializeResult; + } + sendRequest(type, ...params) { + if (!this.isConnectionActive()) { + throw new Error('Language client is not ready yet'); + } + this.forceDocumentSync(); + try { + return this._resolvedConnection.sendRequest(type, ...params); + } + catch (error) { + this.error(`Sending request ${Is.string(type) ? type : type.method} failed.`, error); + throw error; + } + } + onRequest(type, handler) { + if (!this.isConnectionActive()) { + throw new Error('Language client is not ready yet'); + } + try { + this._resolvedConnection.onRequest(type, handler); + } + catch (error) { + this.error(`Registering request handler ${Is.string(type) ? type : type.method} failed.`, error); + throw error; + } + } + sendNotification(type, params) { + if (!this.isConnectionActive()) { + throw new Error('Language client is not ready yet'); + } + this.forceDocumentSync(); + try { + this._resolvedConnection.sendNotification(type, params); + } + catch (error) { + this.error(`Sending notification ${Is.string(type) ? type : type.method} failed.`, error); + throw error; + } + } + onNotification(type, handler) { + if (!this.isConnectionActive()) { + throw new Error('Language client is not ready yet'); + } + try { + this._resolvedConnection.onNotification(type, handler); + } + catch (error) { + this.error(`Registering notification handler ${Is.string(type) ? type : type.method} failed.`, error); + throw error; + } + } + onProgress(type, token, handler) { + if (!this.isConnectionActive()) { + throw new Error('Language client is not ready yet'); + } + try { + return this._resolvedConnection.onProgress(type, token, handler); + } + catch (error) { + this.error(`Registering progress handler for token ${token} failed.`, error); + throw error; + } + } + sendProgress(type, token, value) { + if (!this.isConnectionActive()) { + throw new Error('Language client is not ready yet'); + } + this.forceDocumentSync(); + try { + this._resolvedConnection.sendProgress(type, token, value); + } + catch (error) { + this.error(`Sending progress for token ${token} failed.`, error); + throw error; + } + } + get clientOptions() { + return this._clientOptions; + } + get protocol2CodeConverter() { + return this._p2c; + } + get code2ProtocolConverter() { + return this._c2p; + } + get onTelemetry() { + return this._telemetryEmitter.event; + } + get onDidChangeState() { + return this._stateChangeEmitter.event; + } + get outputChannel() { + if (!this._outputChannel) { + this._outputChannel = vscode_1.window.createOutputChannel(this._clientOptions.outputChannelName ? this._clientOptions.outputChannelName : this._name); + } + return this._outputChannel; + } + get traceOutputChannel() { + if (this._traceOutputChannel) { + return this._traceOutputChannel; + } + return this.outputChannel; + } + get diagnostics() { + return this._diagnostics; + } + createDefaultErrorHandler() { + return new DefaultErrorHandler(this._name); + } + set trace(value) { + this._trace = value; + this.onReady().then(() => { + this.resolveConnection().then((connection) => { + connection.trace(this._trace, this._tracer, { + sendNotification: false, + traceFormat: this._traceFormat + }); + }); + }, () => { + }); + } + data2String(data) { + if (data instanceof vscode_languageserver_protocol_1.ResponseError) { + const responseError = data; + return ` Message: ${responseError.message}\n Code: ${responseError.code} ${responseError.data ? '\n' + responseError.data.toString() : ''}`; + } + if (data instanceof Error) { + if (Is.string(data.stack)) { + return data.stack; + } + return data.message; + } + if (Is.string(data)) { + return data; + } + return data.toString(); + } + info(message, data, showNotification = true) { + this.outputChannel.appendLine(`[Info - ${(new Date().toLocaleTimeString())}] ${message}`); + if (data) { + this.outputChannel.appendLine(this.data2String(data)); + } + if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Info) { + this.showNotificationMessage(); + } + } + warn(message, data, showNotification = true) { + this.outputChannel.appendLine(`[Warn - ${(new Date().toLocaleTimeString())}] ${message}`); + if (data) { + this.outputChannel.appendLine(this.data2String(data)); + } + if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Warn) { + this.showNotificationMessage(); + } + } + error(message, data, showNotification = true) { + this.outputChannel.appendLine(`[Error - ${(new Date().toLocaleTimeString())}] ${message}`); + if (data) { + this.outputChannel.appendLine(this.data2String(data)); + } + if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Error) { + this.showNotificationMessage(); + } + } + showNotificationMessage() { + vscode_1.window.showInformationMessage('A request has failed. See the output for more information.', 'Go to output').then(() => { + this.outputChannel.show(true); + }); + } + logTrace(message, data) { + this.traceOutputChannel.appendLine(`[Trace - ${(new Date().toLocaleTimeString())}] ${message}`); + if (data) { + this.traceOutputChannel.appendLine(this.data2String(data)); + } + } + logObjectTrace(data) { + if (data.isLSPMessage && data.type) { + this.traceOutputChannel.append(`[LSP - ${(new Date().toLocaleTimeString())}] `); + } + else { + this.traceOutputChannel.append(`[Trace - ${(new Date().toLocaleTimeString())}] `); + } + if (data) { + this.traceOutputChannel.appendLine(`${JSON.stringify(data)}`); + } + } + needsStart() { + return this.state === ClientState.Initial || this.state === ClientState.Stopping || this.state === ClientState.Stopped; + } + needsStop() { + return this.state === ClientState.Starting || this.state === ClientState.Running; + } + onReady() { + return this._onReady; + } + isConnectionActive() { + return this.state === ClientState.Running && !!this._resolvedConnection; + } + start() { + if (this._onReadyCallbacks.isUsed) { + this._onReady = new Promise((resolve, reject) => { + this._onReadyCallbacks = new OnReady(resolve, reject); + }); + } + this._listeners = []; + this._providers = []; + // If we restart then the diagnostics collection is reused. + if (!this._diagnostics) { + this._diagnostics = this._clientOptions.diagnosticCollectionName + ? vscode_1.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName) + : vscode_1.languages.createDiagnosticCollection(); + } + this.state = ClientState.Starting; + this.resolveConnection().then((connection) => { + connection.onLogMessage((message) => { + switch (message.type) { + case vscode_languageserver_protocol_1.MessageType.Error: + this.error(message.message, undefined, false); + break; + case vscode_languageserver_protocol_1.MessageType.Warning: + this.warn(message.message, undefined, false); + break; + case vscode_languageserver_protocol_1.MessageType.Info: + this.info(message.message, undefined, false); + break; + default: + this.outputChannel.appendLine(message.message); + } + }); + connection.onShowMessage((message) => { + switch (message.type) { + case vscode_languageserver_protocol_1.MessageType.Error: + vscode_1.window.showErrorMessage(message.message); + break; + case vscode_languageserver_protocol_1.MessageType.Warning: + vscode_1.window.showWarningMessage(message.message); + break; + case vscode_languageserver_protocol_1.MessageType.Info: + vscode_1.window.showInformationMessage(message.message); + break; + default: + vscode_1.window.showInformationMessage(message.message); + } + }); + connection.onRequest(vscode_languageserver_protocol_1.ShowMessageRequest.type, (params) => { + let messageFunc; + switch (params.type) { + case vscode_languageserver_protocol_1.MessageType.Error: + messageFunc = vscode_1.window.showErrorMessage; + break; + case vscode_languageserver_protocol_1.MessageType.Warning: + messageFunc = vscode_1.window.showWarningMessage; + break; + case vscode_languageserver_protocol_1.MessageType.Info: + messageFunc = vscode_1.window.showInformationMessage; + break; + default: + messageFunc = vscode_1.window.showInformationMessage; + } + let actions = params.actions || []; + return messageFunc(params.message, ...actions); + }); + connection.onTelemetry((data) => { + this._telemetryEmitter.fire(data); + }); + connection.listen(); + // Error is handled in the initialize call. + return this.initialize(connection); + }).then(undefined, (error) => { + this.state = ClientState.StartFailed; + this._onReadyCallbacks.reject(error); + this.error('Starting client failed', error); + vscode_1.window.showErrorMessage(`Couldn't start client ${this._name}`); + }); + return new vscode_1.Disposable(() => { + if (this.needsStop()) { + this.stop(); + } + }); + } + resolveConnection() { + if (!this._connectionPromise) { + this._connectionPromise = this.createConnection(); + } + return this._connectionPromise; + } + initialize(connection) { + this.refreshTrace(connection, false); + let initOption = this._clientOptions.initializationOptions; + let rootPath = this._clientOptions.workspaceFolder + ? this._clientOptions.workspaceFolder.uri.fsPath + : this._clientGetRootPath(); + let initParams = { + processId: process.pid, + clientInfo: { + name: 'vscode', + version: vscode_1.version + }, + rootPath: rootPath ? rootPath : null, + rootUri: rootPath ? this._c2p.asUri(vscode_1.Uri.file(rootPath)) : null, + capabilities: this.computeClientCapabilities(), + initializationOptions: Is.func(initOption) ? initOption() : initOption, + trace: vscode_languageserver_protocol_1.Trace.toString(this._trace), + workspaceFolders: null + }; + this.fillInitializeParams(initParams); + if (this._clientOptions.progressOnInitialization) { + const token = UUID.generateUuid(); + const part = new progressPart_1.ProgressPart(connection, token); + initParams.workDoneToken = token; + return this.doInitialize(connection, initParams).then((result) => { + part.done(); + return result; + }, (error) => { + part.cancel(); + throw error; + }); + } + else { + return this.doInitialize(connection, initParams); + } + } + doInitialize(connection, initParams) { + return connection.initialize(initParams).then((result) => { + this._resolvedConnection = connection; + this._initializeResult = result; + this.state = ClientState.Running; + let textDocumentSyncOptions = undefined; + if (Is.number(result.capabilities.textDocumentSync)) { + if (result.capabilities.textDocumentSync === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) { + textDocumentSyncOptions = { + openClose: false, + change: vscode_languageserver_protocol_1.TextDocumentSyncKind.None, + save: undefined + }; + } + else { + textDocumentSyncOptions = { + openClose: true, + change: result.capabilities.textDocumentSync, + save: { + includeText: false + } + }; + } + } + else if (result.capabilities.textDocumentSync !== void 0 && result.capabilities.textDocumentSync !== null) { + textDocumentSyncOptions = result.capabilities.textDocumentSync; + } + this._capabilities = Object.assign({}, result.capabilities, { resolvedTextDocumentSync: textDocumentSyncOptions }); + connection.onDiagnostics(params => this.handleDiagnostics(params)); + connection.onRequest(vscode_languageserver_protocol_1.RegistrationRequest.type, params => this.handleRegistrationRequest(params)); + // See https://github.com/Microsoft/vscode-languageserver-node/issues/199 + connection.onRequest('client/registerFeature', params => this.handleRegistrationRequest(params)); + connection.onRequest(vscode_languageserver_protocol_1.UnregistrationRequest.type, params => this.handleUnregistrationRequest(params)); + // See https://github.com/Microsoft/vscode-languageserver-node/issues/199 + connection.onRequest('client/unregisterFeature', params => this.handleUnregistrationRequest(params)); + connection.onRequest(vscode_languageserver_protocol_1.ApplyWorkspaceEditRequest.type, params => this.handleApplyWorkspaceEdit(params)); + connection.sendNotification(vscode_languageserver_protocol_1.InitializedNotification.type, {}); + this.hookFileEvents(connection); + this.hookConfigurationChanged(connection); + this.initializeFeatures(connection); + this._onReadyCallbacks.resolve(); + return result; + }).then(undefined, (error) => { + if (this._clientOptions.initializationFailedHandler) { + if (this._clientOptions.initializationFailedHandler(error)) { + this.initialize(connection); + } + else { + this.stop(); + this._onReadyCallbacks.reject(error); + } + } + else if (error instanceof vscode_languageserver_protocol_1.ResponseError && error.data && error.data.retry) { + vscode_1.window.showErrorMessage(error.message, { title: 'Retry', id: 'retry' }).then(item => { + if (item && item.id === 'retry') { + this.initialize(connection); + } + else { + this.stop(); + this._onReadyCallbacks.reject(error); + } + }); + } + else { + if (error && error.message) { + vscode_1.window.showErrorMessage(error.message); + } + this.error('Server initialization failed.', error); + this.stop(); + this._onReadyCallbacks.reject(error); + } + throw error; + }); + } + _clientGetRootPath() { + let folders = vscode_1.workspace.workspaceFolders; + if (!folders || folders.length === 0) { + return undefined; + } + let folder = folders[0]; + if (folder.uri.scheme === 'file') { + return folder.uri.fsPath; + } + return undefined; + } + stop() { + this._initializeResult = undefined; + if (!this._connectionPromise) { + this.state = ClientState.Stopped; + return Promise.resolve(); + } + if (this.state === ClientState.Stopping && this._onStop) { + return this._onStop; + } + this.state = ClientState.Stopping; + this.cleanUp(false); + // unhook listeners + return this._onStop = this.resolveConnection().then(connection => { + return connection.shutdown().then(() => { + connection.exit(); + connection.dispose(); + this.state = ClientState.Stopped; + this.cleanUpChannel(); + this._onStop = undefined; + this._connectionPromise = undefined; + this._resolvedConnection = undefined; + }); + }); + } + cleanUp(channel = true, diagnostics = true) { + if (this._listeners) { + this._listeners.forEach(listener => listener.dispose()); + this._listeners = undefined; + } + if (this._providers) { + this._providers.forEach(provider => provider.dispose()); + this._providers = undefined; + } + if (this._syncedDocuments) { + this._syncedDocuments.clear(); + } + for (let handler of this._dynamicFeatures.values()) { + handler.dispose(); + } + if (channel) { + this.cleanUpChannel(); + } + if (diagnostics && this._diagnostics) { + this._diagnostics.dispose(); + this._diagnostics = undefined; + } + } + cleanUpChannel() { + if (this._outputChannel && this._disposeOutputChannel) { + this._outputChannel.dispose(); + this._outputChannel = undefined; + } + } + notifyFileEvent(event) { + var _a, _b; + const client = this; + function didChangeWatchedFile(event) { + client._fileEvents.push(event); + client._fileEventDelayer.trigger(() => { + client.onReady().then(() => { + client.resolveConnection().then(connection => { + if (client.isConnectionActive()) { + client.forceDocumentSync(); + connection.didChangeWatchedFiles({ changes: client._fileEvents }); + } + client._fileEvents = []; + }); + }, (error) => { + client.error(`Notify file events failed.`, error); + }); + }); + } + const workSpaceMiddleware = (_a = this.clientOptions.middleware) === null || _a === void 0 ? void 0 : _a.workspace; + ((_b = workSpaceMiddleware) === null || _b === void 0 ? void 0 : _b.didChangeWatchedFile) ? workSpaceMiddleware.didChangeWatchedFile(event, didChangeWatchedFile) : didChangeWatchedFile(event); + } + forceDocumentSync() { + this._dynamicFeatures.get(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type.method).forceDelivery(); + } + handleDiagnostics(params) { + if (!this._diagnostics) { + return; + } + let uri = this._p2c.asUri(params.uri); + let diagnostics = this._p2c.asDiagnostics(params.diagnostics); + let middleware = this.clientOptions.middleware; + if (middleware.handleDiagnostics) { + middleware.handleDiagnostics(uri, diagnostics, (uri, diagnostics) => this.setDiagnostics(uri, diagnostics)); + } + else { + this.setDiagnostics(uri, diagnostics); + } + } + setDiagnostics(uri, diagnostics) { + if (!this._diagnostics) { + return; + } + this._diagnostics.set(uri, diagnostics); + } + createConnection() { + let errorHandler = (error, message, count) => { + this.handleConnectionError(error, message, count); + }; + let closeHandler = () => { + this.handleConnectionClosed(); + }; + return this.createMessageTransports(this._clientOptions.stdioEncoding || 'utf8').then((transports) => { + return createConnection(transports.reader, transports.writer, errorHandler, closeHandler); + }); + } + handleConnectionClosed() { + // Check whether this is a normal shutdown in progress or the client stopped normally. + if (this.state === ClientState.Stopping || this.state === ClientState.Stopped) { + return; + } + try { + if (this._resolvedConnection) { + this._resolvedConnection.dispose(); + } + } + catch (error) { + // Disposing a connection could fail if error cases. + } + let action = CloseAction.DoNotRestart; + try { + action = this._clientOptions.errorHandler.closed(); + } + catch (error) { + // Ignore errors coming from the error handler. + } + this._connectionPromise = undefined; + this._resolvedConnection = undefined; + if (action === CloseAction.DoNotRestart) { + this.error('Connection to server got closed. Server will not be restarted.'); + this.state = ClientState.Stopped; + this.cleanUp(false, true); + } + else if (action === CloseAction.Restart) { + this.info('Connection to server got closed. Server will restart.'); + this.cleanUp(false, false); + this.state = ClientState.Initial; + this.start(); + } + } + handleConnectionError(error, message, count) { + let action = this._clientOptions.errorHandler.error(error, message, count); + if (action === ErrorAction.Shutdown) { + this.error('Connection to server is erroring. Shutting down server.'); + this.stop(); + } + } + hookConfigurationChanged(connection) { + vscode_1.workspace.onDidChangeConfiguration(() => { + this.refreshTrace(connection, true); + }); + } + refreshTrace(connection, sendNotification = false) { + let config = vscode_1.workspace.getConfiguration(this._id); + let trace = vscode_languageserver_protocol_1.Trace.Off; + let traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text; + if (config) { + const traceConfig = config.get('trace.server', 'off'); + if (typeof traceConfig === 'string') { + trace = vscode_languageserver_protocol_1.Trace.fromString(traceConfig); + } + else { + trace = vscode_languageserver_protocol_1.Trace.fromString(config.get('trace.server.verbosity', 'off')); + traceFormat = vscode_languageserver_protocol_1.TraceFormat.fromString(config.get('trace.server.format', 'text')); + } + } + this._trace = trace; + this._traceFormat = traceFormat; + connection.trace(this._trace, this._tracer, { + sendNotification, + traceFormat: this._traceFormat + }); + } + hookFileEvents(_connection) { + let fileEvents = this._clientOptions.synchronize.fileEvents; + if (!fileEvents) { + return; + } + let watchers; + if (Is.array(fileEvents)) { + watchers = fileEvents; + } + else { + watchers = [fileEvents]; + } + if (!watchers) { + return; + } + this._dynamicFeatures.get(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type.method).registerRaw(UUID.generateUuid(), watchers); + } + registerFeatures(features) { + for (let feature of features) { + this.registerFeature(feature); + } + } + registerFeature(feature) { + this._features.push(feature); + if (DynamicFeature.is(feature)) { + let messages = feature.messages; + if (Array.isArray(messages)) { + for (let message of messages) { + this._method2Message.set(message.method, message); + this._dynamicFeatures.set(message.method, feature); + } + } + else { + this._method2Message.set(messages.method, messages); + this._dynamicFeatures.set(messages.method, feature); + } + } + } + getFeature(request) { + return this._dynamicFeatures.get(request); + } + registerBuiltinFeatures() { + this.registerFeature(new ConfigurationFeature(this)); + this.registerFeature(new DidOpenTextDocumentFeature(this, this._syncedDocuments)); + this.registerFeature(new DidChangeTextDocumentFeature(this)); + this.registerFeature(new WillSaveFeature(this)); + this.registerFeature(new WillSaveWaitUntilFeature(this)); + this.registerFeature(new DidSaveTextDocumentFeature(this)); + this.registerFeature(new DidCloseTextDocumentFeature(this, this._syncedDocuments)); + this.registerFeature(new FileSystemWatcherFeature(this, (event) => this.notifyFileEvent(event))); + this.registerFeature(new CompletionItemFeature(this)); + this.registerFeature(new HoverFeature(this)); + this.registerFeature(new SignatureHelpFeature(this)); + this.registerFeature(new DefinitionFeature(this)); + this.registerFeature(new ReferencesFeature(this)); + this.registerFeature(new DocumentHighlightFeature(this)); + this.registerFeature(new DocumentSymbolFeature(this)); + this.registerFeature(new WorkspaceSymbolFeature(this)); + this.registerFeature(new CodeActionFeature(this)); + this.registerFeature(new CodeLensFeature(this)); + this.registerFeature(new DocumentFormattingFeature(this)); + this.registerFeature(new DocumentRangeFormattingFeature(this)); + this.registerFeature(new DocumentOnTypeFormattingFeature(this)); + this.registerFeature(new RenameFeature(this)); + this.registerFeature(new DocumentLinkFeature(this)); + this.registerFeature(new ExecuteCommandFeature(this)); + } + fillInitializeParams(params) { + for (let feature of this._features) { + if (Is.func(feature.fillInitializeParams)) { + feature.fillInitializeParams(params); + } + } + } + computeClientCapabilities() { + let result = {}; + ensure(result, 'workspace').applyEdit = true; + let workspaceEdit = ensure(ensure(result, 'workspace'), 'workspaceEdit'); + workspaceEdit.documentChanges = true; + workspaceEdit.resourceOperations = [vscode_languageserver_protocol_1.ResourceOperationKind.Create, vscode_languageserver_protocol_1.ResourceOperationKind.Rename, vscode_languageserver_protocol_1.ResourceOperationKind.Delete]; + workspaceEdit.failureHandling = vscode_languageserver_protocol_1.FailureHandlingKind.TextOnlyTransactional; + let diagnostics = ensure(ensure(result, 'textDocument'), 'publishDiagnostics'); + diagnostics.relatedInformation = true; + diagnostics.versionSupport = false; + diagnostics.tagSupport = { valueSet: [vscode_languageserver_protocol_1.DiagnosticTag.Unnecessary, vscode_languageserver_protocol_1.DiagnosticTag.Deprecated] }; + for (let feature of this._features) { + feature.fillClientCapabilities(result); + } + return result; + } + initializeFeatures(_connection) { + let documentSelector = this._clientOptions.documentSelector; + for (let feature of this._features) { + feature.initialize(this._capabilities, documentSelector); + } + } + handleRegistrationRequest(params) { + return new Promise((resolve, reject) => { + for (let registration of params.registrations) { + const feature = this._dynamicFeatures.get(registration.method); + if (!feature) { + reject(new Error(`No feature implementation for ${registration.method} found. Registration failed.`)); + return; + } + const options = registration.registerOptions || {}; + options.documentSelector = options.documentSelector || this._clientOptions.documentSelector; + const data = { + id: registration.id, + registerOptions: options + }; + feature.register(this._method2Message.get(registration.method), data); + } + resolve(); + }); + } + handleUnregistrationRequest(params) { + return new Promise((resolve, reject) => { + for (let unregistration of params.unregisterations) { + const feature = this._dynamicFeatures.get(unregistration.method); + if (!feature) { + reject(new Error(`No feature implementation for ${unregistration.method} found. Unregistration failed.`)); + return; + } + feature.unregister(unregistration.id); + } + resolve(); + }); + } + handleApplyWorkspaceEdit(params) { + // This is some sort of workaround since the version check should be done by VS Code in the Workspace.applyEdit. + // However doing it here adds some safety since the server can lag more behind then an extension. + let workspaceEdit = params.edit; + let openTextDocuments = new Map(); + vscode_1.workspace.textDocuments.forEach((document) => openTextDocuments.set(document.uri.toString(), document)); + let versionMismatch = false; + if (workspaceEdit.documentChanges) { + for (const change of workspaceEdit.documentChanges) { + if (vscode_languageserver_protocol_1.TextDocumentEdit.is(change) && change.textDocument.version && change.textDocument.version >= 0) { + let textDocument = openTextDocuments.get(change.textDocument.uri); + if (textDocument && textDocument.version !== change.textDocument.version) { + versionMismatch = true; + break; + } + } + } + } + if (versionMismatch) { + return Promise.resolve({ applied: false }); + } + return Is.asPromise(vscode_1.workspace.applyEdit(this._p2c.asWorkspaceEdit(params.edit)).then((value) => { return { applied: value }; })); + } + logFailedRequest(type, error) { + // If we get a request cancel or a content modified don't log anything. + if (error instanceof vscode_languageserver_protocol_1.ResponseError && (error.code === vscode_languageserver_protocol_1.ErrorCodes.RequestCancelled || error.code === vscode_languageserver_protocol_1.ErrorCodes.ContentModified)) { + return; + } + this.error(`Request ${type.method} failed.`, error); + } +} +exports.BaseLanguageClient = BaseLanguageClient; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/codeConverter.js": +/*!******************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/codeConverter.js ***! + \******************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createConverter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const code = __webpack_require__(/*! vscode */ "vscode"); +const proto = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const Is = __webpack_require__(/*! ./utils/is */ "../node_modules/vscode-languageclient/lib/utils/is.js"); +const protocolCompletionItem_1 = __webpack_require__(/*! ./protocolCompletionItem */ "../node_modules/vscode-languageclient/lib/protocolCompletionItem.js"); +const protocolCodeLens_1 = __webpack_require__(/*! ./protocolCodeLens */ "../node_modules/vscode-languageclient/lib/protocolCodeLens.js"); +const protocolDocumentLink_1 = __webpack_require__(/*! ./protocolDocumentLink */ "../node_modules/vscode-languageclient/lib/protocolDocumentLink.js"); +function createConverter(uriConverter) { + const nullConverter = (value) => value.toString(); + const _uriConverter = uriConverter || nullConverter; + function asUri(value) { + return _uriConverter(value); + } + function asTextDocumentIdentifier(textDocument) { + return { + uri: _uriConverter(textDocument.uri) + }; + } + function asVersionedTextDocumentIdentifier(textDocument) { + return { + uri: _uriConverter(textDocument.uri), + version: textDocument.version + }; + } + function asOpenTextDocumentParams(textDocument) { + return { + textDocument: { + uri: _uriConverter(textDocument.uri), + languageId: textDocument.languageId, + version: textDocument.version, + text: textDocument.getText() + } + }; + } + function isTextDocumentChangeEvent(value) { + let candidate = value; + return !!candidate.document && !!candidate.contentChanges; + } + function isTextDocument(value) { + let candidate = value; + return !!candidate.uri && !!candidate.version; + } + function asChangeTextDocumentParams(arg) { + if (isTextDocument(arg)) { + let result = { + textDocument: { + uri: _uriConverter(arg.uri), + version: arg.version + }, + contentChanges: [{ text: arg.getText() }] + }; + return result; + } + else if (isTextDocumentChangeEvent(arg)) { + let document = arg.document; + let result = { + textDocument: { + uri: _uriConverter(document.uri), + version: document.version + }, + contentChanges: arg.contentChanges.map((change) => { + let range = change.range; + return { + range: { + start: { line: range.start.line, character: range.start.character }, + end: { line: range.end.line, character: range.end.character } + }, + rangeLength: change.rangeLength, + text: change.text + }; + }) + }; + return result; + } + else { + throw Error('Unsupported text document change parameter'); + } + } + function asCloseTextDocumentParams(textDocument) { + return { + textDocument: asTextDocumentIdentifier(textDocument) + }; + } + function asSaveTextDocumentParams(textDocument, includeContent = false) { + let result = { + textDocument: asVersionedTextDocumentIdentifier(textDocument) + }; + if (includeContent) { + result.text = textDocument.getText(); + } + return result; + } + function asTextDocumentSaveReason(reason) { + switch (reason) { + case code.TextDocumentSaveReason.Manual: + return proto.TextDocumentSaveReason.Manual; + case code.TextDocumentSaveReason.AfterDelay: + return proto.TextDocumentSaveReason.AfterDelay; + case code.TextDocumentSaveReason.FocusOut: + return proto.TextDocumentSaveReason.FocusOut; + } + return proto.TextDocumentSaveReason.Manual; + } + function asWillSaveTextDocumentParams(event) { + return { + textDocument: asTextDocumentIdentifier(event.document), + reason: asTextDocumentSaveReason(event.reason) + }; + } + function asTextDocumentPositionParams(textDocument, position) { + return { + textDocument: asTextDocumentIdentifier(textDocument), + position: asWorkerPosition(position) + }; + } + function asCompletionTriggerKind(triggerKind) { + switch (triggerKind) { + case code.CompletionTriggerKind.TriggerCharacter: + return proto.CompletionTriggerKind.TriggerCharacter; + case code.CompletionTriggerKind.TriggerForIncompleteCompletions: + return proto.CompletionTriggerKind.TriggerForIncompleteCompletions; + default: + return proto.CompletionTriggerKind.Invoked; + } + } + function asCompletionParams(textDocument, position, context) { + return { + textDocument: asTextDocumentIdentifier(textDocument), + position: asWorkerPosition(position), + context: { + triggerKind: asCompletionTriggerKind(context.triggerKind), + triggerCharacter: context.triggerCharacter + } + }; + } + function asSignatureHelpTriggerKind(triggerKind) { + switch (triggerKind) { + case code.SignatureHelpTriggerKind.Invoke: + return proto.SignatureHelpTriggerKind.Invoked; + case code.SignatureHelpTriggerKind.TriggerCharacter: + return proto.SignatureHelpTriggerKind.TriggerCharacter; + case code.SignatureHelpTriggerKind.ContentChange: + return proto.SignatureHelpTriggerKind.ContentChange; + } + } + function asParameterInformation(value) { + // We leave the documentation out on purpose since it usually adds no + // value for the server. + return { + label: value.label + }; + } + function asParameterInformations(values) { + return values.map(asParameterInformation); + } + function asSignatureInformation(value) { + // We leave the documentation out on purpose since it usually adds no + // value for the server. + return { + label: value.label, + parameters: asParameterInformations(value.parameters) + }; + } + function asSignatureInformations(values) { + return values.map(asSignatureInformation); + } + function asSignatureHelp(value) { + if (value === undefined) { + return value; + } + return { + signatures: asSignatureInformations(value.signatures), + activeSignature: value.activeSignature, + activeParameter: value.activeParameter + }; + } + function asSignatureHelpParams(textDocument, position, context) { + return { + textDocument: asTextDocumentIdentifier(textDocument), + position: asWorkerPosition(position), + context: { + isRetrigger: context.isRetrigger, + triggerCharacter: context.triggerCharacter, + triggerKind: asSignatureHelpTriggerKind(context.triggerKind), + activeSignatureHelp: asSignatureHelp(context.activeSignatureHelp) + } + }; + } + function asWorkerPosition(position) { + return { line: position.line, character: position.character }; + } + function asPosition(value) { + if (value === undefined || value === null) { + return value; + } + return { line: value.line, character: value.character }; + } + function asPositions(value) { + let result = []; + for (let elem of value) { + result.push(asPosition(elem)); + } + return result; + } + function isInsertReplace(value) { + const candidate = value; + return candidate && !!candidate.inserting && !!candidate.replacing; + } + function asRange(value) { + if (value === undefined || value === null) { + return value; + } + // The LSP has no support yet for insert replace. So this can never happen. + if (isInsertReplace(value)) { + throw new Error(`Receving unknown insert replace range.`); + } + return { start: asPosition(value.start), end: asPosition(value.end) }; + } + function asLocation(value) { + if (value === undefined || value === null) { + return value; + } + return proto.Location.create(asUri(value.uri), asRange(value.range)); + } + function asDiagnosticSeverity(value) { + switch (value) { + case code.DiagnosticSeverity.Error: + return proto.DiagnosticSeverity.Error; + case code.DiagnosticSeverity.Warning: + return proto.DiagnosticSeverity.Warning; + case code.DiagnosticSeverity.Information: + return proto.DiagnosticSeverity.Information; + case code.DiagnosticSeverity.Hint: + return proto.DiagnosticSeverity.Hint; + } + } + function asDiagnosticTags(tags) { + if (!tags) { + return undefined; + } + let result = []; + for (let tag of tags) { + let converted = asDiagnosticTag(tag); + if (converted !== undefined) { + result.push(converted); + } + } + return result.length > 0 ? result : undefined; + } + function asDiagnosticTag(tag) { + switch (tag) { + case code.DiagnosticTag.Unnecessary: + return proto.DiagnosticTag.Unnecessary; + case code.DiagnosticTag.Deprecated: + return proto.DiagnosticTag.Deprecated; + default: + return undefined; + } + } + function asRelatedInformation(item) { + return { + message: item.message, + location: asLocation(item.location) + }; + } + function asRelatedInformations(items) { + return items.map(asRelatedInformation); + } + function asDiagnostic(item) { + let result = proto.Diagnostic.create(asRange(item.range), item.message); + if (Is.number(item.severity)) { + result.severity = asDiagnosticSeverity(item.severity); + } + if (Is.number(item.code) || Is.string(item.code)) { + result.code = item.code; + } + if (Array.isArray(item.tags)) { + result.tags = asDiagnosticTags(item.tags); + } + if (item.relatedInformation) { + result.relatedInformation = asRelatedInformations(item.relatedInformation); + } + if (item.source) { + result.source = item.source; + } + return result; + } + function asDiagnostics(items) { + if (items === undefined || items === null) { + return items; + } + return items.map(asDiagnostic); + } + function asDocumentation(format, documentation) { + switch (format) { + case '$string': + return documentation; + case proto.MarkupKind.PlainText: + return { kind: format, value: documentation }; + case proto.MarkupKind.Markdown: + return { kind: format, value: documentation.value }; + default: + return `Unsupported Markup content received. Kind is: ${format}`; + } + } + function asCompletionItemTag(tag) { + switch (tag) { + case code.CompletionItemTag.Deprecated: + return proto.CompletionItemTag.Deprecated; + } + return undefined; + } + function asCompletionItemTags(tags) { + if (tags === undefined) { + return tags; + } + const result = []; + for (let tag of tags) { + const converted = asCompletionItemTag(tag); + if (converted !== undefined) { + result.push(converted); + } + } + return result; + } + function asCompletionItemKind(value, original) { + if (original !== undefined) { + return original; + } + return value + 1; + } + function asCompletionItem(item) { + let result = { label: item.label }; + let protocolItem = item instanceof protocolCompletionItem_1.default ? item : undefined; + if (item.detail) { + result.detail = item.detail; + } + // We only send items back we created. So this can't be something else than + // a string right now. + if (item.documentation) { + if (!protocolItem || protocolItem.documentationFormat === '$string') { + result.documentation = item.documentation; + } + else { + result.documentation = asDocumentation(protocolItem.documentationFormat, item.documentation); + } + } + if (item.filterText) { + result.filterText = item.filterText; + } + fillPrimaryInsertText(result, item); + if (Is.number(item.kind)) { + result.kind = asCompletionItemKind(item.kind, protocolItem && protocolItem.originalItemKind); + } + if (item.sortText) { + result.sortText = item.sortText; + } + if (item.additionalTextEdits) { + result.additionalTextEdits = asTextEdits(item.additionalTextEdits); + } + if (item.commitCharacters) { + result.commitCharacters = item.commitCharacters.slice(); + } + if (item.command) { + result.command = asCommand(item.command); + } + if (item.preselect === true || item.preselect === false) { + result.preselect = item.preselect; + } + const tags = asCompletionItemTags(item.tags); + if (protocolItem) { + if (protocolItem.data !== undefined) { + result.data = protocolItem.data; + } + if (protocolItem.deprecated === true || protocolItem.deprecated === false) { + if (protocolItem.deprecated === true && tags !== undefined && tags.length > 0) { + const index = tags.indexOf(code.CompletionItemTag.Deprecated); + if (index !== -1) { + tags.splice(index, 1); + } + } + result.deprecated = protocolItem.deprecated; + } + } + if (tags !== undefined && tags.length > 0) { + result.tags = tags; + } + return result; + } + function fillPrimaryInsertText(target, source) { + let format = proto.InsertTextFormat.PlainText; + let text = undefined; + let range = undefined; + if (source.textEdit) { + text = source.textEdit.newText; + range = asRange(source.textEdit.range); + } + else if (source.insertText instanceof code.SnippetString) { + format = proto.InsertTextFormat.Snippet; + text = source.insertText.value; + } + else { + text = source.insertText; + } + if (source.range) { + range = asRange(source.range); + } + target.insertTextFormat = format; + if (source.fromEdit && text !== undefined && range !== undefined) { + target.textEdit = { newText: text, range: range }; + } + else { + target.insertText = text; + } + } + function asTextEdit(edit) { + return { range: asRange(edit.range), newText: edit.newText }; + } + function asTextEdits(edits) { + if (edits === undefined || edits === null) { + return edits; + } + return edits.map(asTextEdit); + } + function asSymbolKind(item) { + if (item <= code.SymbolKind.TypeParameter) { + // Symbol kind is one based in the protocol and zero based in code. + return (item + 1); + } + return proto.SymbolKind.Property; + } + function asSymbolTag(item) { + return item; + } + function asSymbolTags(items) { + return items.map(asSymbolTag); + } + function asReferenceParams(textDocument, position, options) { + return { + textDocument: asTextDocumentIdentifier(textDocument), + position: asWorkerPosition(position), + context: { includeDeclaration: options.includeDeclaration } + }; + } + function asCodeActionContext(context) { + if (context === undefined || context === null) { + return context; + } + let only; + if (context.only && Is.string(context.only.value)) { + only = [context.only.value]; + } + return proto.CodeActionContext.create(asDiagnostics(context.diagnostics), only); + } + function asCommand(item) { + let result = proto.Command.create(item.title, item.command); + if (item.arguments) { + result.arguments = item.arguments; + } + return result; + } + function asCodeLens(item) { + let result = proto.CodeLens.create(asRange(item.range)); + if (item.command) { + result.command = asCommand(item.command); + } + if (item instanceof protocolCodeLens_1.default) { + if (item.data) { + result.data = item.data; + } + } + return result; + } + function asFormattingOptions(item) { + return { tabSize: item.tabSize, insertSpaces: item.insertSpaces }; + } + function asDocumentSymbolParams(textDocument) { + return { + textDocument: asTextDocumentIdentifier(textDocument) + }; + } + function asCodeLensParams(textDocument) { + return { + textDocument: asTextDocumentIdentifier(textDocument) + }; + } + function asDocumentLink(item) { + let result = proto.DocumentLink.create(asRange(item.range)); + if (item.target) { + result.target = asUri(item.target); + } + if (item.tooltip !== undefined) { + result.tooltip = item.tooltip; + } + let protocolItem = item instanceof protocolDocumentLink_1.default ? item : undefined; + if (protocolItem && protocolItem.data) { + result.data = protocolItem.data; + } + return result; + } + function asDocumentLinkParams(textDocument) { + return { + textDocument: asTextDocumentIdentifier(textDocument) + }; + } + return { + asUri, + asTextDocumentIdentifier, + asVersionedTextDocumentIdentifier, + asOpenTextDocumentParams, + asChangeTextDocumentParams, + asCloseTextDocumentParams, + asSaveTextDocumentParams, + asWillSaveTextDocumentParams, + asTextDocumentPositionParams, + asCompletionParams, + asSignatureHelpParams, + asWorkerPosition, + asRange, + asPosition, + asPositions, + asLocation, + asDiagnosticSeverity, + asDiagnosticTag, + asDiagnostic, + asDiagnostics, + asCompletionItem, + asTextEdit, + asSymbolKind, + asSymbolTag, + asSymbolTags, + asReferenceParams, + asCodeActionContext, + asCommand, + asCodeLens, + asFormattingOptions, + asDocumentSymbolParams, + asCodeLensParams, + asDocumentLink, + asDocumentLinkParams + }; +} +exports.createConverter = createConverter; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/colorProvider.js": +/*!******************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/colorProvider.js ***! + \******************************************************************/ +/*! flagged exports */ +/*! export ColorProviderFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +class ColorProviderFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DocumentColorRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'colorProvider').dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + let [id, options] = this.getRegistration(documentSelector, capabilities.colorProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideColorPresentations: (color, context, token) => { + const client = this._client; + const provideColorPresentations = (color, context, token) => { + const requestParams = { + color, + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(context.document), + range: client.code2ProtocolConverter.asRange(context.range) + }; + return client.sendRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, requestParams, token).then(this.asColorPresentations.bind(this), (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideColorPresentations + ? middleware.provideColorPresentations(color, context, token, provideColorPresentations) + : provideColorPresentations(color, context, token); + }, + provideDocumentColors: (document, token) => { + const client = this._client; + const provideDocumentColors = (document, token) => { + const requestParams = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) + }; + return client.sendRequest(vscode_languageserver_protocol_1.DocumentColorRequest.type, requestParams, token).then(this.asColorInformations.bind(this), (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDocumentColors + ? middleware.provideDocumentColors(document, token, provideDocumentColors) + : provideDocumentColors(document, token); + } + }; + return [vscode_1.languages.registerColorProvider(options.documentSelector, provider), provider]; + } + asColor(color) { + return new vscode_1.Color(color.red, color.green, color.blue, color.alpha); + } + asColorInformations(colorInformation) { + if (Array.isArray(colorInformation)) { + return colorInformation.map(ci => { + return new vscode_1.ColorInformation(this._client.protocol2CodeConverter.asRange(ci.range), this.asColor(ci.color)); + }); + } + return []; + } + asColorPresentations(colorPresentations) { + if (Array.isArray(colorPresentations)) { + return colorPresentations.map(cp => { + let presentation = new vscode_1.ColorPresentation(cp.label); + presentation.additionalTextEdits = this._client.protocol2CodeConverter.asTextEdits(cp.additionalTextEdits); + presentation.textEdit = this._client.protocol2CodeConverter.asTextEdit(cp.textEdit); + return presentation; + }); + } + return []; + } +} +exports.ColorProviderFeature = ColorProviderFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/configuration.js": +/*!******************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/configuration.js ***! + \******************************************************************/ +/*! flagged exports */ +/*! export ConfigurationFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +class ConfigurationFeature { + constructor(_client) { + this._client = _client; + } + fillClientCapabilities(capabilities) { + capabilities.workspace = capabilities.workspace || {}; + capabilities.workspace.configuration = true; + } + initialize() { + let client = this._client; + client.onRequest(vscode_languageserver_protocol_1.ConfigurationRequest.type, (params, token) => { + let configuration = (params) => { + let result = []; + for (let item of params.items) { + let resource = item.scopeUri !== void 0 && item.scopeUri !== null ? this._client.protocol2CodeConverter.asUri(item.scopeUri) : undefined; + result.push(this.getConfiguration(resource, item.section !== null ? item.section : undefined)); + } + return result; + }; + let middleware = client.clientOptions.middleware.workspace; + return middleware && middleware.configuration + ? middleware.configuration(params, token, configuration) + : configuration(params, token); + }); + } + getConfiguration(resource, section) { + let result = null; + if (section) { + let index = section.lastIndexOf('.'); + if (index === -1) { + result = vscode_1.workspace.getConfiguration(undefined, resource).get(section); + } + else { + let config = vscode_1.workspace.getConfiguration(section.substr(0, index), resource); + if (config) { + result = config.get(section.substr(index + 1)); + } + } + } + else { + let config = vscode_1.workspace.getConfiguration(undefined, resource); + result = {}; + for (let key of Object.keys(config)) { + if (config.has(key)) { + result[key] = config.get(key); + } + } + } + if (!result) { + return null; + } + return result; + } +} +exports.ConfigurationFeature = ConfigurationFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/declaration.js": +/*!****************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/declaration.js ***! + \****************************************************************/ +/*! flagged exports */ +/*! export DeclarationFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +class DeclarationFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.DeclarationRequest.type); + } + fillClientCapabilities(capabilites) { + const declarationSupport = ensure(ensure(capabilites, 'textDocument'), 'declaration'); + declarationSupport.dynamicRegistration = true; + declarationSupport.linkSupport = true; + } + initialize(capabilities, documentSelector) { + const [id, options] = this.getRegistration(documentSelector, capabilities.declarationProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideDeclaration: (document, position, token) => { + const client = this._client; + const provideDeclaration = (document, position, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDeclarationResult, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideDeclaration + ? middleware.provideDeclaration(document, position, token, provideDeclaration) + : provideDeclaration(document, position, token); + } + }; + return [vscode_1.languages.registerDeclarationProvider(options.documentSelector, provider), provider]; + } +} +exports.DeclarationFeature = DeclarationFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/foldingRange.js": +/*!*****************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/foldingRange.js ***! + \*****************************************************************/ +/*! flagged exports */ +/*! export FoldingRangeFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +class FoldingRangeFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.FoldingRangeRequest.type); + } + fillClientCapabilities(capabilites) { + let capability = ensure(ensure(capabilites, 'textDocument'), 'foldingRange'); + capability.dynamicRegistration = true; + capability.rangeLimit = 5000; + capability.lineFoldingOnly = true; + } + initialize(capabilities, documentSelector) { + let [id, options] = this.getRegistration(documentSelector, capabilities.foldingRangeProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideFoldingRanges: (document, context, token) => { + const client = this._client; + const provideFoldingRanges = (document, _, token) => { + const requestParams = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) + }; + return client.sendRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, requestParams, token).then(this.asFoldingRanges.bind(this), (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideFoldingRanges + ? middleware.provideFoldingRanges(document, context, token, provideFoldingRanges) + : provideFoldingRanges(document, context, token); + } + }; + return [vscode_1.languages.registerFoldingRangeProvider(options.documentSelector, provider), provider]; + } + asFoldingRangeKind(kind) { + if (kind) { + switch (kind) { + case vscode_languageserver_protocol_1.FoldingRangeKind.Comment: + return vscode_1.FoldingRangeKind.Comment; + case vscode_languageserver_protocol_1.FoldingRangeKind.Imports: + return vscode_1.FoldingRangeKind.Imports; + case vscode_languageserver_protocol_1.FoldingRangeKind.Region: + return vscode_1.FoldingRangeKind.Region; + } + } + return void 0; + } + asFoldingRanges(foldingRanges) { + if (Array.isArray(foldingRanges)) { + return foldingRanges.map(r => { + return new vscode_1.FoldingRange(r.startLine, r.endLine, this.asFoldingRangeKind(r.kind)); + }); + } + return []; + } +} +exports.FoldingRangeFeature = FoldingRangeFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/implementation.js": +/*!*******************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/implementation.js ***! + \*******************************************************************/ +/*! flagged exports */ +/*! export ImplementationFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +class ImplementationFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.ImplementationRequest.type); + } + fillClientCapabilities(capabilites) { + let implementationSupport = ensure(ensure(capabilites, 'textDocument'), 'implementation'); + implementationSupport.dynamicRegistration = true; + implementationSupport.linkSupport = true; + } + initialize(capabilities, documentSelector) { + let [id, options] = this.getRegistration(documentSelector, capabilities.implementationProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideImplementation: (document, position, token) => { + const client = this._client; + const provideImplementation = (document, position, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDefinitionResult, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideImplementation + ? middleware.provideImplementation(document, position, token, provideImplementation) + : provideImplementation(document, position, token); + } + }; + return [vscode_1.languages.registerImplementationProvider(options.documentSelector, provider), provider]; + } +} +exports.ImplementationFeature = ImplementationFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/main.js": +/*!*********************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/main.js ***! + \*********************************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/*! CommonJS bailout: exports.hasOwnProperty(...) prevents optimization as exports is passed as call context at 7:26-48 */ +/*! CommonJS bailout: exports is used directly at 7:53-60 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", ({ value: true })); +const cp = __webpack_require__(/*! child_process */ "child_process"); +const fs = __webpack_require__(/*! fs */ "fs"); +const SemVer = __webpack_require__(/*! semver */ "../node_modules/vscode-languageclient/node_modules/semver/semver.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const colorProvider_1 = __webpack_require__(/*! ./colorProvider */ "../node_modules/vscode-languageclient/lib/colorProvider.js"); +const configuration_1 = __webpack_require__(/*! ./configuration */ "../node_modules/vscode-languageclient/lib/configuration.js"); +const implementation_1 = __webpack_require__(/*! ./implementation */ "../node_modules/vscode-languageclient/lib/implementation.js"); +const typeDefinition_1 = __webpack_require__(/*! ./typeDefinition */ "../node_modules/vscode-languageclient/lib/typeDefinition.js"); +const workspaceFolders_1 = __webpack_require__(/*! ./workspaceFolders */ "../node_modules/vscode-languageclient/lib/workspaceFolders.js"); +const foldingRange_1 = __webpack_require__(/*! ./foldingRange */ "../node_modules/vscode-languageclient/lib/foldingRange.js"); +const declaration_1 = __webpack_require__(/*! ./declaration */ "../node_modules/vscode-languageclient/lib/declaration.js"); +const selectionRange_1 = __webpack_require__(/*! ./selectionRange */ "../node_modules/vscode-languageclient/lib/selectionRange.js"); +const progress_1 = __webpack_require__(/*! ./progress */ "../node_modules/vscode-languageclient/lib/progress.js"); +const callHierarchy_proposed_1 = __webpack_require__(/*! ./callHierarchy.proposed */ "../node_modules/vscode-languageclient/lib/callHierarchy.proposed.js"); +const semanticTokens_proposed_1 = __webpack_require__(/*! ./semanticTokens.proposed */ "../node_modules/vscode-languageclient/lib/semanticTokens.proposed.js"); +const Is = __webpack_require__(/*! ./utils/is */ "../node_modules/vscode-languageclient/lib/utils/is.js"); +const processes_1 = __webpack_require__(/*! ./utils/processes */ "../node_modules/vscode-languageclient/lib/utils/processes.js"); +__export(__webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js")); +const REQUIRED_VSCODE_VERSION = '^1.41.0'; // do not change format, updated by `updateVSCode` script +var Executable; +(function (Executable) { + function is(value) { + return Is.string(value.command); + } + Executable.is = is; +})(Executable || (Executable = {})); +var TransportKind; +(function (TransportKind) { + TransportKind[TransportKind["stdio"] = 0] = "stdio"; + TransportKind[TransportKind["ipc"] = 1] = "ipc"; + TransportKind[TransportKind["pipe"] = 2] = "pipe"; + TransportKind[TransportKind["socket"] = 3] = "socket"; +})(TransportKind = exports.TransportKind || (exports.TransportKind = {})); +var Transport; +(function (Transport) { + function isSocket(value) { + let candidate = value; + return candidate && candidate.kind === TransportKind.socket && Is.number(candidate.port); + } + Transport.isSocket = isSocket; +})(Transport || (Transport = {})); +var NodeModule; +(function (NodeModule) { + function is(value) { + return Is.string(value.module); + } + NodeModule.is = is; +})(NodeModule || (NodeModule = {})); +var StreamInfo; +(function (StreamInfo) { + function is(value) { + let candidate = value; + return candidate && candidate.writer !== void 0 && candidate.reader !== void 0; + } + StreamInfo.is = is; +})(StreamInfo || (StreamInfo = {})); +var ChildProcessInfo; +(function (ChildProcessInfo) { + function is(value) { + let candidate = value; + return candidate && candidate.process !== void 0 && typeof candidate.detached === 'boolean'; + } + ChildProcessInfo.is = is; +})(ChildProcessInfo || (ChildProcessInfo = {})); +class LanguageClient extends client_1.BaseLanguageClient { + constructor(arg1, arg2, arg3, arg4, arg5) { + let id; + let name; + let serverOptions; + let clientOptions; + let forceDebug; + if (Is.string(arg2)) { + id = arg1; + name = arg2; + serverOptions = arg3; + clientOptions = arg4; + forceDebug = !!arg5; + } + else { + id = arg1.toLowerCase(); + name = arg1; + serverOptions = arg2; + clientOptions = arg3; + forceDebug = arg4; + } + if (forceDebug === void 0) { + forceDebug = false; + } + super(id, name, clientOptions); + this._serverOptions = serverOptions; + this._forceDebug = forceDebug; + try { + this.checkVersion(); + } + catch (error) { + if (Is.string(error.message)) { + this.outputChannel.appendLine(error.message); + } + throw error; + } + } + checkVersion() { + let codeVersion = SemVer.parse(vscode_1.version); + if (!codeVersion) { + throw new Error(`No valid VS Code version detected. Version string is: ${vscode_1.version}`); + } + // Remove the insider pre-release since we stay API compatible. + if (codeVersion.prerelease && codeVersion.prerelease.length > 0) { + codeVersion.prerelease = []; + } + if (!SemVer.satisfies(codeVersion, REQUIRED_VSCODE_VERSION)) { + throw new Error(`The language client requires VS Code version ${REQUIRED_VSCODE_VERSION} but received version ${vscode_1.version}`); + } + } + stop() { + return super.stop().then(() => { + if (this._serverProcess) { + let toCheck = this._serverProcess; + this._serverProcess = undefined; + if (this._isDetached === void 0 || !this._isDetached) { + this.checkProcessDied(toCheck); + } + this._isDetached = undefined; + } + }); + } + checkProcessDied(childProcess) { + if (!childProcess) { + return; + } + setTimeout(() => { + // Test if the process is still alive. Throws an exception if not + try { + process.kill(childProcess.pid, 0); + processes_1.terminate(childProcess); + } + catch (error) { + // All is fine. + } + }, 2000); + } + handleConnectionClosed() { + this._serverProcess = undefined; + super.handleConnectionClosed(); + } + createMessageTransports(encoding) { + function getEnvironment(env, fork) { + if (!env && !fork) { + return undefined; + } + let result = Object.create(null); + Object.keys(process.env).forEach(key => result[key] = process.env[key]); + if (fork) { + result['ELECTRON_RUN_AS_NODE'] = '1'; + result['ELECTRON_NO_ASAR'] = '1'; + } + if (env) { + Object.keys(env).forEach(key => result[key] = env[key]); + } + return result; + } + const debugStartWith = ['--debug=', '--debug-brk=', '--inspect=', '--inspect-brk=']; + const debugEquals = ['--debug', '--debug-brk', '--inspect', '--inspect-brk']; + function startedInDebugMode() { + let args = process.execArgv; + if (args) { + return args.some((arg) => { + return debugStartWith.some(value => arg.startsWith(value)) || + debugEquals.some(value => arg === value); + }); + } + return false; + } + function assertStdio(process) { + if (process.stdin === null || process.stdout === null || process.stderr === null) { + throw new Error('Process created without stdio streams'); + } + } + let server = this._serverOptions; + // We got a function. + if (Is.func(server)) { + return server().then((result) => { + if (client_1.MessageTransports.is(result)) { + this._isDetached = !!result.detached; + return result; + } + else if (StreamInfo.is(result)) { + this._isDetached = !!result.detached; + return { reader: new vscode_languageserver_protocol_1.StreamMessageReader(result.reader), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(result.writer) }; + } + else { + let cp; + if (ChildProcessInfo.is(result)) { + cp = result.process; + this._isDetached = result.detached; + } + else { + cp = result; + this._isDetached = false; + } + cp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + return { reader: new vscode_languageserver_protocol_1.StreamMessageReader(cp.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(cp.stdin) }; + } + }); + } + let json; + let runDebug = server; + if (runDebug.run || runDebug.debug) { + if (this._forceDebug || startedInDebugMode()) { + json = runDebug.debug; + } + else { + json = runDebug.run; + } + } + else { + json = server; + } + return this._getServerWorkingDir(json.options).then(serverWorkingDir => { + if (NodeModule.is(json) && json.module) { + let node = json; + let transport = node.transport || TransportKind.stdio; + if (node.runtime) { + let args = []; + let options = node.options || Object.create(null); + if (options.execArgv) { + options.execArgv.forEach(element => args.push(element)); + } + args.push(node.module); + if (node.args) { + node.args.forEach(element => args.push(element)); + } + let execOptions = Object.create(null); + execOptions.cwd = serverWorkingDir; + execOptions.env = getEnvironment(options.env, false); + let pipeName = undefined; + if (transport === TransportKind.ipc) { + // exec options not correctly typed in lib + execOptions.stdio = [null, null, null, 'ipc']; + args.push('--node-ipc'); + } + else if (transport === TransportKind.stdio) { + args.push('--stdio'); + } + else if (transport === TransportKind.pipe) { + pipeName = vscode_languageserver_protocol_1.generateRandomPipeName(); + args.push(`--pipe=${pipeName}`); + } + else if (Transport.isSocket(transport)) { + args.push(`--socket=${transport.port}`); + } + args.push(`--clientProcessId=${process.pid.toString()}`); + if (transport === TransportKind.ipc || transport === TransportKind.stdio) { + let serverProcess = cp.spawn(node.runtime, args, execOptions); + if (!serverProcess || !serverProcess.pid) { + return Promise.reject(`Launching server using runtime ${node.runtime} failed.`); + } + this._serverProcess = serverProcess; + serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + if (transport === TransportKind.ipc) { + serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + return Promise.resolve({ reader: new vscode_languageserver_protocol_1.IPCMessageReader(serverProcess), writer: new vscode_languageserver_protocol_1.IPCMessageWriter(serverProcess) }); + } + else { + return Promise.resolve({ reader: new vscode_languageserver_protocol_1.StreamMessageReader(serverProcess.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(serverProcess.stdin) }); + } + } + else if (transport === TransportKind.pipe) { + return vscode_languageserver_protocol_1.createClientPipeTransport(pipeName).then((transport) => { + let process = cp.spawn(node.runtime, args, execOptions); + if (!process || !process.pid) { + return Promise.reject(`Launching server using runtime ${node.runtime} failed.`); + } + this._serverProcess = process; + process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + return transport.onConnected().then((protocol) => { + return { reader: protocol[0], writer: protocol[1] }; + }); + }); + } + else if (Transport.isSocket(transport)) { + return vscode_languageserver_protocol_1.createClientSocketTransport(transport.port).then((transport) => { + let process = cp.spawn(node.runtime, args, execOptions); + if (!process || !process.pid) { + return Promise.reject(`Launching server using runtime ${node.runtime} failed.`); + } + this._serverProcess = process; + process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + return transport.onConnected().then((protocol) => { + return { reader: protocol[0], writer: protocol[1] }; + }); + }); + } + } + else { + let pipeName = undefined; + return new Promise((resolve, _reject) => { + let args = node.args && node.args.slice() || []; + if (transport === TransportKind.ipc) { + args.push('--node-ipc'); + } + else if (transport === TransportKind.stdio) { + args.push('--stdio'); + } + else if (transport === TransportKind.pipe) { + pipeName = vscode_languageserver_protocol_1.generateRandomPipeName(); + args.push(`--pipe=${pipeName}`); + } + else if (Transport.isSocket(transport)) { + args.push(`--socket=${transport.port}`); + } + args.push(`--clientProcessId=${process.pid.toString()}`); + let options = node.options || Object.create(null); + options.env = getEnvironment(options.env, true); + options.execArgv = options.execArgv || []; + options.cwd = serverWorkingDir; + options.silent = true; + if (transport === TransportKind.ipc || transport === TransportKind.stdio) { + let sp = cp.fork(node.module, args || [], options); + assertStdio(sp); + this._serverProcess = sp; + sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + if (transport === TransportKind.ipc) { + sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + resolve({ reader: new vscode_languageserver_protocol_1.IPCMessageReader(this._serverProcess), writer: new vscode_languageserver_protocol_1.IPCMessageWriter(this._serverProcess) }); + } + else { + resolve({ reader: new vscode_languageserver_protocol_1.StreamMessageReader(sp.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(sp.stdin) }); + } + } + else if (transport === TransportKind.pipe) { + vscode_languageserver_protocol_1.createClientPipeTransport(pipeName).then((transport) => { + let sp = cp.fork(node.module, args || [], options); + assertStdio(sp); + this._serverProcess = sp; + sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + transport.onConnected().then((protocol) => { + resolve({ reader: protocol[0], writer: protocol[1] }); + }); + }); + } + else if (Transport.isSocket(transport)) { + vscode_languageserver_protocol_1.createClientSocketTransport(transport.port).then((transport) => { + let sp = cp.fork(node.module, args || [], options); + assertStdio(sp); + this._serverProcess = sp; + sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + transport.onConnected().then((protocol) => { + resolve({ reader: protocol[0], writer: protocol[1] }); + }); + }); + } + }); + } + } + else if (Executable.is(json) && json.command) { + let command = json; + let args = command.args || []; + let options = Object.assign({}, command.options); + options.cwd = options.cwd || serverWorkingDir; + let serverProcess = cp.spawn(command.command, args, options); + if (!serverProcess || !serverProcess.pid) { + return Promise.reject(`Launching server using command ${command.command} failed.`); + } + serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding))); + this._serverProcess = serverProcess; + this._isDetached = !!options.detached; + return Promise.resolve({ reader: new vscode_languageserver_protocol_1.StreamMessageReader(serverProcess.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(serverProcess.stdin) }); + } + return Promise.reject(new Error(`Unsupported server configuration ` + JSON.stringify(server, null, 4))); + }); + } + registerProposedFeatures() { + this.registerFeatures(ProposedFeatures.createAll(this)); + } + registerBuiltinFeatures() { + super.registerBuiltinFeatures(); + this.registerFeature(new configuration_1.ConfigurationFeature(this)); + this.registerFeature(new typeDefinition_1.TypeDefinitionFeature(this)); + this.registerFeature(new implementation_1.ImplementationFeature(this)); + this.registerFeature(new colorProvider_1.ColorProviderFeature(this)); + this.registerFeature(new workspaceFolders_1.WorkspaceFoldersFeature(this)); + this.registerFeature(new foldingRange_1.FoldingRangeFeature(this)); + this.registerFeature(new declaration_1.DeclarationFeature(this)); + this.registerFeature(new selectionRange_1.SelectionRangeFeature(this)); + this.registerFeature(new progress_1.ProgressFeature(this)); + } + _mainGetRootPath() { + let folders = vscode_1.workspace.workspaceFolders; + if (!folders || folders.length === 0) { + return undefined; + } + let folder = folders[0]; + if (folder.uri.scheme === 'file') { + return folder.uri.fsPath; + } + return undefined; + } + _getServerWorkingDir(options) { + let cwd = options && options.cwd; + if (!cwd) { + cwd = this.clientOptions.workspaceFolder + ? this.clientOptions.workspaceFolder.uri.fsPath + : this._mainGetRootPath(); + } + if (cwd) { + // make sure the folder exists otherwise creating the process will fail + return new Promise(s => { + fs.lstat(cwd, (err, stats) => { + s(!err && stats.isDirectory() ? cwd : undefined); + }); + }); + } + return Promise.resolve(undefined); + } +} +exports.LanguageClient = LanguageClient; +class SettingMonitor { + constructor(_client, _setting) { + this._client = _client; + this._setting = _setting; + this._listeners = []; + } + start() { + vscode_1.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this._listeners); + this.onDidChangeConfiguration(); + return new vscode_1.Disposable(() => { + if (this._client.needsStop()) { + this._client.stop(); + } + }); + } + onDidChangeConfiguration() { + let index = this._setting.indexOf('.'); + let primary = index >= 0 ? this._setting.substr(0, index) : this._setting; + let rest = index >= 0 ? this._setting.substr(index + 1) : undefined; + let enabled = rest ? vscode_1.workspace.getConfiguration(primary).get(rest, false) : vscode_1.workspace.getConfiguration(primary); + if (enabled && this._client.needsStart()) { + this._client.start(); + } + else if (!enabled && this._client.needsStop()) { + this._client.stop(); + } + } +} +exports.SettingMonitor = SettingMonitor; +// Exporting proposed protocol. +var ProposedFeatures; +(function (ProposedFeatures) { + function createAll(client) { + let result = [ + new callHierarchy_proposed_1.CallHierarchyFeature(client), + new semanticTokens_proposed_1.SemanticTokensFeature(client) + ]; + return result; + } + ProposedFeatures.createAll = createAll; +})(ProposedFeatures = exports.ProposedFeatures || (exports.ProposedFeatures = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/progress.js": +/*!*************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/progress.js ***! + \*************************************************************/ +/*! flagged exports */ +/*! export ProgressFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const progressPart_1 = __webpack_require__(/*! ./progressPart */ "../node_modules/vscode-languageclient/lib/progressPart.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = Object.create(null); + } + return target[key]; +} +class ProgressFeature { + constructor(_client) { + this._client = _client; + } + fillClientCapabilities(capabilities) { + ensure(capabilities, 'window').workDoneProgress = true; + } + initialize() { + let client = this._client; + let createHandler = (params) => { + new progressPart_1.ProgressPart(this._client, params.token); + }; + client.onRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, createHandler); + } +} +exports.ProgressFeature = ProgressFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/progressPart.js": +/*!*****************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/progressPart.js ***! + \*****************************************************************/ +/*! flagged exports */ +/*! export ProgressPart [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const Is = __webpack_require__(/*! ./utils/is */ "../node_modules/vscode-languageclient/lib/utils/is.js"); +class ProgressPart { + constructor(_client, _token) { + this._client = _client; + this._token = _token; + this._reported = 0; + this._disposable = this._client.onProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, (value) => { + switch (value.kind) { + case 'begin': + this.begin(value); + break; + case 'report': + this.report(value); + break; + case 'end': + this.done(); + break; + } + }); + } + begin(params) { + let location = params.cancellable ? vscode_1.ProgressLocation.Notification : vscode_1.ProgressLocation.Window; + vscode_1.window.withProgress({ location, cancellable: params.cancellable, title: params.title }, async (progress, cancellationToken) => { + this._progress = progress; + this._infinite = params.percentage === undefined; + this._cancellationToken = cancellationToken; + this._cancellationToken.onCancellationRequested(() => { + this._client.sendNotification(vscode_languageserver_protocol_1.WorkDoneProgressCancelNotification.type, { token: this._token }); + }); + this.report(params); + return new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; + }); + }); + } + report(params) { + if (this._infinite && Is.string(params.message)) { + this._progress.report({ message: params.message }); + } + else if (Is.number(params.percentage)) { + let percentage = Math.max(0, Math.min(params.percentage, 100)); + let delta = Math.max(0, percentage - this._reported); + this._progress.report({ message: params.message, increment: delta }); + this._reported += delta; + } + } + cancel() { + if (this._disposable) { + this._disposable.dispose(); + this._disposable = undefined; + } + if (this._reject) { + this._reject(); + this._resolve = undefined; + this._reject = undefined; + } + } + done() { + if (this._disposable) { + this._disposable.dispose(); + this._disposable = undefined; + } + if (this._resolve) { + this._resolve(); + this._resolve = undefined; + this._reject = undefined; + } + } +} +exports.ProgressPart = ProgressPart; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/protocolCodeLens.js": +/*!*********************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/protocolCodeLens.js ***! + \*********************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const code = __webpack_require__(/*! vscode */ "vscode"); +class ProtocolCodeLens extends code.CodeLens { + constructor(range) { + super(range); + } +} +exports.default = ProtocolCodeLens; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/protocolCompletionItem.js": +/*!***************************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/protocolCompletionItem.js ***! + \***************************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const code = __webpack_require__(/*! vscode */ "vscode"); +class ProtocolCompletionItem extends code.CompletionItem { + constructor(label) { + super(label); + } +} +exports.default = ProtocolCompletionItem; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/protocolConverter.js": +/*!**********************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/protocolConverter.js ***! + \**********************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export createConverter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const code = __webpack_require__(/*! vscode */ "vscode"); +const ls = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const Is = __webpack_require__(/*! ./utils/is */ "../node_modules/vscode-languageclient/lib/utils/is.js"); +const protocolCompletionItem_1 = __webpack_require__(/*! ./protocolCompletionItem */ "../node_modules/vscode-languageclient/lib/protocolCompletionItem.js"); +const protocolCodeLens_1 = __webpack_require__(/*! ./protocolCodeLens */ "../node_modules/vscode-languageclient/lib/protocolCodeLens.js"); +const protocolDocumentLink_1 = __webpack_require__(/*! ./protocolDocumentLink */ "../node_modules/vscode-languageclient/lib/protocolDocumentLink.js"); +var CodeBlock; +(function (CodeBlock) { + function is(value) { + let candidate = value; + return candidate && Is.string(candidate.language) && Is.string(candidate.value); + } + CodeBlock.is = is; +})(CodeBlock || (CodeBlock = {})); +function createConverter(uriConverter) { + const nullConverter = (value) => code.Uri.parse(value); + const _uriConverter = uriConverter || nullConverter; + function asUri(value) { + return _uriConverter(value); + } + function asDiagnostics(diagnostics) { + return diagnostics.map(asDiagnostic); + } + function asDiagnostic(diagnostic) { + let result = new code.Diagnostic(asRange(diagnostic.range), diagnostic.message, asDiagnosticSeverity(diagnostic.severity)); + if (Is.number(diagnostic.code) || Is.string(diagnostic.code)) { + result.code = diagnostic.code; + } + if (diagnostic.source) { + result.source = diagnostic.source; + } + if (diagnostic.relatedInformation) { + result.relatedInformation = asRelatedInformation(diagnostic.relatedInformation); + } + if (Array.isArray(diagnostic.tags)) { + result.tags = asDiagnosticTags(diagnostic.tags); + } + return result; + } + function asRelatedInformation(relatedInformation) { + return relatedInformation.map(asDiagnosticRelatedInformation); + } + function asDiagnosticRelatedInformation(information) { + return new code.DiagnosticRelatedInformation(asLocation(information.location), information.message); + } + function asDiagnosticTags(tags) { + if (!tags) { + return undefined; + } + let result = []; + for (let tag of tags) { + let converted = asDiagnosticTag(tag); + if (converted !== undefined) { + result.push(converted); + } + } + return result.length > 0 ? result : undefined; + } + function asDiagnosticTag(tag) { + switch (tag) { + case ls.DiagnosticTag.Unnecessary: + return code.DiagnosticTag.Unnecessary; + case ls.DiagnosticTag.Deprecated: + return code.DiagnosticTag.Deprecated; + default: + return undefined; + } + } + function asPosition(value) { + if (!value) { + return undefined; + } + return new code.Position(value.line, value.character); + } + function asRange(value) { + if (!value) { + return undefined; + } + return new code.Range(asPosition(value.start), asPosition(value.end)); + } + function asRanges(value) { + return value.map(value => asRange(value)); + } + function asDiagnosticSeverity(value) { + if (value === undefined || value === null) { + return code.DiagnosticSeverity.Error; + } + switch (value) { + case ls.DiagnosticSeverity.Error: + return code.DiagnosticSeverity.Error; + case ls.DiagnosticSeverity.Warning: + return code.DiagnosticSeverity.Warning; + case ls.DiagnosticSeverity.Information: + return code.DiagnosticSeverity.Information; + case ls.DiagnosticSeverity.Hint: + return code.DiagnosticSeverity.Hint; + } + return code.DiagnosticSeverity.Error; + } + function asHoverContent(value) { + if (Is.string(value)) { + return new code.MarkdownString(value); + } + else if (CodeBlock.is(value)) { + let result = new code.MarkdownString(); + return result.appendCodeblock(value.value, value.language); + } + else if (Array.isArray(value)) { + let result = []; + for (let element of value) { + let item = new code.MarkdownString(); + if (CodeBlock.is(element)) { + item.appendCodeblock(element.value, element.language); + } + else { + item.appendMarkdown(element); + } + result.push(item); + } + return result; + } + else { + let result; + switch (value.kind) { + case ls.MarkupKind.Markdown: + return new code.MarkdownString(value.value); + case ls.MarkupKind.PlainText: + result = new code.MarkdownString(); + result.appendText(value.value); + return result; + default: + result = new code.MarkdownString(); + result.appendText(`Unsupported Markup content received. Kind is: ${value.kind}`); + return result; + } + } + } + function asDocumentation(value) { + if (Is.string(value)) { + return value; + } + else { + switch (value.kind) { + case ls.MarkupKind.Markdown: + return new code.MarkdownString(value.value); + case ls.MarkupKind.PlainText: + return value.value; + default: + return `Unsupported Markup content received. Kind is: ${value.kind}`; + } + } + } + function asHover(hover) { + if (!hover) { + return undefined; + } + return new code.Hover(asHoverContent(hover.contents), asRange(hover.range)); + } + function asCompletionResult(result) { + if (!result) { + return undefined; + } + if (Array.isArray(result)) { + let items = result; + return items.map(asCompletionItem); + } + let list = result; + return new code.CompletionList(list.items.map(asCompletionItem), list.isIncomplete); + } + function asCompletionItemKind(value) { + // Protocol item kind is 1 based, codes item kind is zero based. + if (ls.CompletionItemKind.Text <= value && value <= ls.CompletionItemKind.TypeParameter) { + return [value - 1, undefined]; + } + return [code.CompletionItemKind.Text, value]; + } + function asCompletionItemTag(tag) { + switch (tag) { + case ls.CompletionItemTag.Deprecated: + return code.CompletionItemTag.Deprecated; + } + return undefined; + } + function asCompletionItemTags(tags) { + if (tags === undefined || tags === null) { + return []; + } + const result = []; + for (let tag of tags) { + const converted = asCompletionItemTag(tag); + if (converted !== undefined) { + result.push(converted); + } + } + return result; + } + function asCompletionItem(item) { + let tags = asCompletionItemTags(item.tags); + let result = new protocolCompletionItem_1.default(item.label); + if (item.detail) { + result.detail = item.detail; + } + if (item.documentation) { + result.documentation = asDocumentation(item.documentation); + result.documentationFormat = Is.string(item.documentation) ? '$string' : item.documentation.kind; + } + if (item.filterText) { + result.filterText = item.filterText; + } + let insertText = asCompletionInsertText(item); + if (insertText) { + result.insertText = insertText.text; + result.range = insertText.range; + result.fromEdit = insertText.fromEdit; + } + if (Is.number(item.kind)) { + let [itemKind, original] = asCompletionItemKind(item.kind); + result.kind = itemKind; + if (original) { + result.originalItemKind = original; + } + } + if (item.sortText) { + result.sortText = item.sortText; + } + if (item.additionalTextEdits) { + result.additionalTextEdits = asTextEdits(item.additionalTextEdits); + } + if (Is.stringArray(item.commitCharacters)) { + result.commitCharacters = item.commitCharacters.slice(); + } + if (item.command) { + result.command = asCommand(item.command); + } + if (item.deprecated === true || item.deprecated === false) { + result.deprecated = item.deprecated; + if (item.deprecated === true) { + tags.push(code.CompletionItemTag.Deprecated); + } + } + if (item.preselect === true || item.preselect === false) { + result.preselect = item.preselect; + } + if (item.data !== undefined) { + result.data = item.data; + } + if (tags.length > 0) { + result.tags = tags; + } + return result; + } + function asCompletionInsertText(item) { + if (item.textEdit) { + if (item.insertTextFormat === ls.InsertTextFormat.Snippet) { + return { text: new code.SnippetString(item.textEdit.newText), range: asRange(item.textEdit.range), fromEdit: true }; + } + else { + return { text: item.textEdit.newText, range: asRange(item.textEdit.range), fromEdit: true }; + } + } + else if (item.insertText) { + if (item.insertTextFormat === ls.InsertTextFormat.Snippet) { + return { text: new code.SnippetString(item.insertText), fromEdit: false }; + } + else { + return { text: item.insertText, fromEdit: false }; + } + } + else { + return undefined; + } + } + function asTextEdit(edit) { + if (!edit) { + return undefined; + } + return new code.TextEdit(asRange(edit.range), edit.newText); + } + function asTextEdits(items) { + if (!items) { + return undefined; + } + return items.map(asTextEdit); + } + function asSignatureHelp(item) { + if (!item) { + return undefined; + } + let result = new code.SignatureHelp(); + if (Is.number(item.activeSignature)) { + result.activeSignature = item.activeSignature; + } + else { + // activeSignature was optional in the past + result.activeSignature = 0; + } + if (Is.number(item.activeParameter)) { + result.activeParameter = item.activeParameter; + } + else { + // activeParameter was optional in the past + result.activeParameter = 0; + } + if (item.signatures) { + result.signatures = asSignatureInformations(item.signatures); + } + return result; + } + function asSignatureInformations(items) { + return items.map(asSignatureInformation); + } + function asSignatureInformation(item) { + let result = new code.SignatureInformation(item.label); + if (item.documentation) { + result.documentation = asDocumentation(item.documentation); + } + if (item.parameters) { + result.parameters = asParameterInformations(item.parameters); + } + return result; + } + function asParameterInformations(item) { + return item.map(asParameterInformation); + } + function asParameterInformation(item) { + let result = new code.ParameterInformation(item.label); + if (item.documentation) { + result.documentation = asDocumentation(item.documentation); + } + return result; + } + function asLocation(item) { + if (!item) { + return undefined; + } + return new code.Location(_uriConverter(item.uri), asRange(item.range)); + } + function asDeclarationResult(item) { + if (!item) { + return undefined; + } + return asLocationResult(item); + } + function asDefinitionResult(item) { + if (!item) { + return undefined; + } + return asLocationResult(item); + } + function asLocationLink(item) { + if (!item) { + return undefined; + } + let result = { + targetUri: _uriConverter(item.targetUri), + targetRange: asRange(item.targetSelectionRange), + originSelectionRange: asRange(item.originSelectionRange), + targetSelectionRange: asRange(item.targetSelectionRange) + }; + if (!result.targetSelectionRange) { + throw new Error(`targetSelectionRange must not be undefined or null`); + } + return result; + } + function asLocationResult(item) { + if (!item) { + return undefined; + } + if (Is.array(item)) { + if (item.length === 0) { + return []; + } + else if (ls.LocationLink.is(item[0])) { + let links = item; + return links.map((link) => asLocationLink(link)); + } + else { + let locations = item; + return locations.map((location) => asLocation(location)); + } + } + else if (ls.LocationLink.is(item)) { + return [asLocationLink(item)]; + } + else { + return asLocation(item); + } + } + function asReferences(values) { + if (!values) { + return undefined; + } + return values.map(location => asLocation(location)); + } + function asDocumentHighlights(values) { + if (!values) { + return undefined; + } + return values.map(asDocumentHighlight); + } + function asDocumentHighlight(item) { + let result = new code.DocumentHighlight(asRange(item.range)); + if (Is.number(item.kind)) { + result.kind = asDocumentHighlightKind(item.kind); + } + return result; + } + function asDocumentHighlightKind(item) { + switch (item) { + case ls.DocumentHighlightKind.Text: + return code.DocumentHighlightKind.Text; + case ls.DocumentHighlightKind.Read: + return code.DocumentHighlightKind.Read; + case ls.DocumentHighlightKind.Write: + return code.DocumentHighlightKind.Write; + } + return code.DocumentHighlightKind.Text; + } + function asSymbolInformations(values, uri) { + if (!values) { + return undefined; + } + return values.map(information => asSymbolInformation(information, uri)); + } + function asSymbolKind(item) { + if (item <= ls.SymbolKind.TypeParameter) { + // Symbol kind is one based in the protocol and zero based in code. + return item - 1; + } + return code.SymbolKind.Property; + } + function asSymbolTag(value) { + return value; + } + function asSymbolTags(items) { + if (items === undefined || items === null) { + return undefined; + } + return items.map(asSymbolTag); + } + function asSymbolInformation(item, uri) { + // Symbol kind is one based in the protocol and zero based in code. + let result = new code.SymbolInformation(item.name, asSymbolKind(item.kind), asRange(item.location.range), item.location.uri ? _uriConverter(item.location.uri) : uri); + if (item.containerName) { + result.containerName = item.containerName; + } + return result; + } + function asDocumentSymbols(values) { + if (values === undefined || values === null) { + return undefined; + } + return values.map(asDocumentSymbol); + } + function asDocumentSymbol(value) { + let result = new code.DocumentSymbol(value.name, value.detail || '', asSymbolKind(value.kind), asRange(value.range), asRange(value.selectionRange)); + if (value.children !== undefined && value.children.length > 0) { + let children = []; + for (let child of value.children) { + children.push(asDocumentSymbol(child)); + } + result.children = children; + } + return result; + } + function asCommand(item) { + let result = { title: item.title, command: item.command }; + if (item.arguments) { + result.arguments = item.arguments; + } + return result; + } + function asCommands(items) { + if (!items) { + return undefined; + } + return items.map(asCommand); + } + const kindMapping = new Map(); + kindMapping.set(ls.CodeActionKind.Empty, code.CodeActionKind.Empty); + kindMapping.set(ls.CodeActionKind.QuickFix, code.CodeActionKind.QuickFix); + kindMapping.set(ls.CodeActionKind.Refactor, code.CodeActionKind.Refactor); + kindMapping.set(ls.CodeActionKind.RefactorExtract, code.CodeActionKind.RefactorExtract); + kindMapping.set(ls.CodeActionKind.RefactorInline, code.CodeActionKind.RefactorInline); + kindMapping.set(ls.CodeActionKind.RefactorRewrite, code.CodeActionKind.RefactorRewrite); + kindMapping.set(ls.CodeActionKind.Source, code.CodeActionKind.Source); + kindMapping.set(ls.CodeActionKind.SourceOrganizeImports, code.CodeActionKind.SourceOrganizeImports); + function asCodeActionKind(item) { + if (item === undefined || item === null) { + return undefined; + } + let result = kindMapping.get(item); + if (result) { + return result; + } + let parts = item.split('.'); + result = code.CodeActionKind.Empty; + for (let part of parts) { + result = result.append(part); + } + return result; + } + function asCodeActionKinds(items) { + if (items === undefined || items === null) { + return undefined; + } + return items.map(kind => asCodeActionKind(kind)); + } + function asCodeAction(item) { + if (item === undefined || item === null) { + return undefined; + } + let result = new code.CodeAction(item.title); + if (item.kind !== undefined) { + result.kind = asCodeActionKind(item.kind); + } + if (item.diagnostics) { + result.diagnostics = asDiagnostics(item.diagnostics); + } + if (item.edit) { + result.edit = asWorkspaceEdit(item.edit); + } + if (item.command) { + result.command = asCommand(item.command); + } + if (item.isPreferred !== undefined) { + result.isPreferred = item.isPreferred; + } + return result; + } + function asCodeLens(item) { + if (!item) { + return undefined; + } + let result = new protocolCodeLens_1.default(asRange(item.range)); + if (item.command) { + result.command = asCommand(item.command); + } + if (item.data !== undefined && item.data !== null) { + result.data = item.data; + } + return result; + } + function asCodeLenses(items) { + if (!items) { + return undefined; + } + return items.map((codeLens) => asCodeLens(codeLens)); + } + function asWorkspaceEdit(item) { + if (!item) { + return undefined; + } + let result = new code.WorkspaceEdit(); + if (item.documentChanges) { + item.documentChanges.forEach(change => { + if (ls.CreateFile.is(change)) { + result.createFile(_uriConverter(change.uri), change.options); + } + else if (ls.RenameFile.is(change)) { + result.renameFile(_uriConverter(change.oldUri), _uriConverter(change.newUri), change.options); + } + else if (ls.DeleteFile.is(change)) { + result.deleteFile(_uriConverter(change.uri), change.options); + } + else if (ls.TextDocumentEdit.is(change)) { + result.set(_uriConverter(change.textDocument.uri), asTextEdits(change.edits)); + } + else { + console.error(`Unknown workspace edit change received:\n${JSON.stringify(change, undefined, 4)}`); + } + }); + } + else if (item.changes) { + Object.keys(item.changes).forEach(key => { + result.set(_uriConverter(key), asTextEdits(item.changes[key])); + }); + } + return result; + } + function asDocumentLink(item) { + let range = asRange(item.range); + let target = item.target ? asUri(item.target) : undefined; + // target must be optional in DocumentLink + let link = new protocolDocumentLink_1.default(range, target); + if (item.tooltip !== undefined) { + link.tooltip = item.tooltip; + } + if (item.data !== undefined && item.data !== null) { + link.data = item.data; + } + return link; + } + function asDocumentLinks(items) { + if (!items) { + return undefined; + } + return items.map(asDocumentLink); + } + function asColor(color) { + return new code.Color(color.red, color.green, color.blue, color.alpha); + } + function asColorInformation(ci) { + return new code.ColorInformation(asRange(ci.range), asColor(ci.color)); + } + function asColorInformations(colorInformation) { + if (Array.isArray(colorInformation)) { + return colorInformation.map(asColorInformation); + } + return undefined; + } + function asColorPresentation(cp) { + let presentation = new code.ColorPresentation(cp.label); + presentation.additionalTextEdits = asTextEdits(cp.additionalTextEdits); + if (cp.textEdit) { + presentation.textEdit = asTextEdit(cp.textEdit); + } + return presentation; + } + function asColorPresentations(colorPresentations) { + if (Array.isArray(colorPresentations)) { + return colorPresentations.map(asColorPresentation); + } + return undefined; + } + function asFoldingRangeKind(kind) { + if (kind) { + switch (kind) { + case ls.FoldingRangeKind.Comment: + return code.FoldingRangeKind.Comment; + case ls.FoldingRangeKind.Imports: + return code.FoldingRangeKind.Imports; + case ls.FoldingRangeKind.Region: + return code.FoldingRangeKind.Region; + } + } + return undefined; + } + function asFoldingRange(r) { + return new code.FoldingRange(r.startLine, r.endLine, asFoldingRangeKind(r.kind)); + } + function asFoldingRanges(foldingRanges) { + if (Array.isArray(foldingRanges)) { + return foldingRanges.map(asFoldingRange); + } + return undefined; + } + function asSelectionRange(selectionRange) { + return new code.SelectionRange(asRange(selectionRange.range), selectionRange.parent ? asSelectionRange(selectionRange.parent) : undefined); + } + function asSelectionRanges(selectionRanges) { + if (!Array.isArray(selectionRanges)) { + return []; + } + let result = []; + for (let range of selectionRanges) { + result.push(asSelectionRange(range)); + } + return result; + } + return { + asUri, + asDiagnostics, + asDiagnostic, + asRange, + asRanges, + asPosition, + asDiagnosticSeverity, + asDiagnosticTag, + asHover, + asCompletionResult, + asCompletionItem, + asTextEdit, + asTextEdits, + asSignatureHelp, + asSignatureInformations, + asSignatureInformation, + asParameterInformations, + asParameterInformation, + asDeclarationResult, + asDefinitionResult, + asLocation, + asReferences, + asDocumentHighlights, + asDocumentHighlight, + asDocumentHighlightKind, + asSymbolKind, + asSymbolTag, + asSymbolTags, + asSymbolInformations, + asSymbolInformation, + asDocumentSymbols, + asDocumentSymbol, + asCommand, + asCommands, + asCodeAction, + asCodeActionKind, + asCodeActionKinds, + asCodeLens, + asCodeLenses, + asWorkspaceEdit, + asDocumentLink, + asDocumentLinks, + asFoldingRangeKind, + asFoldingRange, + asFoldingRanges, + asColor, + asColorInformation, + asColorInformations, + asColorPresentation, + asColorPresentations, + asSelectionRange, + asSelectionRanges + }; +} +exports.createConverter = createConverter; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/protocolDocumentLink.js": +/*!*************************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/protocolDocumentLink.js ***! + \*************************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export default [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const code = __webpack_require__(/*! vscode */ "vscode"); +class ProtocolDocumentLink extends code.DocumentLink { + constructor(range, target) { + super(range, target); + } +} +exports.default = ProtocolDocumentLink; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/selectionRange.js": +/*!*******************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/selectionRange.js ***! + \*******************************************************************/ +/*! flagged exports */ +/*! export SelectionRangeFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = Object.create(null); + } + return target[key]; +} +class SelectionRangeFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.SelectionRangeRequest.type); + } + fillClientCapabilities(capabilites) { + let capability = ensure(ensure(capabilites, 'textDocument'), 'selectionRange'); + capability.dynamicRegistration = true; + } + initialize(capabilities, documentSelector) { + let [id, options] = this.getRegistration(documentSelector, capabilities.selectionRangeProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideSelectionRanges: (document, positions, token) => { + const client = this._client; + const provideSelectionRanges = (document, positions, token) => { + const requestParams = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + positions: client.code2ProtocolConverter.asPositions(positions) + }; + return client.sendRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, requestParams, token).then((ranges) => client.protocol2CodeConverter.asSelectionRanges(ranges), (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideSelectionRanges + ? middleware.provideSelectionRanges(document, positions, token, provideSelectionRanges) + : provideSelectionRanges(document, positions, token); + } + }; + return [vscode_1.languages.registerSelectionRangeProvider(options.documentSelector, provider), provider]; + } +} +exports.SelectionRangeFeature = SelectionRangeFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/semanticTokens.proposed.js": +/*!****************************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/semanticTokens.proposed.js ***! + \****************************************************************************/ +/*! flagged exports */ +/*! export SemanticTokensFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode = __webpack_require__(/*! vscode */ "vscode"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +var protocol2code; +(function (protocol2code) { + function asSemanticTokens(value) { + if (value === undefined || value === null) { + return undefined; + } + return new vscode.SemanticTokens(new Uint32Array(value.data), value.resultId); + } + protocol2code.asSemanticTokens = asSemanticTokens; + function asSemanticTokensEdit(value) { + return new vscode.SemanticTokensEdit(value.start, value.deleteCount, value.data !== undefined ? new Uint32Array(value.data) : undefined); + } + protocol2code.asSemanticTokensEdit = asSemanticTokensEdit; + function asSemanticTokensEdits(value) { + if (value === undefined || value === null) { + return undefined; + } + return new vscode.SemanticTokensEdits(value.edits.map(asSemanticTokensEdit), value.resultId); + } + protocol2code.asSemanticTokensEdits = asSemanticTokensEdits; + function asLegend(value) { + return value; + } + protocol2code.asLegend = asLegend; +})(protocol2code || (protocol2code = {})); +class SemanticTokensFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type); + } + fillClientCapabilities(cap) { + const capabilites = cap; + let capability = ensure(ensure(capabilites, 'textDocument'), 'semanticTokens'); + capability.dynamicRegistration = true; + capability.tokenTypes = [ + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.comment, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.keyword, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.number, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.regexp, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.operator, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.namespace, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.type, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.struct, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.class, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.interface, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.enum, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.typeParameter, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.function, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.member, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.macro, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.variable, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.parameter, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.property, + vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.label + ]; + capability.tokenModifiers = [ + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.declaration, + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.documentation, + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.static, + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.abstract, + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.deprecated, + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.async, + vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.readonly + ]; + } + initialize(cap, documentSelector) { + const capabilities = cap; + let [id, options] = this.getRegistration(documentSelector, capabilities.semanticTokensProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const hasEditProvider = options.documentProvider !== undefined && typeof options.documentProvider !== 'boolean' && options.documentProvider.edits === true; + const documentProvider = { + provideDocumentSemanticTokens: (document, token) => { + const client = this._client; + const middleware = client.clientOptions.middleware; + const provideDocumentSemanticTokens = (document, token) => { + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document) + }; + return client.sendRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type, params, token).then((result) => { + return protocol2code.asSemanticTokens(result); + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type, error); + return undefined; + }); + }; + return middleware.provideDocumentSemanticTokens + ? middleware.provideDocumentSemanticTokens(document, token, provideDocumentSemanticTokens) + : provideDocumentSemanticTokens(document, token); + }, + provideDocumentSemanticTokensEdits: hasEditProvider + ? (document, previousResultId, token) => { + const client = this._client; + const middleware = client.clientOptions.middleware; + const provideDocumentSemanticTokensEdits = (document, previousResultId, token) => { + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + previousResultId + }; + return client.sendRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensEditsRequest.type, params, token).then((result) => { + if (vscode_languageserver_protocol_1.Proposed.SemanticTokens.is(result)) { + return protocol2code.asSemanticTokens(result); + } + else { + return protocol2code.asSemanticTokensEdits(result); + } + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensEditsRequest.type, error); + return undefined; + }); + }; + return middleware.provideDocumentSemanticTokensEdits + ? middleware.provideDocumentSemanticTokensEdits(document, previousResultId, token, provideDocumentSemanticTokensEdits) + : provideDocumentSemanticTokensEdits(document, previousResultId, token); + } + : undefined + }; + const hasRangeProvider = options.rangeProvider === true; + const rangeProvider = hasRangeProvider + ? { + provideDocumentRangeSemanticTokens: (document, range, token) => { + const client = this._client; + const middleware = client.clientOptions.middleware; + const provideDocumentRangeSemanticTokens = (document, range, token) => { + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document), + range: client.code2ProtocolConverter.asRange(range) + }; + return client.sendRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRangeRequest.type, params, token).then((result) => { + return protocol2code.asSemanticTokens(result); + }, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRangeRequest.type, error); + return undefined; + }); + }; + return middleware.provideDocumentRangeSemanticTokens + ? middleware.provideDocumentRangeSemanticTokens(document, range, token, provideDocumentRangeSemanticTokens) + : provideDocumentRangeSemanticTokens(document, range, token); + } + } + : undefined; + const disposables = []; + const legend = protocol2code.asLegend(options.legend); + disposables.push(vscode.languages.registerDocumentSemanticTokensProvider(options.documentSelector, documentProvider, legend)); + if (rangeProvider !== undefined) { + disposables.push(vscode.languages.registerDocumentRangeSemanticTokensProvider(options.documentSelector, rangeProvider, legend)); + } + return [new vscode.Disposable(() => disposables.forEach(item => item.dispose())), { document: documentProvider, range: rangeProvider }]; + } +} +exports.SemanticTokensFeature = SemanticTokensFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/typeDefinition.js": +/*!*******************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/typeDefinition.js ***! + \*******************************************************************/ +/*! flagged exports */ +/*! export TypeDefinitionFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +const client_1 = __webpack_require__(/*! ./client */ "../node_modules/vscode-languageclient/lib/client.js"); +function ensure(target, key) { + if (target[key] === void 0) { + target[key] = {}; + } + return target[key]; +} +class TypeDefinitionFeature extends client_1.TextDocumentFeature { + constructor(client) { + super(client, vscode_languageserver_protocol_1.TypeDefinitionRequest.type); + } + fillClientCapabilities(capabilites) { + ensure(ensure(capabilites, 'textDocument'), 'typeDefinition').dynamicRegistration = true; + let typeDefinitionSupport = ensure(ensure(capabilites, 'textDocument'), 'typeDefinition'); + typeDefinitionSupport.dynamicRegistration = true; + typeDefinitionSupport.linkSupport = true; + } + initialize(capabilities, documentSelector) { + let [id, options] = this.getRegistration(documentSelector, capabilities.typeDefinitionProvider); + if (!id || !options) { + return; + } + this.register(this.messages, { id: id, registerOptions: options }); + } + registerLanguageProvider(options) { + const provider = { + provideTypeDefinition: (document, position, token) => { + const client = this._client; + const provideTypeDefinition = (document, position, token) => { + return client.sendRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDefinitionResult, (error) => { + client.logFailedRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, error); + return Promise.resolve(null); + }); + }; + const middleware = client.clientOptions.middleware; + return middleware.provideTypeDefinition + ? middleware.provideTypeDefinition(document, position, token, provideTypeDefinition) + : provideTypeDefinition(document, position, token); + } + }; + return [vscode_1.languages.registerTypeDefinitionProvider(options.documentSelector, provider), provider]; + } +} +exports.TypeDefinitionFeature = TypeDefinitionFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/utils/async.js": +/*!****************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/utils/async.js ***! + \****************************************************************/ +/*! flagged exports */ +/*! export Delayer [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +class Delayer { + constructor(defaultDelay) { + this.defaultDelay = defaultDelay; + this.timeout = undefined; + this.completionPromise = undefined; + this.onSuccess = undefined; + this.task = undefined; + } + trigger(task, delay = this.defaultDelay) { + this.task = task; + if (delay >= 0) { + this.cancelTimeout(); + } + if (!this.completionPromise) { + this.completionPromise = new Promise((resolve) => { + this.onSuccess = resolve; + }).then(() => { + this.completionPromise = undefined; + this.onSuccess = undefined; + var result = this.task(); + this.task = undefined; + return result; + }); + } + if (delay >= 0 || this.timeout === void 0) { + this.timeout = setTimeout(() => { + this.timeout = undefined; + this.onSuccess(undefined); + }, delay >= 0 ? delay : this.defaultDelay); + } + return this.completionPromise; + } + forceDelivery() { + if (!this.completionPromise) { + return undefined; + } + this.cancelTimeout(); + let result = this.task(); + this.completionPromise = undefined; + this.onSuccess = undefined; + this.task = undefined; + return result; + } + isTriggered() { + return this.timeout !== void 0; + } + cancel() { + this.cancelTimeout(); + this.completionPromise = undefined; + } + cancelTimeout() { + if (this.timeout !== void 0) { + clearTimeout(this.timeout); + this.timeout = undefined; + } + } +} +exports.Delayer = Delayer; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/utils/is.js": +/*!*************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/utils/is.js ***! + \*************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export array [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export asPromise [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export boolean [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export error [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export func [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export number [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export string [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export stringArray [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export thenable [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export typedArray [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function boolean(value) { + return value === true || value === false; +} +exports.boolean = boolean; +function string(value) { + return typeof value === 'string' || value instanceof String; +} +exports.string = string; +function number(value) { + return typeof value === 'number' || value instanceof Number; +} +exports.number = number; +function error(value) { + return value instanceof Error; +} +exports.error = error; +function func(value) { + return typeof value === 'function'; +} +exports.func = func; +function array(value) { + return Array.isArray(value); +} +exports.array = array; +function stringArray(value) { + return array(value) && value.every(elem => string(elem)); +} +exports.stringArray = stringArray; +function typedArray(value, check) { + return Array.isArray(value) && value.every(check); +} +exports.typedArray = typedArray; +function thenable(value) { + return value && func(value.then); +} +exports.thenable = thenable; +function asPromise(value) { + if (value instanceof Promise) { + return value; + } + else if (thenable(value)) { + return new Promise((resolve, reject) => { + value.then((resolved) => resolve(resolved), (error) => reject(error)); + }); + } + else { + return Promise.resolve(value); + } +} +exports.asPromise = asPromise; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/utils/processes.js": +/*!********************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/utils/processes.js ***! + \********************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export terminate [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const cp = __webpack_require__(/*! child_process */ "child_process"); +const path_1 = __webpack_require__(/*! path */ "path"); +const isWindows = (process.platform === 'win32'); +const isMacintosh = (process.platform === 'darwin'); +const isLinux = (process.platform === 'linux'); +function terminate(process, cwd) { + if (isWindows) { + try { + // This we run in Atom execFileSync is available. + // Ignore stderr since this is otherwise piped to parent.stderr + // which might be already closed. + let options = { + stdio: ['pipe', 'pipe', 'ignore'] + }; + if (cwd) { + options.cwd = cwd; + } + cp.execFileSync('taskkill', ['/T', '/F', '/PID', process.pid.toString()], options); + return true; + } + catch (err) { + return false; + } + } + else if (isLinux || isMacintosh) { + try { + var cmd = path_1.join(__dirname, 'terminateProcess.sh'); + var result = cp.spawnSync(cmd, [process.pid.toString()]); + return result.error ? false : true; + } + catch (err) { + return false; + } + } + else { + process.kill('SIGKILL'); + return true; + } +} +exports.terminate = terminate; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/utils/uuid.js": +/*!***************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/utils/uuid.js ***! + \***************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export empty [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export generateUuid [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export isUUID [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export parse [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export v4 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +class ValueUUID { + constructor(_value) { + this._value = _value; + // empty + } + asHex() { + return this._value; + } + equals(other) { + return this.asHex() === other.asHex(); + } +} +class V4UUID extends ValueUUID { + constructor() { + super([ + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + '4', + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + V4UUID._oneOf(V4UUID._timeHighBits), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + ].join('')); + } + static _oneOf(array) { + return array[Math.floor(array.length * Math.random())]; + } + static _randomHex() { + return V4UUID._oneOf(V4UUID._chars); + } +} +V4UUID._chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; +V4UUID._timeHighBits = ['8', '9', 'a', 'b']; +/** + * An empty UUID that contains only zeros. + */ +exports.empty = new ValueUUID('00000000-0000-0000-0000-000000000000'); +function v4() { + return new V4UUID(); +} +exports.v4 = v4; +const _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; +function isUUID(value) { + return _UUIDPattern.test(value); +} +exports.isUUID = isUUID; +/** + * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + * @param value A uuid string. + */ +function parse(value) { + if (!isUUID(value)) { + throw new Error('invalid uuid'); + } + return new ValueUUID(value); +} +exports.parse = parse; +function generateUuid() { + return v4().asHex(); +} +exports.generateUuid = generateUuid; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/lib/workspaceFolders.js": +/*!*********************************************************************!*\ + !*** ../node_modules/vscode-languageclient/lib/workspaceFolders.js ***! + \*********************************************************************/ +/*! flagged exports */ +/*! export WorkspaceFoldersFeature [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export arrayDiff [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const UUID = __webpack_require__(/*! ./utils/uuid */ "../node_modules/vscode-languageclient/lib/utils/uuid.js"); +const vscode_1 = __webpack_require__(/*! vscode */ "vscode"); +const vscode_languageserver_protocol_1 = __webpack_require__(/*! vscode-languageserver-protocol */ "../node_modules/vscode-languageserver-protocol/lib/main.js"); +function access(target, key) { + if (target === void 0) { + return undefined; + } + return target[key]; +} +function arrayDiff(left, right) { + return left.filter(element => right.indexOf(element) < 0); +} +exports.arrayDiff = arrayDiff; +class WorkspaceFoldersFeature { + constructor(_client) { + this._client = _client; + this._listeners = new Map(); + } + get messages() { + return vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type; + } + fillInitializeParams(params) { + let folders = vscode_1.workspace.workspaceFolders; + this.initializeWithFolders(folders); + if (folders === void 0) { + params.workspaceFolders = null; + } + else { + params.workspaceFolders = folders.map(folder => this.asProtocol(folder)); + } + } + initializeWithFolders(currentWorkspaceFolders) { + this._initialFolders = currentWorkspaceFolders; + } + fillClientCapabilities(capabilities) { + capabilities.workspace = capabilities.workspace || {}; + capabilities.workspace.workspaceFolders = true; + } + initialize(capabilities) { + let client = this._client; + client.onRequest(vscode_languageserver_protocol_1.WorkspaceFoldersRequest.type, (token) => { + let workspaceFolders = () => { + let folders = vscode_1.workspace.workspaceFolders; + if (folders === void 0) { + return null; + } + let result = folders.map((folder) => { + return this.asProtocol(folder); + }); + return result; + }; + let middleware = client.clientOptions.middleware.workspace; + return middleware && middleware.workspaceFolders + ? middleware.workspaceFolders(token, workspaceFolders) + : workspaceFolders(token); + }); + let value = access(access(access(capabilities, 'workspace'), 'workspaceFolders'), 'changeNotifications'); + let id; + if (typeof value === 'string') { + id = value; + } + else if (value === true) { + id = UUID.generateUuid(); + } + if (id) { + this.register(this.messages, { + id: id, + registerOptions: undefined + }); + } + } + sendInitialEvent(currentWorkspaceFolders) { + if (this._initialFolders && currentWorkspaceFolders) { + const removed = arrayDiff(this._initialFolders, currentWorkspaceFolders); + const added = arrayDiff(currentWorkspaceFolders, this._initialFolders); + if (added.length > 0 || removed.length > 0) { + this.doSendEvent(added, removed); + } + } + else if (this._initialFolders) { + this.doSendEvent([], this._initialFolders); + } + else if (currentWorkspaceFolders) { + this.doSendEvent(currentWorkspaceFolders, []); + } + } + doSendEvent(addedFolders, removedFolders) { + let params = { + event: { + added: addedFolders.map(folder => this.asProtocol(folder)), + removed: removedFolders.map(folder => this.asProtocol(folder)) + } + }; + this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type, params); + } + register(_message, data) { + let id = data.id; + let client = this._client; + let disposable = vscode_1.workspace.onDidChangeWorkspaceFolders((event) => { + let didChangeWorkspaceFolders = (event) => { + this.doSendEvent(event.added, event.removed); + }; + let middleware = client.clientOptions.middleware.workspace; + middleware && middleware.didChangeWorkspaceFolders + ? middleware.didChangeWorkspaceFolders(event, didChangeWorkspaceFolders) + : didChangeWorkspaceFolders(event); + }); + this._listeners.set(id, disposable); + this.sendInitialEvent(vscode_1.workspace.workspaceFolders); + } + unregister(id) { + let disposable = this._listeners.get(id); + if (disposable === void 0) { + return; + } + this._listeners.delete(id); + disposable.dispose(); + } + dispose() { + for (let disposable of this._listeners.values()) { + disposable.dispose(); + } + this._listeners.clear(); + } + asProtocol(workspaceFolder) { + if (workspaceFolder === void 0) { + return null; + } + return { uri: this._client.code2ProtocolConverter.asUri(workspaceFolder.uri), name: workspaceFolder.name }; + } +} +exports.WorkspaceFoldersFeature = WorkspaceFoldersFeature; + + +/***/ }), + +/***/ "../node_modules/vscode-languageclient/node_modules/semver/semver.js": +/*!***************************************************************************!*\ + !*** ../node_modules/vscode-languageclient/node_modules/semver/semver.js ***! + \***************************************************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: __webpack_exports__, module */ +/*! CommonJS bailout: module.exports is used directly at 1:10-24 */ +/*! CommonJS bailout: exports is used directly at 1:0-7 */ +/*! CommonJS bailout: exports.compareBuild(...) prevents optimization as exports is passed as call context at 670:11-31 */ +/*! CommonJS bailout: exports.compareBuild(...) prevents optimization as exports is passed as call context at 677:11-31 */ +/***/ ((module, exports) => { + +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +// The actual regexps go on exports.re +var re = exports.re = [] +var src = exports.src = [] +var t = exports.tokens = {} +var R = 0 + +function tok (n) { + t[n] = R++ +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +tok('NUMERICIDENTIFIER') +src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' +tok('NUMERICIDENTIFIERLOOSE') +src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +tok('NONNUMERICIDENTIFIER') +src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +tok('MAINVERSION') +src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')' + +tok('MAINVERSIONLOOSE') +src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +tok('PRERELEASEIDENTIFIER') +src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +tok('PRERELEASEIDENTIFIERLOOSE') +src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +tok('PRERELEASE') +src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' + +tok('PRERELEASELOOSE') +src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +tok('BUILDIDENTIFIER') +src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +tok('BUILD') +src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +tok('FULL') +tok('FULLPLAIN') +src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + + src[t.PRERELEASE] + '?' + + src[t.BUILD] + '?' + +src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +tok('LOOSEPLAIN') +src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + + src[t.PRERELEASELOOSE] + '?' + + src[t.BUILD] + '?' + +tok('LOOSE') +src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' + +tok('GTLT') +src[t.GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +tok('XRANGEIDENTIFIERLOOSE') +src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +tok('XRANGEIDENTIFIER') +src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' + +tok('XRANGEPLAIN') +src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:' + src[t.PRERELEASE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGEPLAINLOOSE') +src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[t.PRERELEASELOOSE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGE') +src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' +tok('XRANGELOOSE') +src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +tok('COERCE') +src[t.COERCE] = '(^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' +tok('COERCERTL') +re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +tok('LONETILDE') +src[t.LONETILDE] = '(?:~>?)' + +tok('TILDETRIM') +src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' +re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') +var tildeTrimReplace = '$1~' + +tok('TILDE') +src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' +tok('TILDELOOSE') +src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +tok('LONECARET') +src[t.LONECARET] = '(?:\\^)' + +tok('CARETTRIM') +src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' +re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') +var caretTrimReplace = '$1^' + +tok('CARET') +src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' +tok('CARETLOOSE') +src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +tok('COMPARATORLOOSE') +src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' +tok('COMPARATOR') +src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +tok('COMPARATORTRIM') +src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +tok('HYPHENRANGE') +src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAIN] + ')' + + '\\s*$' + +tok('HYPHENRANGELOOSE') +src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +tok('STAR') +src[t.STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? re[t.LOOSE] : re[t.FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +SemVer.prototype.compareBuild = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + var i = 0 + do { + var a = this.build[i] + var b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.compareBuild = compareBuild +function compareBuild (a, b, loose) { + var versionA = new SemVer(a, loose) + var versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(b, a, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + if (this.value === '') { + return true + } + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[t.COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return ( + isSatisfiable(thisComparators, options) && + range.set.some(function (rangeComparators) { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every(function (thisComparator) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) +} + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +function isSatisfiable (comparators, options) { + var result = true + var remainingComparators = comparators.slice() + var testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every(function (otherComparator) { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + pr + } else if (xm) { + ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr + } else if (xp) { + ret = '>=' + M + '.' + m + '.0' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + pr + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[t.STAR], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version, options) { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + var match = null + if (!options.rtl) { + match = version.match(re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + var next + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1 + } + + if (match === null) { + return null + } + + return parse(match[2] + + '.' + (match[3] || '0') + + '.' + (match[4] || '0'), options) +} + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/main.js": +/*!******************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/main.js ***! + \******************************************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/*! CommonJS bailout: exports.hasOwnProperty(...) prevents optimization as exports is passed as call context at 7:26-48 */ +/*! CommonJS bailout: exports is used directly at 7:53-60 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +exports.ErrorCodes = vscode_jsonrpc_1.ErrorCodes; +exports.ResponseError = vscode_jsonrpc_1.ResponseError; +exports.CancellationToken = vscode_jsonrpc_1.CancellationToken; +exports.CancellationTokenSource = vscode_jsonrpc_1.CancellationTokenSource; +exports.Disposable = vscode_jsonrpc_1.Disposable; +exports.Event = vscode_jsonrpc_1.Event; +exports.Emitter = vscode_jsonrpc_1.Emitter; +exports.Trace = vscode_jsonrpc_1.Trace; +exports.TraceFormat = vscode_jsonrpc_1.TraceFormat; +exports.SetTraceNotification = vscode_jsonrpc_1.SetTraceNotification; +exports.LogTraceNotification = vscode_jsonrpc_1.LogTraceNotification; +exports.RequestType = vscode_jsonrpc_1.RequestType; +exports.RequestType0 = vscode_jsonrpc_1.RequestType0; +exports.NotificationType = vscode_jsonrpc_1.NotificationType; +exports.NotificationType0 = vscode_jsonrpc_1.NotificationType0; +exports.MessageReader = vscode_jsonrpc_1.MessageReader; +exports.MessageWriter = vscode_jsonrpc_1.MessageWriter; +exports.ConnectionStrategy = vscode_jsonrpc_1.ConnectionStrategy; +exports.StreamMessageReader = vscode_jsonrpc_1.StreamMessageReader; +exports.StreamMessageWriter = vscode_jsonrpc_1.StreamMessageWriter; +exports.IPCMessageReader = vscode_jsonrpc_1.IPCMessageReader; +exports.IPCMessageWriter = vscode_jsonrpc_1.IPCMessageWriter; +exports.createClientPipeTransport = vscode_jsonrpc_1.createClientPipeTransport; +exports.createServerPipeTransport = vscode_jsonrpc_1.createServerPipeTransport; +exports.generateRandomPipeName = vscode_jsonrpc_1.generateRandomPipeName; +exports.createClientSocketTransport = vscode_jsonrpc_1.createClientSocketTransport; +exports.createServerSocketTransport = vscode_jsonrpc_1.createServerSocketTransport; +exports.ProgressType = vscode_jsonrpc_1.ProgressType; +__export(__webpack_require__(/*! vscode-languageserver-types */ "../node_modules/vscode-languageserver-types/lib/esm/main.js")); +__export(__webpack_require__(/*! ./protocol */ "../node_modules/vscode-languageserver-protocol/lib/protocol.js")); +const callHierarchy = __webpack_require__(/*! ./protocol.callHierarchy.proposed */ "../node_modules/vscode-languageserver-protocol/lib/protocol.callHierarchy.proposed.js"); +const st = __webpack_require__(/*! ./protocol.sematicTokens.proposed */ "../node_modules/vscode-languageserver-protocol/lib/protocol.sematicTokens.proposed.js"); +var Proposed; +(function (Proposed) { + let CallHierarchyPrepareRequest; + (function (CallHierarchyPrepareRequest) { + CallHierarchyPrepareRequest.method = callHierarchy.CallHierarchyPrepareRequest.method; + CallHierarchyPrepareRequest.type = callHierarchy.CallHierarchyPrepareRequest.type; + })(CallHierarchyPrepareRequest = Proposed.CallHierarchyPrepareRequest || (Proposed.CallHierarchyPrepareRequest = {})); + let CallHierarchyIncomingCallsRequest; + (function (CallHierarchyIncomingCallsRequest) { + CallHierarchyIncomingCallsRequest.method = callHierarchy.CallHierarchyIncomingCallsRequest.method; + CallHierarchyIncomingCallsRequest.type = callHierarchy.CallHierarchyIncomingCallsRequest.type; + })(CallHierarchyIncomingCallsRequest = Proposed.CallHierarchyIncomingCallsRequest || (Proposed.CallHierarchyIncomingCallsRequest = {})); + let CallHierarchyOutgoingCallsRequest; + (function (CallHierarchyOutgoingCallsRequest) { + CallHierarchyOutgoingCallsRequest.method = callHierarchy.CallHierarchyOutgoingCallsRequest.method; + CallHierarchyOutgoingCallsRequest.type = callHierarchy.CallHierarchyOutgoingCallsRequest.type; + })(CallHierarchyOutgoingCallsRequest = Proposed.CallHierarchyOutgoingCallsRequest || (Proposed.CallHierarchyOutgoingCallsRequest = {})); + Proposed.SemanticTokenTypes = st.SemanticTokenTypes; + Proposed.SemanticTokenModifiers = st.SemanticTokenModifiers; + Proposed.SemanticTokens = st.SemanticTokens; + let SemanticTokensRequest; + (function (SemanticTokensRequest) { + SemanticTokensRequest.method = st.SemanticTokensRequest.method; + SemanticTokensRequest.type = st.SemanticTokensRequest.type; + })(SemanticTokensRequest = Proposed.SemanticTokensRequest || (Proposed.SemanticTokensRequest = {})); + let SemanticTokensEditsRequest; + (function (SemanticTokensEditsRequest) { + SemanticTokensEditsRequest.method = st.SemanticTokensEditsRequest.method; + SemanticTokensEditsRequest.type = st.SemanticTokensEditsRequest.type; + })(SemanticTokensEditsRequest = Proposed.SemanticTokensEditsRequest || (Proposed.SemanticTokensEditsRequest = {})); + let SemanticTokensRangeRequest; + (function (SemanticTokensRangeRequest) { + SemanticTokensRangeRequest.method = st.SemanticTokensRangeRequest.method; + SemanticTokensRangeRequest.type = st.SemanticTokensRangeRequest.type; + })(SemanticTokensRangeRequest = Proposed.SemanticTokensRangeRequest || (Proposed.SemanticTokensRangeRequest = {})); +})(Proposed = exports.Proposed || (exports.Proposed = {})); +function createProtocolConnection(reader, writer, logger, strategy) { + return vscode_jsonrpc_1.createMessageConnection(reader, writer, logger, strategy); +} +exports.createProtocolConnection = createProtocolConnection; + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/messages.js": +/*!**********************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/messages.js ***! + \**********************************************************************/ +/*! flagged exports */ +/*! export ProtocolNotificationType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ProtocolNotificationType0 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ProtocolRequestType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ProtocolRequestType0 [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +class ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 { + constructor(method) { + super(method); + } +} +exports.ProtocolRequestType0 = ProtocolRequestType0; +class ProtocolRequestType extends vscode_jsonrpc_1.RequestType { + constructor(method) { + super(method); + } +} +exports.ProtocolRequestType = ProtocolRequestType; +class ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType { + constructor(method) { + super(method); + } +} +exports.ProtocolNotificationType = ProtocolNotificationType; +class ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 { + constructor(method) { + super(method); + } +} +exports.ProtocolNotificationType0 = ProtocolNotificationType0; + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.callHierarchy.proposed.js": +/*!*********************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.callHierarchy.proposed.js ***! + \*********************************************************************************************/ +/*! flagged exports */ +/*! export CallHierarchyIncomingCallsRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CallHierarchyOutgoingCallsRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CallHierarchyPrepareRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) TypeFox and others. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * A request to result a `CallHierarchyItem` in a document at a given position. + * Can be used as an input to a incoming or outgoing call hierarchy. + * + * @since 3.16.0 - Proposed state + */ +var CallHierarchyPrepareRequest; +(function (CallHierarchyPrepareRequest) { + CallHierarchyPrepareRequest.method = 'textDocument/prepareCallHierarchy'; + CallHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest.method); +})(CallHierarchyPrepareRequest = exports.CallHierarchyPrepareRequest || (exports.CallHierarchyPrepareRequest = {})); +/** + * A request to resolve the incoming calls for a given `CallHierarchyItem`. + * + * @since 3.16.0 - Proposed state + */ +var CallHierarchyIncomingCallsRequest; +(function (CallHierarchyIncomingCallsRequest) { + CallHierarchyIncomingCallsRequest.method = 'callHierarchy/incomingCalls'; + CallHierarchyIncomingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest.method); +})(CallHierarchyIncomingCallsRequest = exports.CallHierarchyIncomingCallsRequest || (exports.CallHierarchyIncomingCallsRequest = {})); +/** + * A request to resolve the outgoing calls for a given `CallHierarchyItem`. + * + * @since 3.16.0 - Proposed state + */ +var CallHierarchyOutgoingCallsRequest; +(function (CallHierarchyOutgoingCallsRequest) { + CallHierarchyOutgoingCallsRequest.method = 'callHierarchy/outgoingCalls'; + CallHierarchyOutgoingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest.method); +})(CallHierarchyOutgoingCallsRequest = exports.CallHierarchyOutgoingCallsRequest || (exports.CallHierarchyOutgoingCallsRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.colorProvider.js": +/*!************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.colorProvider.js ***! + \************************************************************************************/ +/*! flagged exports */ +/*! export ColorPresentationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentColorRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * A request to list all color symbols found in a given text document. The request's + * parameter is of type [DocumentColorParams](#DocumentColorParams) the + * response is of type [ColorInformation[]](#ColorInformation) or a Thenable + * that resolves to such. + */ +var DocumentColorRequest; +(function (DocumentColorRequest) { + DocumentColorRequest.method = 'textDocument/documentColor'; + DocumentColorRequest.type = new messages_1.ProtocolRequestType(DocumentColorRequest.method); + /** @deprecated Use DocumentColorRequest.type */ + DocumentColorRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(DocumentColorRequest = exports.DocumentColorRequest || (exports.DocumentColorRequest = {})); +/** + * A request to list all presentation for a color. The request's + * parameter is of type [ColorPresentationParams](#ColorPresentationParams) the + * response is of type [ColorInformation[]](#ColorInformation) or a Thenable + * that resolves to such. + */ +var ColorPresentationRequest; +(function (ColorPresentationRequest) { + ColorPresentationRequest.type = new messages_1.ProtocolRequestType('textDocument/colorPresentation'); +})(ColorPresentationRequest = exports.ColorPresentationRequest || (exports.ColorPresentationRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.configuration.js": +/*!************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.configuration.js ***! + \************************************************************************************/ +/*! flagged exports */ +/*! export ConfigurationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * The 'workspace/configuration' request is sent from the server to the client to fetch a certain + * configuration setting. + * + * This pull model replaces the old push model were the client signaled configuration change via an + * event. If the server still needs to react to configuration changes (since the server caches the + * result of `workspace/configuration` requests) the server should register for an empty configuration + * change event and empty the cache if such an event is received. + */ +var ConfigurationRequest; +(function (ConfigurationRequest) { + ConfigurationRequest.type = new messages_1.ProtocolRequestType('workspace/configuration'); +})(ConfigurationRequest = exports.ConfigurationRequest || (exports.ConfigurationRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.declaration.js": +/*!**********************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.declaration.js ***! + \**********************************************************************************/ +/*! flagged exports */ +/*! export DeclarationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +// @ts-ignore: to avoid inlining LocatioLink as dynamic import +let __noDynamicImport; +/** + * A request to resolve the type definition locations of a symbol at a given text + * document position. The request's parameter is of type [TextDocumentPositioParams] + * (#TextDocumentPositionParams) the response is of type [Declaration](#Declaration) + * or a typed array of [DeclarationLink](#DeclarationLink) or a Thenable that resolves + * to such. + */ +var DeclarationRequest; +(function (DeclarationRequest) { + DeclarationRequest.method = 'textDocument/declaration'; + DeclarationRequest.type = new messages_1.ProtocolRequestType(DeclarationRequest.method); + /** @deprecated Use DeclarationRequest.type */ + DeclarationRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(DeclarationRequest = exports.DeclarationRequest || (exports.DeclarationRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.foldingRange.js": +/*!***********************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.foldingRange.js ***! + \***********************************************************************************/ +/*! flagged exports */ +/*! export FoldingRangeKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FoldingRangeRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * Enum of known range kinds + */ +var FoldingRangeKind; +(function (FoldingRangeKind) { + /** + * Folding range for a comment + */ + FoldingRangeKind["Comment"] = "comment"; + /** + * Folding range for a imports or includes + */ + FoldingRangeKind["Imports"] = "imports"; + /** + * Folding range for a region (e.g. `#region`) + */ + FoldingRangeKind["Region"] = "region"; +})(FoldingRangeKind = exports.FoldingRangeKind || (exports.FoldingRangeKind = {})); +/** + * A request to provide folding ranges in a document. The request's + * parameter is of type [FoldingRangeParams](#FoldingRangeParams), the + * response is of type [FoldingRangeList](#FoldingRangeList) or a Thenable + * that resolves to such. + */ +var FoldingRangeRequest; +(function (FoldingRangeRequest) { + FoldingRangeRequest.method = 'textDocument/foldingRange'; + FoldingRangeRequest.type = new messages_1.ProtocolRequestType(FoldingRangeRequest.method); + /** @deprecated Use FoldingRangeRequest.type */ + FoldingRangeRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(FoldingRangeRequest = exports.FoldingRangeRequest || (exports.FoldingRangeRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.implementation.js": +/*!*************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.implementation.js ***! + \*************************************************************************************/ +/*! flagged exports */ +/*! export ImplementationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +// @ts-ignore: to avoid inlining LocatioLink as dynamic import +let __noDynamicImport; +/** + * A request to resolve the implementation locations of a symbol at a given text + * document position. The request's parameter is of type [TextDocumentPositioParams] + * (#TextDocumentPositionParams) the response is of type [Definition](#Definition) or a + * Thenable that resolves to such. + */ +var ImplementationRequest; +(function (ImplementationRequest) { + ImplementationRequest.method = 'textDocument/implementation'; + ImplementationRequest.type = new messages_1.ProtocolRequestType(ImplementationRequest.method); + /** @deprecated Use ImplementationRequest.type */ + ImplementationRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(ImplementationRequest = exports.ImplementationRequest || (exports.ImplementationRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.js": +/*!**********************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.js ***! + \**********************************************************************/ +/*! flagged exports */ +/*! export ApplyWorkspaceEditRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CodeActionRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CodeLensRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CodeLensResolveRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ColorPresentationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionResolveRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionTriggerKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ConfigurationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DeclarationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DefinitionRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidChangeConfigurationNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidChangeTextDocumentNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidChangeWatchedFilesNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidChangeWorkspaceFoldersNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidCloseTextDocumentNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidOpenTextDocumentNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DidSaveTextDocumentNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentColorRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentFilter [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentFormattingRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentHighlightRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentLinkRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentLinkResolveRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentOnTypeFormattingRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentRangeFormattingRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentSelector [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentSymbolRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ExecuteCommandRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ExitNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FailureHandlingKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FileChangeType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FoldingRangeRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export HoverRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ImplementationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export InitializeError [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export InitializeRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export InitializedNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export LogMessageNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export MessageType [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export PrepareRenameRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export PublishDiagnosticsNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ReferencesRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RegistrationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RenameRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ResourceOperationKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SelectionRangeRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ShowMessageNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ShowMessageRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ShutdownRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SignatureHelpRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SignatureHelpTriggerKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export StaticRegistrationOptions [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TelemetryEventNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocumentRegistrationOptions [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocumentSaveReason [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocumentSyncKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TypeDefinitionRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export UnregistrationRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WatchKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WillSaveTextDocumentNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WillSaveTextDocumentWaitUntilRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkDoneProgress [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkDoneProgressCancelNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkDoneProgressCreateRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkDoneProgressOptions [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkspaceFoldersRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkspaceSymbolRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const Is = __webpack_require__(/*! ./utils/is */ "../node_modules/vscode-languageserver-protocol/lib/utils/is.js"); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +const protocol_implementation_1 = __webpack_require__(/*! ./protocol.implementation */ "../node_modules/vscode-languageserver-protocol/lib/protocol.implementation.js"); +exports.ImplementationRequest = protocol_implementation_1.ImplementationRequest; +const protocol_typeDefinition_1 = __webpack_require__(/*! ./protocol.typeDefinition */ "../node_modules/vscode-languageserver-protocol/lib/protocol.typeDefinition.js"); +exports.TypeDefinitionRequest = protocol_typeDefinition_1.TypeDefinitionRequest; +const protocol_workspaceFolders_1 = __webpack_require__(/*! ./protocol.workspaceFolders */ "../node_modules/vscode-languageserver-protocol/lib/protocol.workspaceFolders.js"); +exports.WorkspaceFoldersRequest = protocol_workspaceFolders_1.WorkspaceFoldersRequest; +exports.DidChangeWorkspaceFoldersNotification = protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification; +const protocol_configuration_1 = __webpack_require__(/*! ./protocol.configuration */ "../node_modules/vscode-languageserver-protocol/lib/protocol.configuration.js"); +exports.ConfigurationRequest = protocol_configuration_1.ConfigurationRequest; +const protocol_colorProvider_1 = __webpack_require__(/*! ./protocol.colorProvider */ "../node_modules/vscode-languageserver-protocol/lib/protocol.colorProvider.js"); +exports.DocumentColorRequest = protocol_colorProvider_1.DocumentColorRequest; +exports.ColorPresentationRequest = protocol_colorProvider_1.ColorPresentationRequest; +const protocol_foldingRange_1 = __webpack_require__(/*! ./protocol.foldingRange */ "../node_modules/vscode-languageserver-protocol/lib/protocol.foldingRange.js"); +exports.FoldingRangeRequest = protocol_foldingRange_1.FoldingRangeRequest; +const protocol_declaration_1 = __webpack_require__(/*! ./protocol.declaration */ "../node_modules/vscode-languageserver-protocol/lib/protocol.declaration.js"); +exports.DeclarationRequest = protocol_declaration_1.DeclarationRequest; +const protocol_selectionRange_1 = __webpack_require__(/*! ./protocol.selectionRange */ "../node_modules/vscode-languageserver-protocol/lib/protocol.selectionRange.js"); +exports.SelectionRangeRequest = protocol_selectionRange_1.SelectionRangeRequest; +const protocol_progress_1 = __webpack_require__(/*! ./protocol.progress */ "../node_modules/vscode-languageserver-protocol/lib/protocol.progress.js"); +exports.WorkDoneProgress = protocol_progress_1.WorkDoneProgress; +exports.WorkDoneProgressCreateRequest = protocol_progress_1.WorkDoneProgressCreateRequest; +exports.WorkDoneProgressCancelNotification = protocol_progress_1.WorkDoneProgressCancelNotification; +// @ts-ignore: to avoid inlining LocatioLink as dynamic import +let __noDynamicImport; +/** + * The DocumentFilter namespace provides helper functions to work with + * [DocumentFilter](#DocumentFilter) literals. + */ +var DocumentFilter; +(function (DocumentFilter) { + function is(value) { + const candidate = value; + return Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern); + } + DocumentFilter.is = is; +})(DocumentFilter = exports.DocumentFilter || (exports.DocumentFilter = {})); +/** + * The DocumentSelector namespace provides helper functions to work with + * [DocumentSelector](#DocumentSelector)s. + */ +var DocumentSelector; +(function (DocumentSelector) { + function is(value) { + if (!Array.isArray(value)) { + return false; + } + for (let elem of value) { + if (!Is.string(elem) && !DocumentFilter.is(elem)) { + return false; + } + } + return true; + } + DocumentSelector.is = is; +})(DocumentSelector = exports.DocumentSelector || (exports.DocumentSelector = {})); +/** + * The `client/registerCapability` request is sent from the server to the client to register a new capability + * handler on the client side. + */ +var RegistrationRequest; +(function (RegistrationRequest) { + RegistrationRequest.type = new messages_1.ProtocolRequestType('client/registerCapability'); +})(RegistrationRequest = exports.RegistrationRequest || (exports.RegistrationRequest = {})); +/** + * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability + * handler on the client side. + */ +var UnregistrationRequest; +(function (UnregistrationRequest) { + UnregistrationRequest.type = new messages_1.ProtocolRequestType('client/unregisterCapability'); +})(UnregistrationRequest = exports.UnregistrationRequest || (exports.UnregistrationRequest = {})); +var ResourceOperationKind; +(function (ResourceOperationKind) { + /** + * Supports creating new files and folders. + */ + ResourceOperationKind.Create = 'create'; + /** + * Supports renaming existing files and folders. + */ + ResourceOperationKind.Rename = 'rename'; + /** + * Supports deleting existing files and folders. + */ + ResourceOperationKind.Delete = 'delete'; +})(ResourceOperationKind = exports.ResourceOperationKind || (exports.ResourceOperationKind = {})); +var FailureHandlingKind; +(function (FailureHandlingKind) { + /** + * Applying the workspace change is simply aborted if one of the changes provided + * fails. All operations executed before the failing operation stay executed. + */ + FailureHandlingKind.Abort = 'abort'; + /** + * All operations are executed transactional. That means they either all + * succeed or no changes at all are applied to the workspace. + */ + FailureHandlingKind.Transactional = 'transactional'; + /** + * If the workspace edit contains only textual file changes they are executed transactional. + * If resource changes (create, rename or delete file) are part of the change the failure + * handling startegy is abort. + */ + FailureHandlingKind.TextOnlyTransactional = 'textOnlyTransactional'; + /** + * The client tries to undo the operations already executed. But there is no + * guarantee that this is succeeding. + */ + FailureHandlingKind.Undo = 'undo'; +})(FailureHandlingKind = exports.FailureHandlingKind || (exports.FailureHandlingKind = {})); +/** + * The StaticRegistrationOptions namespace provides helper functions to work with + * [StaticRegistrationOptions](#StaticRegistrationOptions) literals. + */ +var StaticRegistrationOptions; +(function (StaticRegistrationOptions) { + function hasId(value) { + const candidate = value; + return candidate && Is.string(candidate.id) && candidate.id.length > 0; + } + StaticRegistrationOptions.hasId = hasId; +})(StaticRegistrationOptions = exports.StaticRegistrationOptions || (exports.StaticRegistrationOptions = {})); +/** + * The TextDocumentRegistrationOptions namespace provides helper functions to work with + * [TextDocumentRegistrationOptions](#TextDocumentRegistrationOptions) literals. + */ +var TextDocumentRegistrationOptions; +(function (TextDocumentRegistrationOptions) { + function is(value) { + const candidate = value; + return candidate && (candidate.documentSelector === null || DocumentSelector.is(candidate.documentSelector)); + } + TextDocumentRegistrationOptions.is = is; +})(TextDocumentRegistrationOptions = exports.TextDocumentRegistrationOptions || (exports.TextDocumentRegistrationOptions = {})); +/** + * The WorkDoneProgressOptions namespace provides helper functions to work with + * [WorkDoneProgressOptions](#WorkDoneProgressOptions) literals. + */ +var WorkDoneProgressOptions; +(function (WorkDoneProgressOptions) { + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && (candidate.workDoneProgress === undefined || Is.boolean(candidate.workDoneProgress)); + } + WorkDoneProgressOptions.is = is; + function hasWorkDoneProgress(value) { + const candidate = value; + return candidate && Is.boolean(candidate.workDoneProgress); + } + WorkDoneProgressOptions.hasWorkDoneProgress = hasWorkDoneProgress; +})(WorkDoneProgressOptions = exports.WorkDoneProgressOptions || (exports.WorkDoneProgressOptions = {})); +/** + * The initialize request is sent from the client to the server. + * It is sent once as the request after starting up the server. + * The requests parameter is of type [InitializeParams](#InitializeParams) + * the response if of type [InitializeResult](#InitializeResult) of a Thenable that + * resolves to such. + */ +var InitializeRequest; +(function (InitializeRequest) { + InitializeRequest.type = new messages_1.ProtocolRequestType('initialize'); +})(InitializeRequest = exports.InitializeRequest || (exports.InitializeRequest = {})); +/** + * Known error codes for an `InitializeError`; + */ +var InitializeError; +(function (InitializeError) { + /** + * If the protocol version provided by the client can't be handled by the server. + * @deprecated This initialize error got replaced by client capabilities. There is + * no version handshake in version 3.0x + */ + InitializeError.unknownProtocolVersion = 1; +})(InitializeError = exports.InitializeError || (exports.InitializeError = {})); +/** + * The intialized notification is sent from the client to the + * server after the client is fully initialized and the server + * is allowed to send requests from the server to the client. + */ +var InitializedNotification; +(function (InitializedNotification) { + InitializedNotification.type = new messages_1.ProtocolNotificationType('initialized'); +})(InitializedNotification = exports.InitializedNotification || (exports.InitializedNotification = {})); +//---- Shutdown Method ---- +/** + * A shutdown request is sent from the client to the server. + * It is sent once when the client decides to shutdown the + * server. The only notification that is sent after a shutdown request + * is the exit event. + */ +var ShutdownRequest; +(function (ShutdownRequest) { + ShutdownRequest.type = new messages_1.ProtocolRequestType0('shutdown'); +})(ShutdownRequest = exports.ShutdownRequest || (exports.ShutdownRequest = {})); +//---- Exit Notification ---- +/** + * The exit event is sent from the client to the server to + * ask the server to exit its process. + */ +var ExitNotification; +(function (ExitNotification) { + ExitNotification.type = new messages_1.ProtocolNotificationType0('exit'); +})(ExitNotification = exports.ExitNotification || (exports.ExitNotification = {})); +/** + * The configuration change notification is sent from the client to the server + * when the client's configuration has changed. The notification contains + * the changed configuration as defined by the language client. + */ +var DidChangeConfigurationNotification; +(function (DidChangeConfigurationNotification) { + DidChangeConfigurationNotification.type = new messages_1.ProtocolNotificationType('workspace/didChangeConfiguration'); +})(DidChangeConfigurationNotification = exports.DidChangeConfigurationNotification || (exports.DidChangeConfigurationNotification = {})); +//---- Message show and log notifications ---- +/** + * The message type + */ +var MessageType; +(function (MessageType) { + /** + * An error message. + */ + MessageType.Error = 1; + /** + * A warning message. + */ + MessageType.Warning = 2; + /** + * An information message. + */ + MessageType.Info = 3; + /** + * A log message. + */ + MessageType.Log = 4; +})(MessageType = exports.MessageType || (exports.MessageType = {})); +/** + * The show message notification is sent from a server to a client to ask + * the client to display a particular message in the user interface. + */ +var ShowMessageNotification; +(function (ShowMessageNotification) { + ShowMessageNotification.type = new messages_1.ProtocolNotificationType('window/showMessage'); +})(ShowMessageNotification = exports.ShowMessageNotification || (exports.ShowMessageNotification = {})); +/** + * The show message request is sent from the server to the client to show a message + * and a set of options actions to the user. + */ +var ShowMessageRequest; +(function (ShowMessageRequest) { + ShowMessageRequest.type = new messages_1.ProtocolRequestType('window/showMessageRequest'); +})(ShowMessageRequest = exports.ShowMessageRequest || (exports.ShowMessageRequest = {})); +/** + * The log message notification is sent from the server to the client to ask + * the client to log a particular message. + */ +var LogMessageNotification; +(function (LogMessageNotification) { + LogMessageNotification.type = new messages_1.ProtocolNotificationType('window/logMessage'); +})(LogMessageNotification = exports.LogMessageNotification || (exports.LogMessageNotification = {})); +//---- Telemetry notification +/** + * The telemetry event notification is sent from the server to the client to ask + * the client to log telemetry data. + */ +var TelemetryEventNotification; +(function (TelemetryEventNotification) { + TelemetryEventNotification.type = new messages_1.ProtocolNotificationType('telemetry/event'); +})(TelemetryEventNotification = exports.TelemetryEventNotification || (exports.TelemetryEventNotification = {})); +/** + * Defines how the host (editor) should sync + * document changes to the language server. + */ +var TextDocumentSyncKind; +(function (TextDocumentSyncKind) { + /** + * Documents should not be synced at all. + */ + TextDocumentSyncKind.None = 0; + /** + * Documents are synced by always sending the full content + * of the document. + */ + TextDocumentSyncKind.Full = 1; + /** + * Documents are synced by sending the full content on open. + * After that only incremental updates to the document are + * send. + */ + TextDocumentSyncKind.Incremental = 2; +})(TextDocumentSyncKind = exports.TextDocumentSyncKind || (exports.TextDocumentSyncKind = {})); +/** + * The document open notification is sent from the client to the server to signal + * newly opened text documents. The document's truth is now managed by the client + * and the server must not try to read the document's truth using the document's + * uri. Open in this sense means it is managed by the client. It doesn't necessarily + * mean that its content is presented in an editor. An open notification must not + * be sent more than once without a corresponding close notification send before. + * This means open and close notification must be balanced and the max open count + * is one. + */ +var DidOpenTextDocumentNotification; +(function (DidOpenTextDocumentNotification) { + DidOpenTextDocumentNotification.method = 'textDocument/didOpen'; + DidOpenTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification.method); +})(DidOpenTextDocumentNotification = exports.DidOpenTextDocumentNotification || (exports.DidOpenTextDocumentNotification = {})); +/** + * The document change notification is sent from the client to the server to signal + * changes to a text document. + */ +var DidChangeTextDocumentNotification; +(function (DidChangeTextDocumentNotification) { + DidChangeTextDocumentNotification.method = 'textDocument/didChange'; + DidChangeTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification.method); +})(DidChangeTextDocumentNotification = exports.DidChangeTextDocumentNotification || (exports.DidChangeTextDocumentNotification = {})); +/** + * The document close notification is sent from the client to the server when + * the document got closed in the client. The document's truth now exists where + * the document's uri points to (e.g. if the document's uri is a file uri the + * truth now exists on disk). As with the open notification the close notification + * is about managing the document's content. Receiving a close notification + * doesn't mean that the document was open in an editor before. A close + * notification requires a previous open notification to be sent. + */ +var DidCloseTextDocumentNotification; +(function (DidCloseTextDocumentNotification) { + DidCloseTextDocumentNotification.method = 'textDocument/didClose'; + DidCloseTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification.method); +})(DidCloseTextDocumentNotification = exports.DidCloseTextDocumentNotification || (exports.DidCloseTextDocumentNotification = {})); +/** + * The document save notification is sent from the client to the server when + * the document got saved in the client. + */ +var DidSaveTextDocumentNotification; +(function (DidSaveTextDocumentNotification) { + DidSaveTextDocumentNotification.method = 'textDocument/didSave'; + DidSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification.method); +})(DidSaveTextDocumentNotification = exports.DidSaveTextDocumentNotification || (exports.DidSaveTextDocumentNotification = {})); +/** + * Represents reasons why a text document is saved. + */ +var TextDocumentSaveReason; +(function (TextDocumentSaveReason) { + /** + * Manually triggered, e.g. by the user pressing save, by starting debugging, + * or by an API call. + */ + TextDocumentSaveReason.Manual = 1; + /** + * Automatic after a delay. + */ + TextDocumentSaveReason.AfterDelay = 2; + /** + * When the editor lost focus. + */ + TextDocumentSaveReason.FocusOut = 3; +})(TextDocumentSaveReason = exports.TextDocumentSaveReason || (exports.TextDocumentSaveReason = {})); +/** + * A document will save notification is sent from the client to the server before + * the document is actually saved. + */ +var WillSaveTextDocumentNotification; +(function (WillSaveTextDocumentNotification) { + WillSaveTextDocumentNotification.method = 'textDocument/willSave'; + WillSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification.method); +})(WillSaveTextDocumentNotification = exports.WillSaveTextDocumentNotification || (exports.WillSaveTextDocumentNotification = {})); +/** + * A document will save request is sent from the client to the server before + * the document is actually saved. The request can return an array of TextEdits + * which will be applied to the text document before it is saved. Please note that + * clients might drop results if computing the text edits took too long or if a + * server constantly fails on this request. This is done to keep the save fast and + * reliable. + */ +var WillSaveTextDocumentWaitUntilRequest; +(function (WillSaveTextDocumentWaitUntilRequest) { + WillSaveTextDocumentWaitUntilRequest.method = 'textDocument/willSaveWaitUntil'; + WillSaveTextDocumentWaitUntilRequest.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest.method); +})(WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentWaitUntilRequest || (exports.WillSaveTextDocumentWaitUntilRequest = {})); +/** + * The watched files notification is sent from the client to the server when + * the client detects changes to file watched by the language client. + */ +var DidChangeWatchedFilesNotification; +(function (DidChangeWatchedFilesNotification) { + DidChangeWatchedFilesNotification.type = new messages_1.ProtocolNotificationType('workspace/didChangeWatchedFiles'); +})(DidChangeWatchedFilesNotification = exports.DidChangeWatchedFilesNotification || (exports.DidChangeWatchedFilesNotification = {})); +/** + * The file event type + */ +var FileChangeType; +(function (FileChangeType) { + /** + * The file got created. + */ + FileChangeType.Created = 1; + /** + * The file got changed. + */ + FileChangeType.Changed = 2; + /** + * The file got deleted. + */ + FileChangeType.Deleted = 3; +})(FileChangeType = exports.FileChangeType || (exports.FileChangeType = {})); +var WatchKind; +(function (WatchKind) { + /** + * Interested in create events. + */ + WatchKind.Create = 1; + /** + * Interested in change events + */ + WatchKind.Change = 2; + /** + * Interested in delete events + */ + WatchKind.Delete = 4; +})(WatchKind = exports.WatchKind || (exports.WatchKind = {})); +/** + * Diagnostics notification are sent from the server to the client to signal + * results of validation runs. + */ +var PublishDiagnosticsNotification; +(function (PublishDiagnosticsNotification) { + PublishDiagnosticsNotification.type = new messages_1.ProtocolNotificationType('textDocument/publishDiagnostics'); +})(PublishDiagnosticsNotification = exports.PublishDiagnosticsNotification || (exports.PublishDiagnosticsNotification = {})); +/** + * How a completion was triggered + */ +var CompletionTriggerKind; +(function (CompletionTriggerKind) { + /** + * Completion was triggered by typing an identifier (24x7 code + * complete), manual invocation (e.g Ctrl+Space) or via API. + */ + CompletionTriggerKind.Invoked = 1; + /** + * Completion was triggered by a trigger character specified by + * the `triggerCharacters` properties of the `CompletionRegistrationOptions`. + */ + CompletionTriggerKind.TriggerCharacter = 2; + /** + * Completion was re-triggered as current completion list is incomplete + */ + CompletionTriggerKind.TriggerForIncompleteCompletions = 3; +})(CompletionTriggerKind = exports.CompletionTriggerKind || (exports.CompletionTriggerKind = {})); +/** + * Request to request completion at a given text document position. The request's + * parameter is of type [TextDocumentPosition](#TextDocumentPosition) the response + * is of type [CompletionItem[]](#CompletionItem) or [CompletionList](#CompletionList) + * or a Thenable that resolves to such. + * + * The request can delay the computation of the [`detail`](#CompletionItem.detail) + * and [`documentation`](#CompletionItem.documentation) properties to the `completionItem/resolve` + * request. However, properties that are needed for the initial sorting and filtering, like `sortText`, + * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve. + */ +var CompletionRequest; +(function (CompletionRequest) { + CompletionRequest.method = 'textDocument/completion'; + CompletionRequest.type = new messages_1.ProtocolRequestType(CompletionRequest.method); + /** @deprecated Use CompletionRequest.type */ + CompletionRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(CompletionRequest = exports.CompletionRequest || (exports.CompletionRequest = {})); +/** + * Request to resolve additional information for a given completion item.The request's + * parameter is of type [CompletionItem](#CompletionItem) the response + * is of type [CompletionItem](#CompletionItem) or a Thenable that resolves to such. + */ +var CompletionResolveRequest; +(function (CompletionResolveRequest) { + CompletionResolveRequest.method = 'completionItem/resolve'; + CompletionResolveRequest.type = new messages_1.ProtocolRequestType(CompletionResolveRequest.method); +})(CompletionResolveRequest = exports.CompletionResolveRequest || (exports.CompletionResolveRequest = {})); +/** + * Request to request hover information at a given text document position. The request's + * parameter is of type [TextDocumentPosition](#TextDocumentPosition) the response is of + * type [Hover](#Hover) or a Thenable that resolves to such. + */ +var HoverRequest; +(function (HoverRequest) { + HoverRequest.method = 'textDocument/hover'; + HoverRequest.type = new messages_1.ProtocolRequestType(HoverRequest.method); +})(HoverRequest = exports.HoverRequest || (exports.HoverRequest = {})); +/** + * How a signature help was triggered. + * + * @since 3.15.0 + */ +var SignatureHelpTriggerKind; +(function (SignatureHelpTriggerKind) { + /** + * Signature help was invoked manually by the user or by a command. + */ + SignatureHelpTriggerKind.Invoked = 1; + /** + * Signature help was triggered by a trigger character. + */ + SignatureHelpTriggerKind.TriggerCharacter = 2; + /** + * Signature help was triggered by the cursor moving or by the document content changing. + */ + SignatureHelpTriggerKind.ContentChange = 3; +})(SignatureHelpTriggerKind = exports.SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = {})); +var SignatureHelpRequest; +(function (SignatureHelpRequest) { + SignatureHelpRequest.method = 'textDocument/signatureHelp'; + SignatureHelpRequest.type = new messages_1.ProtocolRequestType(SignatureHelpRequest.method); +})(SignatureHelpRequest = exports.SignatureHelpRequest || (exports.SignatureHelpRequest = {})); +/** + * A request to resolve the definition location of a symbol at a given text + * document position. The request's parameter is of type [TextDocumentPosition] + * (#TextDocumentPosition) the response is of either type [Definition](#Definition) + * or a typed array of [DefinitionLink](#DefinitionLink) or a Thenable that resolves + * to such. + */ +var DefinitionRequest; +(function (DefinitionRequest) { + DefinitionRequest.method = 'textDocument/definition'; + DefinitionRequest.type = new messages_1.ProtocolRequestType(DefinitionRequest.method); + /** @deprecated Use DefinitionRequest.type */ + DefinitionRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(DefinitionRequest = exports.DefinitionRequest || (exports.DefinitionRequest = {})); +/** + * A request to resolve project-wide references for the symbol denoted + * by the given text document position. The request's parameter is of + * type [ReferenceParams](#ReferenceParams) the response is of type + * [Location[]](#Location) or a Thenable that resolves to such. + */ +var ReferencesRequest; +(function (ReferencesRequest) { + ReferencesRequest.method = 'textDocument/references'; + ReferencesRequest.type = new messages_1.ProtocolRequestType(ReferencesRequest.method); + /** @deprecated Use ReferencesRequest.type */ + ReferencesRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(ReferencesRequest = exports.ReferencesRequest || (exports.ReferencesRequest = {})); +/** + * Request to resolve a [DocumentHighlight](#DocumentHighlight) for a given + * text document position. The request's parameter is of type [TextDocumentPosition] + * (#TextDocumentPosition) the request response is of type [DocumentHighlight[]] + * (#DocumentHighlight) or a Thenable that resolves to such. + */ +var DocumentHighlightRequest; +(function (DocumentHighlightRequest) { + DocumentHighlightRequest.method = 'textDocument/documentHighlight'; + DocumentHighlightRequest.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest.method); + /** @deprecated Use DocumentHighlightRequest.type */ + DocumentHighlightRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(DocumentHighlightRequest = exports.DocumentHighlightRequest || (exports.DocumentHighlightRequest = {})); +/** + * A request to list all symbols found in a given text document. The request's + * parameter is of type [TextDocumentIdentifier](#TextDocumentIdentifier) the + * response is of type [SymbolInformation[]](#SymbolInformation) or a Thenable + * that resolves to such. + */ +var DocumentSymbolRequest; +(function (DocumentSymbolRequest) { + DocumentSymbolRequest.method = 'textDocument/documentSymbol'; + DocumentSymbolRequest.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest.method); + /** @deprecated Use DocumentSymbolRequest.type */ + DocumentSymbolRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(DocumentSymbolRequest = exports.DocumentSymbolRequest || (exports.DocumentSymbolRequest = {})); +/** + * A request to provide commands for the given text document and range. + */ +var CodeActionRequest; +(function (CodeActionRequest) { + CodeActionRequest.method = 'textDocument/codeAction'; + CodeActionRequest.type = new messages_1.ProtocolRequestType(CodeActionRequest.method); + /** @deprecated Use CodeActionRequest.type */ + CodeActionRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(CodeActionRequest = exports.CodeActionRequest || (exports.CodeActionRequest = {})); +/** + * A request to list project-wide symbols matching the query string given + * by the [WorkspaceSymbolParams](#WorkspaceSymbolParams). The response is + * of type [SymbolInformation[]](#SymbolInformation) or a Thenable that + * resolves to such. + */ +var WorkspaceSymbolRequest; +(function (WorkspaceSymbolRequest) { + WorkspaceSymbolRequest.method = 'workspace/symbol'; + WorkspaceSymbolRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest.method); + /** @deprecated Use WorkspaceSymbolRequest.type */ + WorkspaceSymbolRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(WorkspaceSymbolRequest = exports.WorkspaceSymbolRequest || (exports.WorkspaceSymbolRequest = {})); +/** + * A request to provide code lens for the given text document. + */ +var CodeLensRequest; +(function (CodeLensRequest) { + CodeLensRequest.type = new messages_1.ProtocolRequestType('textDocument/codeLens'); + /** @deprecated Use CodeLensRequest.type */ + CodeLensRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(CodeLensRequest = exports.CodeLensRequest || (exports.CodeLensRequest = {})); +/** + * A request to resolve a command for a given code lens. + */ +var CodeLensResolveRequest; +(function (CodeLensResolveRequest) { + CodeLensResolveRequest.type = new messages_1.ProtocolRequestType('codeLens/resolve'); +})(CodeLensResolveRequest = exports.CodeLensResolveRequest || (exports.CodeLensResolveRequest = {})); +/** + * A request to provide document links + */ +var DocumentLinkRequest; +(function (DocumentLinkRequest) { + DocumentLinkRequest.method = 'textDocument/documentLink'; + DocumentLinkRequest.type = new messages_1.ProtocolRequestType(DocumentLinkRequest.method); + /** @deprecated Use DocumentLinkRequest.type */ + DocumentLinkRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(DocumentLinkRequest = exports.DocumentLinkRequest || (exports.DocumentLinkRequest = {})); +/** + * Request to resolve additional information for a given document link. The request's + * parameter is of type [DocumentLink](#DocumentLink) the response + * is of type [DocumentLink](#DocumentLink) or a Thenable that resolves to such. + */ +var DocumentLinkResolveRequest; +(function (DocumentLinkResolveRequest) { + DocumentLinkResolveRequest.type = new messages_1.ProtocolRequestType('documentLink/resolve'); +})(DocumentLinkResolveRequest = exports.DocumentLinkResolveRequest || (exports.DocumentLinkResolveRequest = {})); +/** + * A request to to format a whole document. + */ +var DocumentFormattingRequest; +(function (DocumentFormattingRequest) { + DocumentFormattingRequest.method = 'textDocument/formatting'; + DocumentFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest.method); +})(DocumentFormattingRequest = exports.DocumentFormattingRequest || (exports.DocumentFormattingRequest = {})); +/** + * A request to to format a range in a document. + */ +var DocumentRangeFormattingRequest; +(function (DocumentRangeFormattingRequest) { + DocumentRangeFormattingRequest.method = 'textDocument/rangeFormatting'; + DocumentRangeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest.method); +})(DocumentRangeFormattingRequest = exports.DocumentRangeFormattingRequest || (exports.DocumentRangeFormattingRequest = {})); +/** + * A request to format a document on type. + */ +var DocumentOnTypeFormattingRequest; +(function (DocumentOnTypeFormattingRequest) { + DocumentOnTypeFormattingRequest.method = 'textDocument/onTypeFormatting'; + DocumentOnTypeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest.method); +})(DocumentOnTypeFormattingRequest = exports.DocumentOnTypeFormattingRequest || (exports.DocumentOnTypeFormattingRequest = {})); +/** + * A request to rename a symbol. + */ +var RenameRequest; +(function (RenameRequest) { + RenameRequest.method = 'textDocument/rename'; + RenameRequest.type = new messages_1.ProtocolRequestType(RenameRequest.method); +})(RenameRequest = exports.RenameRequest || (exports.RenameRequest = {})); +/** + * A request to test and perform the setup necessary for a rename. + */ +var PrepareRenameRequest; +(function (PrepareRenameRequest) { + PrepareRenameRequest.method = 'textDocument/prepareRename'; + PrepareRenameRequest.type = new messages_1.ProtocolRequestType(PrepareRenameRequest.method); +})(PrepareRenameRequest = exports.PrepareRenameRequest || (exports.PrepareRenameRequest = {})); +/** + * A request send from the client to the server to execute a command. The request might return + * a workspace edit which the client will apply to the workspace. + */ +var ExecuteCommandRequest; +(function (ExecuteCommandRequest) { + ExecuteCommandRequest.type = new messages_1.ProtocolRequestType('workspace/executeCommand'); +})(ExecuteCommandRequest = exports.ExecuteCommandRequest || (exports.ExecuteCommandRequest = {})); +/** + * A request sent from the server to the client to modified certain resources. + */ +var ApplyWorkspaceEditRequest; +(function (ApplyWorkspaceEditRequest) { + ApplyWorkspaceEditRequest.type = new messages_1.ProtocolRequestType('workspace/applyEdit'); +})(ApplyWorkspaceEditRequest = exports.ApplyWorkspaceEditRequest || (exports.ApplyWorkspaceEditRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.progress.js": +/*!*******************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.progress.js ***! + \*******************************************************************************/ +/*! flagged exports */ +/*! export WorkDoneProgress [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkDoneProgressCancelNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkDoneProgressCreateRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +var WorkDoneProgress; +(function (WorkDoneProgress) { + WorkDoneProgress.type = new vscode_jsonrpc_1.ProgressType(); +})(WorkDoneProgress = exports.WorkDoneProgress || (exports.WorkDoneProgress = {})); +/** + * The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress + * reporting from the server. + */ +var WorkDoneProgressCreateRequest; +(function (WorkDoneProgressCreateRequest) { + WorkDoneProgressCreateRequest.type = new messages_1.ProtocolRequestType('window/workDoneProgress/create'); +})(WorkDoneProgressCreateRequest = exports.WorkDoneProgressCreateRequest || (exports.WorkDoneProgressCreateRequest = {})); +/** + * The `window/workDoneProgress/cancel` notification is sent from the client to the server to cancel a progress + * initiated on the server side. + */ +var WorkDoneProgressCancelNotification; +(function (WorkDoneProgressCancelNotification) { + WorkDoneProgressCancelNotification.type = new messages_1.ProtocolNotificationType('window/workDoneProgress/cancel'); +})(WorkDoneProgressCancelNotification = exports.WorkDoneProgressCancelNotification || (exports.WorkDoneProgressCancelNotification = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.selectionRange.js": +/*!*************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.selectionRange.js ***! + \*************************************************************************************/ +/*! flagged exports */ +/*! export SelectionRangeRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * A request to provide selection ranges in a document. The request's + * parameter is of type [SelectionRangeParams](#SelectionRangeParams), the + * response is of type [SelectionRange[]](#SelectionRange[]) or a Thenable + * that resolves to such. + */ +var SelectionRangeRequest; +(function (SelectionRangeRequest) { + SelectionRangeRequest.method = 'textDocument/selectionRange'; + SelectionRangeRequest.type = new messages_1.ProtocolRequestType(SelectionRangeRequest.method); + /** @deprecated Use SelectionRangeRequest.type */ + SelectionRangeRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(SelectionRangeRequest = exports.SelectionRangeRequest || (exports.SelectionRangeRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.sematicTokens.proposed.js": +/*!*********************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.sematicTokens.proposed.js ***! + \*********************************************************************************************/ +/*! flagged exports */ +/*! export SemanticTokenModifiers [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SemanticTokenTypes [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SemanticTokens [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SemanticTokensEditsRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SemanticTokensRangeRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SemanticTokensRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * A set of predefined token types. This set is not fixed + * an clients can specify additional token types via the + * corresponding client capabilities. + * + * @since 3.16.0 - Proposed state + */ +var SemanticTokenTypes; +(function (SemanticTokenTypes) { + SemanticTokenTypes["comment"] = "comment"; + SemanticTokenTypes["keyword"] = "keyword"; + SemanticTokenTypes["string"] = "string"; + SemanticTokenTypes["number"] = "number"; + SemanticTokenTypes["regexp"] = "regexp"; + SemanticTokenTypes["operator"] = "operator"; + SemanticTokenTypes["namespace"] = "namespace"; + SemanticTokenTypes["type"] = "type"; + SemanticTokenTypes["struct"] = "struct"; + SemanticTokenTypes["class"] = "class"; + SemanticTokenTypes["interface"] = "interface"; + SemanticTokenTypes["enum"] = "enum"; + SemanticTokenTypes["typeParameter"] = "typeParameter"; + SemanticTokenTypes["function"] = "function"; + SemanticTokenTypes["member"] = "member"; + SemanticTokenTypes["property"] = "property"; + SemanticTokenTypes["macro"] = "macro"; + SemanticTokenTypes["variable"] = "variable"; + SemanticTokenTypes["parameter"] = "parameter"; + SemanticTokenTypes["label"] = "label"; +})(SemanticTokenTypes = exports.SemanticTokenTypes || (exports.SemanticTokenTypes = {})); +/** + * A set of predefined token modifiers. This set is not fixed + * an clients can specify additional token types via the + * corresponding client capabilities. + * + * @since 3.16.0 - Proposed state + */ +var SemanticTokenModifiers; +(function (SemanticTokenModifiers) { + SemanticTokenModifiers["documentation"] = "documentation"; + SemanticTokenModifiers["declaration"] = "declaration"; + SemanticTokenModifiers["definition"] = "definition"; + SemanticTokenModifiers["reference"] = "reference"; + SemanticTokenModifiers["static"] = "static"; + SemanticTokenModifiers["abstract"] = "abstract"; + SemanticTokenModifiers["deprecated"] = "deprecated"; + SemanticTokenModifiers["async"] = "async"; + SemanticTokenModifiers["volatile"] = "volatile"; + SemanticTokenModifiers["readonly"] = "readonly"; +})(SemanticTokenModifiers = exports.SemanticTokenModifiers || (exports.SemanticTokenModifiers = {})); +/** + * @since 3.16.0 - Proposed state + */ +var SemanticTokens; +(function (SemanticTokens) { + function is(value) { + const candidate = value; + return candidate !== undefined && (candidate.resultId === undefined || typeof candidate.resultId === 'string') && + Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number'); + } + SemanticTokens.is = is; +})(SemanticTokens = exports.SemanticTokens || (exports.SemanticTokens = {})); +/** + * @since 3.16.0 - Proposed state + */ +var SemanticTokensRequest; +(function (SemanticTokensRequest) { + SemanticTokensRequest.method = 'textDocument/semanticTokens'; + SemanticTokensRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRequest.method); +})(SemanticTokensRequest = exports.SemanticTokensRequest || (exports.SemanticTokensRequest = {})); +/** + * @since 3.16.0 - Proposed state + */ +var SemanticTokensEditsRequest; +(function (SemanticTokensEditsRequest) { + SemanticTokensEditsRequest.method = 'textDocument/semanticTokens/edits'; + SemanticTokensEditsRequest.type = new messages_1.ProtocolRequestType(SemanticTokensEditsRequest.method); +})(SemanticTokensEditsRequest = exports.SemanticTokensEditsRequest || (exports.SemanticTokensEditsRequest = {})); +/** + * @since 3.16.0 - Proposed state + */ +var SemanticTokensRangeRequest; +(function (SemanticTokensRangeRequest) { + SemanticTokensRangeRequest.method = 'textDocument/semanticTokens/range'; + SemanticTokensRangeRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest.method); +})(SemanticTokensRangeRequest = exports.SemanticTokensRangeRequest || (exports.SemanticTokensRangeRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.typeDefinition.js": +/*!*************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.typeDefinition.js ***! + \*************************************************************************************/ +/*! flagged exports */ +/*! export TypeDefinitionRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const vscode_jsonrpc_1 = __webpack_require__(/*! vscode-jsonrpc */ "../node_modules/vscode-jsonrpc/lib/main.js"); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +// @ts-ignore: to avoid inlining LocatioLink as dynamic import +let __noDynamicImport; +/** + * A request to resolve the type definition locations of a symbol at a given text + * document position. The request's parameter is of type [TextDocumentPositioParams] + * (#TextDocumentPositionParams) the response is of type [Definition](#Definition) or a + * Thenable that resolves to such. + */ +var TypeDefinitionRequest; +(function (TypeDefinitionRequest) { + TypeDefinitionRequest.method = 'textDocument/typeDefinition'; + TypeDefinitionRequest.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest.method); + /** @deprecated Use TypeDefinitionRequest.type */ + TypeDefinitionRequest.resultType = new vscode_jsonrpc_1.ProgressType(); +})(TypeDefinitionRequest = exports.TypeDefinitionRequest || (exports.TypeDefinitionRequest = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/protocol.workspaceFolders.js": +/*!***************************************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/protocol.workspaceFolders.js ***! + \***************************************************************************************/ +/*! flagged exports */ +/*! export DidChangeWorkspaceFoldersNotification [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkspaceFoldersRequest [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const messages_1 = __webpack_require__(/*! ./messages */ "../node_modules/vscode-languageserver-protocol/lib/messages.js"); +/** + * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders. + */ +var WorkspaceFoldersRequest; +(function (WorkspaceFoldersRequest) { + WorkspaceFoldersRequest.type = new messages_1.ProtocolRequestType0('workspace/workspaceFolders'); +})(WorkspaceFoldersRequest = exports.WorkspaceFoldersRequest || (exports.WorkspaceFoldersRequest = {})); +/** + * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace + * folder configuration changes. + */ +var DidChangeWorkspaceFoldersNotification; +(function (DidChangeWorkspaceFoldersNotification) { + DidChangeWorkspaceFoldersNotification.type = new messages_1.ProtocolNotificationType('workspace/didChangeWorkspaceFolders'); +})(DidChangeWorkspaceFoldersNotification = exports.DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = {})); + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-protocol/lib/utils/is.js": +/*!**********************************************************************!*\ + !*** ../node_modules/vscode-languageserver-protocol/lib/utils/is.js ***! + \**********************************************************************/ +/*! flagged exports */ +/*! export __esModule [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export array [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export boolean [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export error [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export func [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export number [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export objectLiteral [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export string [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export stringArray [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export typedArray [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__ */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function boolean(value) { + return value === true || value === false; +} +exports.boolean = boolean; +function string(value) { + return typeof value === 'string' || value instanceof String; +} +exports.string = string; +function number(value) { + return typeof value === 'number' || value instanceof Number; +} +exports.number = number; +function error(value) { + return value instanceof Error; +} +exports.error = error; +function func(value) { + return typeof value === 'function'; +} +exports.func = func; +function array(value) { + return Array.isArray(value); +} +exports.array = array; +function stringArray(value) { + return array(value) && value.every(elem => string(elem)); +} +exports.stringArray = stringArray; +function typedArray(value, check) { + return Array.isArray(value) && value.every(check); +} +exports.typedArray = typedArray; +function objectLiteral(value) { + // Strictly speaking class instances pass this check as well. Since the LSP + // doesn't use classes we ignore this for now. If we do we need to add something + // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null` + return value !== null && typeof value === 'object'; +} +exports.objectLiteral = objectLiteral; + + +/***/ }), + +/***/ "../node_modules/vscode-languageserver-types/lib/esm/main.js": +/*!*******************************************************************!*\ + !*** ../node_modules/vscode-languageserver-types/lib/esm/main.js ***! + \*******************************************************************/ +/*! namespace exports */ +/*! export CodeAction [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CodeActionContext [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CodeActionKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CodeLens [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Color [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ColorInformation [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ColorPresentation [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Command [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionItem [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionItemKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionItemTag [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CompletionList [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export CreateFile [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DeleteFile [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Diagnostic [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DiagnosticRelatedInformation [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DiagnosticSeverity [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DiagnosticTag [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentHighlight [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentHighlightKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentLink [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export DocumentSymbol [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export EOL [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FoldingRange [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FoldingRangeKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export FormattingOptions [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Hover [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export InsertTextFormat [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Location [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export LocationLink [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export MarkedString [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export MarkupContent [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export MarkupKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export ParameterInformation [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Position [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export Range [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export RenameFile [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SelectionRange [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SignatureInformation [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SymbolInformation [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SymbolKind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export SymbolTag [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocument [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocumentEdit [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocumentIdentifier [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextDocumentItem [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export TextEdit [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export VersionedTextDocumentIdentifier [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkspaceChange [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export WorkspaceEdit [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Position": () => /* binding */ Position, +/* harmony export */ "Range": () => /* binding */ Range, +/* harmony export */ "Location": () => /* binding */ Location, +/* harmony export */ "LocationLink": () => /* binding */ LocationLink, +/* harmony export */ "Color": () => /* binding */ Color, +/* harmony export */ "ColorInformation": () => /* binding */ ColorInformation, +/* harmony export */ "ColorPresentation": () => /* binding */ ColorPresentation, +/* harmony export */ "FoldingRangeKind": () => /* binding */ FoldingRangeKind, +/* harmony export */ "FoldingRange": () => /* binding */ FoldingRange, +/* harmony export */ "DiagnosticRelatedInformation": () => /* binding */ DiagnosticRelatedInformation, +/* harmony export */ "DiagnosticSeverity": () => /* binding */ DiagnosticSeverity, +/* harmony export */ "DiagnosticTag": () => /* binding */ DiagnosticTag, +/* harmony export */ "Diagnostic": () => /* binding */ Diagnostic, +/* harmony export */ "Command": () => /* binding */ Command, +/* harmony export */ "TextEdit": () => /* binding */ TextEdit, +/* harmony export */ "TextDocumentEdit": () => /* binding */ TextDocumentEdit, +/* harmony export */ "CreateFile": () => /* binding */ CreateFile, +/* harmony export */ "RenameFile": () => /* binding */ RenameFile, +/* harmony export */ "DeleteFile": () => /* binding */ DeleteFile, +/* harmony export */ "WorkspaceEdit": () => /* binding */ WorkspaceEdit, +/* harmony export */ "WorkspaceChange": () => /* binding */ WorkspaceChange, +/* harmony export */ "TextDocumentIdentifier": () => /* binding */ TextDocumentIdentifier, +/* harmony export */ "VersionedTextDocumentIdentifier": () => /* binding */ VersionedTextDocumentIdentifier, +/* harmony export */ "TextDocumentItem": () => /* binding */ TextDocumentItem, +/* harmony export */ "MarkupKind": () => /* binding */ MarkupKind, +/* harmony export */ "MarkupContent": () => /* binding */ MarkupContent, +/* harmony export */ "CompletionItemKind": () => /* binding */ CompletionItemKind, +/* harmony export */ "InsertTextFormat": () => /* binding */ InsertTextFormat, +/* harmony export */ "CompletionItemTag": () => /* binding */ CompletionItemTag, +/* harmony export */ "CompletionItem": () => /* binding */ CompletionItem, +/* harmony export */ "CompletionList": () => /* binding */ CompletionList, +/* harmony export */ "MarkedString": () => /* binding */ MarkedString, +/* harmony export */ "Hover": () => /* binding */ Hover, +/* harmony export */ "ParameterInformation": () => /* binding */ ParameterInformation, +/* harmony export */ "SignatureInformation": () => /* binding */ SignatureInformation, +/* harmony export */ "DocumentHighlightKind": () => /* binding */ DocumentHighlightKind, +/* harmony export */ "DocumentHighlight": () => /* binding */ DocumentHighlight, +/* harmony export */ "SymbolKind": () => /* binding */ SymbolKind, +/* harmony export */ "SymbolTag": () => /* binding */ SymbolTag, +/* harmony export */ "SymbolInformation": () => /* binding */ SymbolInformation, +/* harmony export */ "DocumentSymbol": () => /* binding */ DocumentSymbol, +/* harmony export */ "CodeActionKind": () => /* binding */ CodeActionKind, +/* harmony export */ "CodeActionContext": () => /* binding */ CodeActionContext, +/* harmony export */ "CodeAction": () => /* binding */ CodeAction, +/* harmony export */ "CodeLens": () => /* binding */ CodeLens, +/* harmony export */ "FormattingOptions": () => /* binding */ FormattingOptions, +/* harmony export */ "DocumentLink": () => /* binding */ DocumentLink, +/* harmony export */ "SelectionRange": () => /* binding */ SelectionRange, +/* harmony export */ "EOL": () => /* binding */ EOL, +/* harmony export */ "TextDocument": () => /* binding */ TextDocument +/* harmony export */ }); +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +/** + * The Position namespace provides helper functions to work with + * [Position](#Position) literals. + */ +var Position; +(function (Position) { + /** + * Creates a new Position literal from the given line and character. + * @param line The position's line. + * @param character The position's character. + */ + function create(line, character) { + return { line: line, character: character }; + } + Position.create = create; + /** + * Checks whether the given liternal conforms to the [Position](#Position) interface. + */ + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Is.number(candidate.line) && Is.number(candidate.character); + } + Position.is = is; +})(Position || (Position = {})); +/** + * The Range namespace provides helper functions to work with + * [Range](#Range) literals. + */ +var Range; +(function (Range) { + function create(one, two, three, four) { + if (Is.number(one) && Is.number(two) && Is.number(three) && Is.number(four)) { + return { start: Position.create(one, two), end: Position.create(three, four) }; + } + else if (Position.is(one) && Position.is(two)) { + return { start: one, end: two }; + } + else { + throw new Error("Range#create called with invalid arguments[" + one + ", " + two + ", " + three + ", " + four + "]"); + } + } + Range.create = create; + /** + * Checks whether the given literal conforms to the [Range](#Range) interface. + */ + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end); + } + Range.is = is; +})(Range || (Range = {})); +/** + * The Location namespace provides helper functions to work with + * [Location](#Location) literals. + */ +var Location; +(function (Location) { + /** + * Creates a Location literal. + * @param uri The location's uri. + * @param range The location's range. + */ + function create(uri, range) { + return { uri: uri, range: range }; + } + Location.create = create; + /** + * Checks whether the given literal conforms to the [Location](#Location) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); + } + Location.is = is; +})(Location || (Location = {})); +/** + * The LocationLink namespace provides helper functions to work with + * [LocationLink](#LocationLink) literals. + */ +var LocationLink; +(function (LocationLink) { + /** + * Creates a LocationLink literal. + * @param targetUri The definition's uri. + * @param targetRange The full range of the definition. + * @param targetSelectionRange The span of the symbol definition at the target. + * @param originSelectionRange The span of the symbol being defined in the originating source file. + */ + function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) { + return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange }; + } + LocationLink.create = create; + /** + * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) + && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) + && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange)); + } + LocationLink.is = is; +})(LocationLink || (LocationLink = {})); +/** + * The Color namespace provides helper functions to work with + * [Color](#Color) literals. + */ +var Color; +(function (Color) { + /** + * Creates a new Color literal. + */ + function create(red, green, blue, alpha) { + return { + red: red, + green: green, + blue: blue, + alpha: alpha, + }; + } + Color.create = create; + /** + * Checks whether the given literal conforms to the [Color](#Color) interface. + */ + function is(value) { + var candidate = value; + return Is.number(candidate.red) + && Is.number(candidate.green) + && Is.number(candidate.blue) + && Is.number(candidate.alpha); + } + Color.is = is; +})(Color || (Color = {})); +/** + * The ColorInformation namespace provides helper functions to work with + * [ColorInformation](#ColorInformation) literals. + */ +var ColorInformation; +(function (ColorInformation) { + /** + * Creates a new ColorInformation literal. + */ + function create(range, color) { + return { + range: range, + color: color, + }; + } + ColorInformation.create = create; + /** + * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface. + */ + function is(value) { + var candidate = value; + return Range.is(candidate.range) && Color.is(candidate.color); + } + ColorInformation.is = is; +})(ColorInformation || (ColorInformation = {})); +/** + * The Color namespace provides helper functions to work with + * [ColorPresentation](#ColorPresentation) literals. + */ +var ColorPresentation; +(function (ColorPresentation) { + /** + * Creates a new ColorInformation literal. + */ + function create(label, textEdit, additionalTextEdits) { + return { + label: label, + textEdit: textEdit, + additionalTextEdits: additionalTextEdits, + }; + } + ColorPresentation.create = create; + /** + * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface. + */ + function is(value) { + var candidate = value; + return Is.string(candidate.label) + && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) + && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is)); + } + ColorPresentation.is = is; +})(ColorPresentation || (ColorPresentation = {})); +/** + * Enum of known range kinds + */ +var FoldingRangeKind; +(function (FoldingRangeKind) { + /** + * Folding range for a comment + */ + FoldingRangeKind["Comment"] = "comment"; + /** + * Folding range for a imports or includes + */ + FoldingRangeKind["Imports"] = "imports"; + /** + * Folding range for a region (e.g. `#region`) + */ + FoldingRangeKind["Region"] = "region"; +})(FoldingRangeKind || (FoldingRangeKind = {})); +/** + * The folding range namespace provides helper functions to work with + * [FoldingRange](#FoldingRange) literals. + */ +var FoldingRange; +(function (FoldingRange) { + /** + * Creates a new FoldingRange literal. + */ + function create(startLine, endLine, startCharacter, endCharacter, kind) { + var result = { + startLine: startLine, + endLine: endLine + }; + if (Is.defined(startCharacter)) { + result.startCharacter = startCharacter; + } + if (Is.defined(endCharacter)) { + result.endCharacter = endCharacter; + } + if (Is.defined(kind)) { + result.kind = kind; + } + return result; + } + FoldingRange.create = create; + /** + * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface. + */ + function is(value) { + var candidate = value; + return Is.number(candidate.startLine) && Is.number(candidate.startLine) + && (Is.undefined(candidate.startCharacter) || Is.number(candidate.startCharacter)) + && (Is.undefined(candidate.endCharacter) || Is.number(candidate.endCharacter)) + && (Is.undefined(candidate.kind) || Is.string(candidate.kind)); + } + FoldingRange.is = is; +})(FoldingRange || (FoldingRange = {})); +/** + * The DiagnosticRelatedInformation namespace provides helper functions to work with + * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals. + */ +var DiagnosticRelatedInformation; +(function (DiagnosticRelatedInformation) { + /** + * Creates a new DiagnosticRelatedInformation literal. + */ + function create(location, message) { + return { + location: location, + message: message + }; + } + DiagnosticRelatedInformation.create = create; + /** + * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message); + } + DiagnosticRelatedInformation.is = is; +})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {})); +/** + * The diagnostic's severity. + */ +var DiagnosticSeverity; +(function (DiagnosticSeverity) { + /** + * Reports an error. + */ + DiagnosticSeverity.Error = 1; + /** + * Reports a warning. + */ + DiagnosticSeverity.Warning = 2; + /** + * Reports an information. + */ + DiagnosticSeverity.Information = 3; + /** + * Reports a hint. + */ + DiagnosticSeverity.Hint = 4; +})(DiagnosticSeverity || (DiagnosticSeverity = {})); +/** + * The diagnostic tags. + * + * @since 3.15.0 + */ +var DiagnosticTag; +(function (DiagnosticTag) { + /** + * Unused or unnecessary code. + * + * Clients are allowed to render diagnostics with this tag faded out instead of having + * an error squiggle. + */ + DiagnosticTag.Unnecessary = 1; + /** + * Deprecated or obsolete code. + * + * Clients are allowed to rendered diagnostics with this tag strike through. + */ + DiagnosticTag.Deprecated = 2; +})(DiagnosticTag || (DiagnosticTag = {})); +/** + * The Diagnostic namespace provides helper functions to work with + * [Diagnostic](#Diagnostic) literals. + */ +var Diagnostic; +(function (Diagnostic) { + /** + * Creates a new Diagnostic literal. + */ + function create(range, message, severity, code, source, relatedInformation) { + var result = { range: range, message: message }; + if (Is.defined(severity)) { + result.severity = severity; + } + if (Is.defined(code)) { + result.code = code; + } + if (Is.defined(source)) { + result.source = source; + } + if (Is.defined(relatedInformation)) { + result.relatedInformation = relatedInformation; + } + return result; + } + Diagnostic.create = create; + /** + * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) + && Range.is(candidate.range) + && Is.string(candidate.message) + && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) + && (Is.number(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) + && (Is.string(candidate.source) || Is.undefined(candidate.source)) + && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is)); + } + Diagnostic.is = is; +})(Diagnostic || (Diagnostic = {})); +/** + * The Command namespace provides helper functions to work with + * [Command](#Command) literals. + */ +var Command; +(function (Command) { + /** + * Creates a new Command literal. + */ + function create(title, command) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var result = { title: title, command: command }; + if (Is.defined(args) && args.length > 0) { + result.arguments = args; + } + return result; + } + Command.create = create; + /** + * Checks whether the given literal conforms to the [Command](#Command) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command); + } + Command.is = is; +})(Command || (Command = {})); +/** + * The TextEdit namespace provides helper function to create replace, + * insert and delete edits more easily. + */ +var TextEdit; +(function (TextEdit) { + /** + * Creates a replace text edit. + * @param range The range of text to be replaced. + * @param newText The new text. + */ + function replace(range, newText) { + return { range: range, newText: newText }; + } + TextEdit.replace = replace; + /** + * Creates a insert text edit. + * @param position The position to insert the text at. + * @param newText The text to be inserted. + */ + function insert(position, newText) { + return { range: { start: position, end: position }, newText: newText }; + } + TextEdit.insert = insert; + /** + * Creates a delete text edit. + * @param range The range of text to be deleted. + */ + function del(range) { + return { range: range, newText: '' }; + } + TextEdit.del = del; + function is(value) { + var candidate = value; + return Is.objectLiteral(candidate) + && Is.string(candidate.newText) + && Range.is(candidate.range); + } + TextEdit.is = is; +})(TextEdit || (TextEdit = {})); +/** + * The TextDocumentEdit namespace provides helper function to create + * an edit that manipulates a text document. + */ +var TextDocumentEdit; +(function (TextDocumentEdit) { + /** + * Creates a new `TextDocumentEdit` + */ + function create(textDocument, edits) { + return { textDocument: textDocument, edits: edits }; + } + TextDocumentEdit.create = create; + function is(value) { + var candidate = value; + return Is.defined(candidate) + && VersionedTextDocumentIdentifier.is(candidate.textDocument) + && Array.isArray(candidate.edits); + } + TextDocumentEdit.is = is; +})(TextDocumentEdit || (TextDocumentEdit = {})); +var CreateFile; +(function (CreateFile) { + function create(uri, options) { + var result = { + kind: 'create', + uri: uri + }; + if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) { + result.options = options; + } + return result; + } + CreateFile.create = create; + function is(value) { + var candidate = value; + return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && + (candidate.options === void 0 || + ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists)))); + } + CreateFile.is = is; +})(CreateFile || (CreateFile = {})); +var RenameFile; +(function (RenameFile) { + function create(oldUri, newUri, options) { + var result = { + kind: 'rename', + oldUri: oldUri, + newUri: newUri + }; + if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) { + result.options = options; + } + return result; + } + RenameFile.create = create; + function is(value) { + var candidate = value; + return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && + (candidate.options === void 0 || + ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists)))); + } + RenameFile.is = is; +})(RenameFile || (RenameFile = {})); +var DeleteFile; +(function (DeleteFile) { + function create(uri, options) { + var result = { + kind: 'delete', + uri: uri + }; + if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) { + result.options = options; + } + return result; + } + DeleteFile.create = create; + function is(value) { + var candidate = value; + return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && + (candidate.options === void 0 || + ((candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists)))); + } + DeleteFile.is = is; +})(DeleteFile || (DeleteFile = {})); +var WorkspaceEdit; +(function (WorkspaceEdit) { + function is(value) { + var candidate = value; + return candidate && + (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && + (candidate.documentChanges === void 0 || candidate.documentChanges.every(function (change) { + if (Is.string(change.kind)) { + return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change); + } + else { + return TextDocumentEdit.is(change); + } + })); + } + WorkspaceEdit.is = is; +})(WorkspaceEdit || (WorkspaceEdit = {})); +var TextEditChangeImpl = /** @class */ (function () { + function TextEditChangeImpl(edits) { + this.edits = edits; + } + TextEditChangeImpl.prototype.insert = function (position, newText) { + this.edits.push(TextEdit.insert(position, newText)); + }; + TextEditChangeImpl.prototype.replace = function (range, newText) { + this.edits.push(TextEdit.replace(range, newText)); + }; + TextEditChangeImpl.prototype.delete = function (range) { + this.edits.push(TextEdit.del(range)); + }; + TextEditChangeImpl.prototype.add = function (edit) { + this.edits.push(edit); + }; + TextEditChangeImpl.prototype.all = function () { + return this.edits; + }; + TextEditChangeImpl.prototype.clear = function () { + this.edits.splice(0, this.edits.length); + }; + return TextEditChangeImpl; +}()); +/** + * A workspace change helps constructing changes to a workspace. + */ +var WorkspaceChange = /** @class */ (function () { + function WorkspaceChange(workspaceEdit) { + var _this = this; + this._textEditChanges = Object.create(null); + if (workspaceEdit) { + this._workspaceEdit = workspaceEdit; + if (workspaceEdit.documentChanges) { + workspaceEdit.documentChanges.forEach(function (change) { + if (TextDocumentEdit.is(change)) { + var textEditChange = new TextEditChangeImpl(change.edits); + _this._textEditChanges[change.textDocument.uri] = textEditChange; + } + }); + } + else if (workspaceEdit.changes) { + Object.keys(workspaceEdit.changes).forEach(function (key) { + var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]); + _this._textEditChanges[key] = textEditChange; + }); + } + } + } + Object.defineProperty(WorkspaceChange.prototype, "edit", { + /** + * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal + * use to be returned from a workspace edit operation like rename. + */ + get: function () { + return this._workspaceEdit; + }, + enumerable: true, + configurable: true + }); + WorkspaceChange.prototype.getTextEditChange = function (key) { + if (VersionedTextDocumentIdentifier.is(key)) { + if (!this._workspaceEdit) { + this._workspaceEdit = { + documentChanges: [] + }; + } + if (!this._workspaceEdit.documentChanges) { + throw new Error('Workspace edit is not configured for document changes.'); + } + var textDocument = key; + var result = this._textEditChanges[textDocument.uri]; + if (!result) { + var edits = []; + var textDocumentEdit = { + textDocument: textDocument, + edits: edits + }; + this._workspaceEdit.documentChanges.push(textDocumentEdit); + result = new TextEditChangeImpl(edits); + this._textEditChanges[textDocument.uri] = result; + } + return result; + } + else { + if (!this._workspaceEdit) { + this._workspaceEdit = { + changes: Object.create(null) + }; + } + if (!this._workspaceEdit.changes) { + throw new Error('Workspace edit is not configured for normal text edit changes.'); + } + var result = this._textEditChanges[key]; + if (!result) { + var edits = []; + this._workspaceEdit.changes[key] = edits; + result = new TextEditChangeImpl(edits); + this._textEditChanges[key] = result; + } + return result; + } + }; + WorkspaceChange.prototype.createFile = function (uri, options) { + this.checkDocumentChanges(); + this._workspaceEdit.documentChanges.push(CreateFile.create(uri, options)); + }; + WorkspaceChange.prototype.renameFile = function (oldUri, newUri, options) { + this.checkDocumentChanges(); + this._workspaceEdit.documentChanges.push(RenameFile.create(oldUri, newUri, options)); + }; + WorkspaceChange.prototype.deleteFile = function (uri, options) { + this.checkDocumentChanges(); + this._workspaceEdit.documentChanges.push(DeleteFile.create(uri, options)); + }; + WorkspaceChange.prototype.checkDocumentChanges = function () { + if (!this._workspaceEdit || !this._workspaceEdit.documentChanges) { + throw new Error('Workspace edit is not configured for document changes.'); + } + }; + return WorkspaceChange; +}()); + +/** + * The TextDocumentIdentifier namespace provides helper functions to work with + * [TextDocumentIdentifier](#TextDocumentIdentifier) literals. + */ +var TextDocumentIdentifier; +(function (TextDocumentIdentifier) { + /** + * Creates a new TextDocumentIdentifier literal. + * @param uri The document's uri. + */ + function create(uri) { + return { uri: uri }; + } + TextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri); + } + TextDocumentIdentifier.is = is; +})(TextDocumentIdentifier || (TextDocumentIdentifier = {})); +/** + * The VersionedTextDocumentIdentifier namespace provides helper functions to work with + * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals. + */ +var VersionedTextDocumentIdentifier; +(function (VersionedTextDocumentIdentifier) { + /** + * Creates a new VersionedTextDocumentIdentifier literal. + * @param uri The document's uri. + * @param uri The document's text. + */ + function create(uri, version) { + return { uri: uri, version: version }; + } + VersionedTextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.number(candidate.version)); + } + VersionedTextDocumentIdentifier.is = is; +})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {})); +/** + * The TextDocumentItem namespace provides helper functions to work with + * [TextDocumentItem](#TextDocumentItem) literals. + */ +var TextDocumentItem; +(function (TextDocumentItem) { + /** + * Creates a new TextDocumentItem literal. + * @param uri The document's uri. + * @param languageId The document's language identifier. + * @param version The document's version number. + * @param text The document's text. + */ + function create(uri, languageId, version, text) { + return { uri: uri, languageId: languageId, version: version, text: text }; + } + TextDocumentItem.create = create; + /** + * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.number(candidate.version) && Is.string(candidate.text); + } + TextDocumentItem.is = is; +})(TextDocumentItem || (TextDocumentItem = {})); +/** + * Describes the content type that a client supports in various + * result literals like `Hover`, `ParameterInfo` or `CompletionItem`. + * + * Please note that `MarkupKinds` must not start with a `$`. This kinds + * are reserved for internal usage. + */ +var MarkupKind; +(function (MarkupKind) { + /** + * Plain text is supported as a content format + */ + MarkupKind.PlainText = 'plaintext'; + /** + * Markdown is supported as a content format + */ + MarkupKind.Markdown = 'markdown'; +})(MarkupKind || (MarkupKind = {})); +(function (MarkupKind) { + /** + * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type. + */ + function is(value) { + var candidate = value; + return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown; + } + MarkupKind.is = is; +})(MarkupKind || (MarkupKind = {})); +var MarkupContent; +(function (MarkupContent) { + /** + * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface. + */ + function is(value) { + var candidate = value; + return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value); + } + MarkupContent.is = is; +})(MarkupContent || (MarkupContent = {})); +/** + * The kind of a completion entry. + */ +var CompletionItemKind; +(function (CompletionItemKind) { + CompletionItemKind.Text = 1; + CompletionItemKind.Method = 2; + CompletionItemKind.Function = 3; + CompletionItemKind.Constructor = 4; + CompletionItemKind.Field = 5; + CompletionItemKind.Variable = 6; + CompletionItemKind.Class = 7; + CompletionItemKind.Interface = 8; + CompletionItemKind.Module = 9; + CompletionItemKind.Property = 10; + CompletionItemKind.Unit = 11; + CompletionItemKind.Value = 12; + CompletionItemKind.Enum = 13; + CompletionItemKind.Keyword = 14; + CompletionItemKind.Snippet = 15; + CompletionItemKind.Color = 16; + CompletionItemKind.File = 17; + CompletionItemKind.Reference = 18; + CompletionItemKind.Folder = 19; + CompletionItemKind.EnumMember = 20; + CompletionItemKind.Constant = 21; + CompletionItemKind.Struct = 22; + CompletionItemKind.Event = 23; + CompletionItemKind.Operator = 24; + CompletionItemKind.TypeParameter = 25; +})(CompletionItemKind || (CompletionItemKind = {})); +/** + * Defines whether the insert text in a completion item should be interpreted as + * plain text or a snippet. + */ +var InsertTextFormat; +(function (InsertTextFormat) { + /** + * The primary text to be inserted is treated as a plain string. + */ + InsertTextFormat.PlainText = 1; + /** + * The primary text to be inserted is treated as a snippet. + * + * A snippet can define tab stops and placeholders with `$1`, `$2` + * and `${3:foo}`. `$0` defines the final tab stop, it defaults to + * the end of the snippet. Placeholders with equal identifiers are linked, + * that is typing in one will update others too. + * + * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md + */ + InsertTextFormat.Snippet = 2; +})(InsertTextFormat || (InsertTextFormat = {})); +/** + * Completion item tags are extra annotations that tweak the rendering of a completion + * item. + * + * @since 3.15.0 + */ +var CompletionItemTag; +(function (CompletionItemTag) { + /** + * Render a completion as obsolete, usually using a strike-out. + */ + CompletionItemTag.Deprecated = 1; +})(CompletionItemTag || (CompletionItemTag = {})); +/** + * The CompletionItem namespace provides functions to deal with + * completion items. + */ +var CompletionItem; +(function (CompletionItem) { + /** + * Create a completion item and seed it with a label. + * @param label The completion item's label + */ + function create(label) { + return { label: label }; + } + CompletionItem.create = create; +})(CompletionItem || (CompletionItem = {})); +/** + * The CompletionList namespace provides functions to deal with + * completion lists. + */ +var CompletionList; +(function (CompletionList) { + /** + * Creates a new completion list. + * + * @param items The completion items. + * @param isIncomplete The list is not complete. + */ + function create(items, isIncomplete) { + return { items: items ? items : [], isIncomplete: !!isIncomplete }; + } + CompletionList.create = create; +})(CompletionList || (CompletionList = {})); +var MarkedString; +(function (MarkedString) { + /** + * Creates a marked string from plain text. + * + * @param plainText The plain text. + */ + function fromPlainText(plainText) { + return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash + } + MarkedString.fromPlainText = fromPlainText; + /** + * Checks whether the given value conforms to the [MarkedString](#MarkedString) type. + */ + function is(value) { + var candidate = value; + return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value)); + } + MarkedString.is = is; +})(MarkedString || (MarkedString = {})); +var Hover; +(function (Hover) { + /** + * Checks whether the given value conforms to the [Hover](#Hover) interface. + */ + function is(value) { + var candidate = value; + return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || + MarkedString.is(candidate.contents) || + Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range)); + } + Hover.is = is; +})(Hover || (Hover = {})); +/** + * The ParameterInformation namespace provides helper functions to work with + * [ParameterInformation](#ParameterInformation) literals. + */ +var ParameterInformation; +(function (ParameterInformation) { + /** + * Creates a new parameter information literal. + * + * @param label A label string. + * @param documentation A doc string. + */ + function create(label, documentation) { + return documentation ? { label: label, documentation: documentation } : { label: label }; + } + ParameterInformation.create = create; +})(ParameterInformation || (ParameterInformation = {})); +/** + * The SignatureInformation namespace provides helper functions to work with + * [SignatureInformation](#SignatureInformation) literals. + */ +var SignatureInformation; +(function (SignatureInformation) { + function create(label, documentation) { + var parameters = []; + for (var _i = 2; _i < arguments.length; _i++) { + parameters[_i - 2] = arguments[_i]; + } + var result = { label: label }; + if (Is.defined(documentation)) { + result.documentation = documentation; + } + if (Is.defined(parameters)) { + result.parameters = parameters; + } + else { + result.parameters = []; + } + return result; + } + SignatureInformation.create = create; +})(SignatureInformation || (SignatureInformation = {})); +/** + * A document highlight kind. + */ +var DocumentHighlightKind; +(function (DocumentHighlightKind) { + /** + * A textual occurrence. + */ + DocumentHighlightKind.Text = 1; + /** + * Read-access of a symbol, like reading a variable. + */ + DocumentHighlightKind.Read = 2; + /** + * Write-access of a symbol, like writing to a variable. + */ + DocumentHighlightKind.Write = 3; +})(DocumentHighlightKind || (DocumentHighlightKind = {})); +/** + * DocumentHighlight namespace to provide helper functions to work with + * [DocumentHighlight](#DocumentHighlight) literals. + */ +var DocumentHighlight; +(function (DocumentHighlight) { + /** + * Create a DocumentHighlight object. + * @param range The range the highlight applies to. + */ + function create(range, kind) { + var result = { range: range }; + if (Is.number(kind)) { + result.kind = kind; + } + return result; + } + DocumentHighlight.create = create; +})(DocumentHighlight || (DocumentHighlight = {})); +/** + * A symbol kind. + */ +var SymbolKind; +(function (SymbolKind) { + SymbolKind.File = 1; + SymbolKind.Module = 2; + SymbolKind.Namespace = 3; + SymbolKind.Package = 4; + SymbolKind.Class = 5; + SymbolKind.Method = 6; + SymbolKind.Property = 7; + SymbolKind.Field = 8; + SymbolKind.Constructor = 9; + SymbolKind.Enum = 10; + SymbolKind.Interface = 11; + SymbolKind.Function = 12; + SymbolKind.Variable = 13; + SymbolKind.Constant = 14; + SymbolKind.String = 15; + SymbolKind.Number = 16; + SymbolKind.Boolean = 17; + SymbolKind.Array = 18; + SymbolKind.Object = 19; + SymbolKind.Key = 20; + SymbolKind.Null = 21; + SymbolKind.EnumMember = 22; + SymbolKind.Struct = 23; + SymbolKind.Event = 24; + SymbolKind.Operator = 25; + SymbolKind.TypeParameter = 26; +})(SymbolKind || (SymbolKind = {})); +/** + * Symbol tags are extra annotations that tweak the rendering of a symbol. + * @since 3.15 + */ +var SymbolTag; +(function (SymbolTag) { + /** + * Render a symbol as obsolete, usually using a strike-out. + */ + SymbolTag.Deprecated = 1; +})(SymbolTag || (SymbolTag = {})); +var SymbolInformation; +(function (SymbolInformation) { + /** + * Creates a new symbol information literal. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the location of the symbol. + * @param uri The resource of the location of symbol, defaults to the current document. + * @param containerName The name of the symbol containing the symbol. + */ + function create(name, kind, range, uri, containerName) { + var result = { + name: name, + kind: kind, + location: { uri: uri, range: range } + }; + if (containerName) { + result.containerName = containerName; + } + return result; + } + SymbolInformation.create = create; +})(SymbolInformation || (SymbolInformation = {})); +var DocumentSymbol; +(function (DocumentSymbol) { + /** + * Creates a new symbol information literal. + * + * @param name The name of the symbol. + * @param detail The detail of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the symbol. + * @param selectionRange The selectionRange of the symbol. + * @param children Children of the symbol. + */ + function create(name, detail, kind, range, selectionRange, children) { + var result = { + name: name, + detail: detail, + kind: kind, + range: range, + selectionRange: selectionRange + }; + if (children !== void 0) { + result.children = children; + } + return result; + } + DocumentSymbol.create = create; + /** + * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface. + */ + function is(value) { + var candidate = value; + return candidate && + Is.string(candidate.name) && Is.number(candidate.kind) && + Range.is(candidate.range) && Range.is(candidate.selectionRange) && + (candidate.detail === void 0 || Is.string(candidate.detail)) && + (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && + (candidate.children === void 0 || Array.isArray(candidate.children)); + } + DocumentSymbol.is = is; +})(DocumentSymbol || (DocumentSymbol = {})); +/** + * A set of predefined code action kinds + */ +var CodeActionKind; +(function (CodeActionKind) { + /** + * Empty kind. + */ + CodeActionKind.Empty = ''; + /** + * Base kind for quickfix actions: 'quickfix' + */ + CodeActionKind.QuickFix = 'quickfix'; + /** + * Base kind for refactoring actions: 'refactor' + */ + CodeActionKind.Refactor = 'refactor'; + /** + * Base kind for refactoring extraction actions: 'refactor.extract' + * + * Example extract actions: + * + * - Extract method + * - Extract function + * - Extract variable + * - Extract interface from class + * - ... + */ + CodeActionKind.RefactorExtract = 'refactor.extract'; + /** + * Base kind for refactoring inline actions: 'refactor.inline' + * + * Example inline actions: + * + * - Inline function + * - Inline variable + * - Inline constant + * - ... + */ + CodeActionKind.RefactorInline = 'refactor.inline'; + /** + * Base kind for refactoring rewrite actions: 'refactor.rewrite' + * + * Example rewrite actions: + * + * - Convert JavaScript function to class + * - Add or remove parameter + * - Encapsulate field + * - Make method static + * - Move method to base class + * - ... + */ + CodeActionKind.RefactorRewrite = 'refactor.rewrite'; + /** + * Base kind for source actions: `source` + * + * Source code actions apply to the entire file. + */ + CodeActionKind.Source = 'source'; + /** + * Base kind for an organize imports source action: `source.organizeImports` + */ + CodeActionKind.SourceOrganizeImports = 'source.organizeImports'; + /** + * Base kind for auto-fix source actions: `source.fixAll`. + * + * Fix all actions automatically fix errors that have a clear fix that do not require user input. + * They should not suppress errors or perform unsafe fixes such as generating new types or classes. + * + * @since 3.15.0 + */ + CodeActionKind.SourceFixAll = 'source.fixAll'; +})(CodeActionKind || (CodeActionKind = {})); +/** + * The CodeActionContext namespace provides helper functions to work with + * [CodeActionContext](#CodeActionContext) literals. + */ +var CodeActionContext; +(function (CodeActionContext) { + /** + * Creates a new CodeActionContext literal. + */ + function create(diagnostics, only) { + var result = { diagnostics: diagnostics }; + if (only !== void 0 && only !== null) { + result.only = only; + } + return result; + } + CodeActionContext.create = create; + /** + * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)); + } + CodeActionContext.is = is; +})(CodeActionContext || (CodeActionContext = {})); +var CodeAction; +(function (CodeAction) { + function create(title, commandOrEdit, kind) { + var result = { title: title }; + if (Command.is(commandOrEdit)) { + result.command = commandOrEdit; + } + else { + result.edit = commandOrEdit; + } + if (kind !== void 0) { + result.kind = kind; + } + return result; + } + CodeAction.create = create; + function is(value) { + var candidate = value; + return candidate && Is.string(candidate.title) && + (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && + (candidate.kind === void 0 || Is.string(candidate.kind)) && + (candidate.edit !== void 0 || candidate.command !== void 0) && + (candidate.command === void 0 || Command.is(candidate.command)) && + (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && + (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit)); + } + CodeAction.is = is; +})(CodeAction || (CodeAction = {})); +/** + * The CodeLens namespace provides helper functions to work with + * [CodeLens](#CodeLens) literals. + */ +var CodeLens; +(function (CodeLens) { + /** + * Creates a new CodeLens literal. + */ + function create(range, data) { + var result = { range: range }; + if (Is.defined(data)) { + result.data = data; + } + return result; + } + CodeLens.create = create; + /** + * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command)); + } + CodeLens.is = is; +})(CodeLens || (CodeLens = {})); +/** + * The FormattingOptions namespace provides helper functions to work with + * [FormattingOptions](#FormattingOptions) literals. + */ +var FormattingOptions; +(function (FormattingOptions) { + /** + * Creates a new FormattingOptions literal. + */ + function create(tabSize, insertSpaces) { + return { tabSize: tabSize, insertSpaces: insertSpaces }; + } + FormattingOptions.create = create; + /** + * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.number(candidate.tabSize) && Is.boolean(candidate.insertSpaces); + } + FormattingOptions.is = is; +})(FormattingOptions || (FormattingOptions = {})); +/** + * The DocumentLink namespace provides helper functions to work with + * [DocumentLink](#DocumentLink) literals. + */ +var DocumentLink; +(function (DocumentLink) { + /** + * Creates a new DocumentLink literal. + */ + function create(range, target, data) { + return { range: range, target: target, data: data }; + } + DocumentLink.create = create; + /** + * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); + } + DocumentLink.is = is; +})(DocumentLink || (DocumentLink = {})); +/** + * The SelectionRange namespace provides helper function to work with + * SelectionRange literals. + */ +var SelectionRange; +(function (SelectionRange) { + /** + * Creates a new SelectionRange + * @param range the range. + * @param parent an optional parent. + */ + function create(range, parent) { + return { range: range, parent: parent }; + } + SelectionRange.create = create; + function is(value) { + var candidate = value; + return candidate !== undefined && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent)); + } + SelectionRange.is = is; +})(SelectionRange || (SelectionRange = {})); +var EOL = ['\n', '\r\n', '\r']; +/** + * @deprecated Use the text document from the new vscode-languageserver-textdocument package. + */ +var TextDocument; +(function (TextDocument) { + /** + * Creates a new ITextDocument literal from the given uri and content. + * @param uri The document's uri. + * @param languageId The document's language Id. + * @param content The document's content. + */ + function create(uri, languageId, version, content) { + return new FullTextDocument(uri, languageId, version, content); + } + TextDocument.create = create; + /** + * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface. + */ + function is(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.number(candidate.lineCount) + && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false; + } + TextDocument.is = is; + function applyEdits(document, edits) { + var text = document.getText(); + var sortedEdits = mergeSort(edits, function (a, b) { + var diff = a.range.start.line - b.range.start.line; + if (diff === 0) { + return a.range.start.character - b.range.start.character; + } + return diff; + }); + var lastModifiedOffset = text.length; + for (var i = sortedEdits.length - 1; i >= 0; i--) { + var e = sortedEdits[i]; + var startOffset = document.offsetAt(e.range.start); + var endOffset = document.offsetAt(e.range.end); + if (endOffset <= lastModifiedOffset) { + text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length); + } + else { + throw new Error('Overlapping edit'); + } + lastModifiedOffset = startOffset; + } + return text; + } + TextDocument.applyEdits = applyEdits; + function mergeSort(data, compare) { + if (data.length <= 1) { + // sorted + return data; + } + var p = (data.length / 2) | 0; + var left = data.slice(0, p); + var right = data.slice(p); + mergeSort(left, compare); + mergeSort(right, compare); + var leftIdx = 0; + var rightIdx = 0; + var i = 0; + while (leftIdx < left.length && rightIdx < right.length) { + var ret = compare(left[leftIdx], right[rightIdx]); + if (ret <= 0) { + // smaller_equal -> take left to preserve order + data[i++] = left[leftIdx++]; + } + else { + // greater -> take right + data[i++] = right[rightIdx++]; + } + } + while (leftIdx < left.length) { + data[i++] = left[leftIdx++]; + } + while (rightIdx < right.length) { + data[i++] = right[rightIdx++]; + } + return data; + } +})(TextDocument || (TextDocument = {})); +var FullTextDocument = /** @class */ (function () { + function FullTextDocument(uri, languageId, version, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version; + this._content = content; + this._lineOffsets = undefined; + } + Object.defineProperty(FullTextDocument.prototype, "uri", { + get: function () { + return this._uri; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FullTextDocument.prototype, "languageId", { + get: function () { + return this._languageId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FullTextDocument.prototype, "version", { + get: function () { + return this._version; + }, + enumerable: true, + configurable: true + }); + FullTextDocument.prototype.getText = function (range) { + if (range) { + var start = this.offsetAt(range.start); + var end = this.offsetAt(range.end); + return this._content.substring(start, end); + } + return this._content; + }; + FullTextDocument.prototype.update = function (event, version) { + this._content = event.text; + this._version = version; + this._lineOffsets = undefined; + }; + FullTextDocument.prototype.getLineOffsets = function () { + if (this._lineOffsets === undefined) { + var lineOffsets = []; + var text = this._content; + var isLineStart = true; + for (var i = 0; i < text.length; i++) { + if (isLineStart) { + lineOffsets.push(i); + isLineStart = false; + } + var ch = text.charAt(i); + isLineStart = (ch === '\r' || ch === '\n'); + if (ch === '\r' && i + 1 < text.length && text.charAt(i + 1) === '\n') { + i++; + } + } + if (isLineStart && text.length > 0) { + lineOffsets.push(text.length); + } + this._lineOffsets = lineOffsets; + } + return this._lineOffsets; + }; + FullTextDocument.prototype.positionAt = function (offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + var lineOffsets = this.getLineOffsets(); + var low = 0, high = lineOffsets.length; + if (high === 0) { + return Position.create(0, offset); + } + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) { + high = mid; + } + else { + low = mid + 1; + } + } + // low is the least x for which the line offset is larger than the current offset + // or array.length if no line offset is larger than the current offset + var line = low - 1; + return Position.create(line, offset - lineOffsets[line]); + }; + FullTextDocument.prototype.offsetAt = function (position) { + var lineOffsets = this.getLineOffsets(); + if (position.line >= lineOffsets.length) { + return this._content.length; + } + else if (position.line < 0) { + return 0; + } + var lineOffset = lineOffsets[position.line]; + var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length; + return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset); + }; + Object.defineProperty(FullTextDocument.prototype, "lineCount", { + get: function () { + return this.getLineOffsets().length; + }, + enumerable: true, + configurable: true + }); + return FullTextDocument; +}()); +var Is; +(function (Is) { + var toString = Object.prototype.toString; + function defined(value) { + return typeof value !== 'undefined'; + } + Is.defined = defined; + function undefined(value) { + return typeof value === 'undefined'; + } + Is.undefined = undefined; + function boolean(value) { + return value === true || value === false; + } + Is.boolean = boolean; + function string(value) { + return toString.call(value) === '[object String]'; + } + Is.string = string; + function number(value) { + return toString.call(value) === '[object Number]'; + } + Is.number = number; + function func(value) { + return toString.call(value) === '[object Function]'; + } + Is.func = func; + function objectLiteral(value) { + // Strictly speaking class instances pass this check as well. Since the LSP + // doesn't use classes we ignore this for now. If we do we need to add something + // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null` + return value !== null && typeof value === 'object'; + } + Is.objectLiteral = objectLiteral; + function typedArray(value, check) { + return Array.isArray(value) && value.every(check); + } + Is.typedArray = typedArray; +})(Is || (Is = {})); + + +/***/ }), + +/***/ "child_process": +/*!********************************!*\ + !*** external "child_process" ***! + \********************************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("child_process");; + +/***/ }), + +/***/ "crypto": +/*!*************************!*\ + !*** external "crypto" ***! + \*************************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto");; + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs");; + +/***/ }), + +/***/ "net": +/*!**********************!*\ + !*** external "net" ***! + \**********************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("net");; + +/***/ }), + +/***/ "os": +/*!*********************!*\ + !*** external "os" ***! + \*********************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("os");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("path");; + +/***/ }), + +/***/ "vscode": +/*!*************************!*\ + !*** external "vscode" ***! + \*************************/ +/*! dynamic exports */ +/*! exports [maybe provided (runtime-defined)] [no usage info] */ +/*! runtime requirements: module */ +/***/ ((module) => { + +"use strict"; +module.exports = require("vscode");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __webpack_require__("./src/extension.ts"); +/******/ })() +; +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/vscode-extension/dist/extension.js.map b/vscode-extension/dist/extension.js.map new file mode 100644 index 000000000..562abfe5d --- /dev/null +++ b/vscode-extension/dist/extension.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[".././src/extension.ts","../../node_modules/vscode-jsonrpc/lib/cancellation.js","../../node_modules/vscode-jsonrpc/lib/events.js","../../node_modules/vscode-jsonrpc/lib/is.js","../../node_modules/vscode-jsonrpc/lib/linkedMap.js","../../node_modules/vscode-jsonrpc/lib/main.js","../../node_modules/vscode-jsonrpc/lib/messageReader.js","../../node_modules/vscode-jsonrpc/lib/messageWriter.js","../../node_modules/vscode-jsonrpc/lib/messages.js","../../node_modules/vscode-jsonrpc/lib/pipeSupport.js","../../node_modules/vscode-jsonrpc/lib/socketSupport.js","../../node_modules/vscode-languageclient/lib/callHierarchy.proposed.js","../../node_modules/vscode-languageclient/lib/client.js","../../node_modules/vscode-languageclient/lib/codeConverter.js","../../node_modules/vscode-languageclient/lib/colorProvider.js","../../node_modules/vscode-languageclient/lib/configuration.js","../../node_modules/vscode-languageclient/lib/declaration.js","../../node_modules/vscode-languageclient/lib/foldingRange.js","../../node_modules/vscode-languageclient/lib/implementation.js","../../node_modules/vscode-languageclient/lib/main.js","../../node_modules/vscode-languageclient/lib/progress.js","../../node_modules/vscode-languageclient/lib/progressPart.js","../../node_modules/vscode-languageclient/lib/protocolCodeLens.js","../../node_modules/vscode-languageclient/lib/protocolCompletionItem.js","../../node_modules/vscode-languageclient/lib/protocolConverter.js","../../node_modules/vscode-languageclient/lib/protocolDocumentLink.js","../../node_modules/vscode-languageclient/lib/selectionRange.js","../../node_modules/vscode-languageclient/lib/semanticTokens.proposed.js","../../node_modules/vscode-languageclient/lib/typeDefinition.js","../../node_modules/vscode-languageclient/lib/utils/async.js","../../node_modules/vscode-languageclient/lib/utils/is.js","../../node_modules/vscode-languageclient/lib/utils/processes.js","../../node_modules/vscode-languageclient/lib/utils/uuid.js","../../node_modules/vscode-languageclient/lib/workspaceFolders.js","../../node_modules/vscode-languageclient/node_modules/semver/semver.js","../../node_modules/vscode-languageserver-protocol/lib/main.js","../../node_modules/vscode-languageserver-protocol/lib/messages.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.callHierarchy.proposed.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.colorProvider.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.configuration.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.declaration.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.foldingRange.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.implementation.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.progress.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.selectionRange.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.sematicTokens.proposed.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.typeDefinition.js","../../node_modules/vscode-languageserver-protocol/lib/protocol.workspaceFolders.js","../../node_modules/vscode-languageserver-protocol/lib/utils/is.js","../../node_modules/vscode-languageserver-types/lib/esm/main.js","../external \"child_process\"","../external \"crypto\"","../external \"fs\"","../external \"net\"","../external \"os\"","../external \"path\"","../external \"vscode\"","../webpack/bootstrap","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/startup"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qDAA6B;AAC7B,6DAAqD;AAErD,sIAM+B;AAE/B,IAAI,MAAsB,CAAC;AAE3B,SAAS,mBAAmB,CAAC,OAAyB;IAElD,IAAI,MAAM,EAAE;QACR,OAAO;KACV;IAED,MAAM,MAAM,GAAG,kBAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAY,CAAC;IAEzE,IAAI,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAkB,CAAC;IAE/E,IAAI,oBAAoB,KAAK,IAAI,EAAE;QAC/B,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;KACpF;IAED,IAAI,aAA4B,CAAC;IAEjC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAE1E,IAAI,kBAAkB,KAAK,SAAS,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;YACb,OAAO;SACV;QACD,aAAa,GAAG,GAAG,EAAE;YACjB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAChC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;KACJ;SAAM;QACH,aAAa,GAAG,EAAE,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,qCAAa,CAAC,GAAG,EAAE;KACjF;IAAA,CAAC;IAEF,yCAAyC;IACzC,IAAI,aAAa,GAA0B;QACvC,+CAA+C;QAC/C,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACxD,WAAW,EAAE;YACT,sFAAsF;YACtF,UAAU,EAAE,kBAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC;SAC7D;KACJ,CAAC;IAEF,mDAAmD;IACnD,MAAM,GAAG,IAAI,sCAAc,CACvB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,aAAa,CAChB,CAAC;IAEF,qDAAqD;IACrD,MAAM,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAyB;IAC9C,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU;IACtB,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AALD,gCAKC;;;;;;;;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,8DAAU;AACnC,WAAW,mBAAO,CAAC,sDAAM;AACzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA,YAAY,YAAY,sBAAsB,EAAE;AAChD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;;;;;;;;;;;;;;;;;;AC7F/B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC,kBAAkB,KAAK;AAC9D;AACA;AACA,yBAAyB,YAAY,EAAE;AACvC,8BAA8B,oBAAoB;AAClD,CAAC,4BAA4B,aAAa,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gDAAgD;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;ACnI7B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,mBAAmB;;;;;;;;;;;;;;;;;;ACjCN;AACb;AACA;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B,aAAa,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kCAAkC;AAClC;AACA;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kCAAkC;AAClC;AACA;AACA,iBAAiB;AACjB,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;;;;;ACtRjB;AACA;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,WAAW,mBAAO,CAAC,sDAAM;AACzB,mBAAmB,mBAAO,CAAC,kEAAY;AACvC,mBAAmB;AACnB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,qBAAqB;AACrB,kBAAkB;AAClB,wBAAwB;AACxB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,yBAAyB;AACzB,wBAAwB,mBAAO,CAAC,4EAAiB;AACjD,qBAAqB;AACrB,2BAA2B;AAC3B,wBAAwB;AACxB,2BAA2B;AAC3B,wBAAwB,mBAAO,CAAC,4EAAiB;AACjD,qBAAqB;AACrB,2BAA2B;AAC3B,wBAAwB;AACxB,2BAA2B;AAC3B,iBAAiB,mBAAO,CAAC,8DAAU;AACnC,kBAAkB;AAClB,aAAa;AACb,eAAe;AACf,uBAAuB,mBAAO,CAAC,0EAAgB;AAC/C,+BAA+B;AAC/B,yBAAyB;AACzB,oBAAoB,mBAAO,CAAC,oEAAa;AACzC,SAAS,mBAAO,CAAC,wEAAe;AAChC,SAAS,mBAAO,CAAC,4EAAiB;AAClC;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACA,oBAAoB;AACpB,kBAAkB;AAClB,kBAAkB,EAAE;AACpB,iBAAiB,EAAE;AACnB,iBAAiB,EAAE;AACnB,gBAAgB;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B,aAAa,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B,aAAa,KAAK;AAC/C;AACA;AACA;AACA;AACA,CAAC,wCAAwC,mBAAmB,KAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC,mBAAmB,KAAK;AACjE;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;AAC5F;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD,wBAAwB,KAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD,0BAA0B,KAAK;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,oHAAoH,sBAAsB,wBAAwB,cAAc;AAChL;AACA;AACA,oHAAoH,sBAAsB;AAC1I;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G,sBAAsB,wBAAwB,cAAc;AACxK;AACA;AACA,4GAA4G,sBAAsB;AAClI;AACA;AACA;AACA;AACA,8GAA8G,sBAAsB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,oDAAoD;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,uBAAuB,yBAAyB,cAAc;AACxH;AACA;AACA,0DAA0D,uBAAuB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,eAAe,yBAAyB,cAAc;AAChH;AACA;AACA,0DAA0D,eAAe;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,iCAAiC;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA,2CAA2C,eAAe,MAAM,WAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wCAAwC;AAC9E;AACA;AACA;AACA;AACA;AACA,gDAAgD,eAAe;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4CAA4C;AACtF;AACA;AACA;AACA,0CAA0C,wCAAwC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO,MAAM,WAAW,8BAA8B,uBAAuB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA,4CAA4C,eAAe,MAAM,WAAW;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wCAAwC;AAC9E;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4CAA4C;AACtF;AACA;AACA;AACA,0CAA0C,wCAAwC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,sBAAsB,IAAI,mBAAmB;AAC7G,iDAAiD,uBAAuB,MAAM,WAAW,QAAQ,wCAAwC,KAAK,MAAM;AACpJ;AACA;AACA,gDAAgD,WAAW;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yCAAyC;AACxE;AACA;AACA;AACA,+CAA+C,oBAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,yDAAyD;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA,8DAA8D,MAAM;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oEAAoE,eAAe;AACnF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,0EAA0E,KAAK;AAC/E,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,oDAAoD;AACpD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,gCAAgC;AACxG;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;;;;;;;;;;;;;;;;;;;;ACh8B/B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,8DAAU;AACnC,WAAW,mBAAO,CAAC,sDAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C,qBAAqB,KAAK;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,qDAAqD;AACpH;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,4CAA4C;AACrF;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,2BAA2B;;;;;;;;;;;;;;;;;;;;;AChO3B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,8DAAU;AACnC,WAAW,mBAAO,CAAC,sDAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C,qBAAqB,KAAK;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,qDAAqD;AACpH;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjM3B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,WAAW,mBAAO,CAAC,sDAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC,kBAAkB,KAAK;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;;;;;;;;;;;;;;;;;;ACzOzB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe,mBAAO,CAAC,kBAAM;AAC7B,aAAa,mBAAO,CAAC,cAAI;AACzB,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,cAAc,mBAAO,CAAC,gBAAK;AAC3B,wBAAwB,mBAAO,CAAC,4EAAiB;AACjD,wBAAwB,mBAAO,CAAC,4EAAiB;AACjD;AACA;AACA;AACA,8CAA8C,aAAa;AAC3D;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC,kBAAkB;AACtD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;;;;;;;;;;;;;;;;;ACrDjC;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,gBAAK;AAC3B,wBAAwB,mBAAO,CAAC,4EAAiB;AACjD,wBAAwB,mBAAO,CAAC,4EAAiB;AACjD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oCAAoC,kBAAkB;AACtD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;;;;;;;;;;;;;;;;ACvCnC;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;;;;;;;;;;;;;;;AChK5B;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,YAAY,mBAAO,CAAC,mFAAiB;AACrC,YAAY,mBAAO,CAAC,2FAAqB;AACzC,WAAW,mBAAO,CAAC,yEAAY;AAC/B,gBAAgB,mBAAO,CAAC,+EAAe;AACvC,aAAa,mBAAO,CAAC,6EAAc;AACnC,uBAAuB,mBAAO,CAAC,iFAAgB;AAC/C,SAAS,mBAAO,CAAC,kGAAgC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yCAAyC,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC,mBAAmB,KAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC,mBAAmB,KAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,UAAU;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B,aAAa,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4CAA4C,qCAAqC,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4CAA4C,qCAAqC,EAAE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,GAAG,qCAAqC,GAAG,2CAA2C;AACvI,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,GAAG,qCAAqC,GAAG,0DAA0D;AACtJ,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,eAAe,uBAAuB,qBAAqB;AACtI;AACA;AACA;AACA;AACA;AACA,0CAA0C,+DAA+D;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe,6BAA6B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,mBAAmB,mBAAmB,eAAe,mBAAmB;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,mBAAmB,mBAAmB,eAAe,mBAAmB;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,4BAA4B;AACtH;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,eAAe,uBAAuB,qBAAqB;AACrI;AACA;AACA,0CAA0C,yDAAyD;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,0BAA0B;AACxG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6GAA6G,QAAQ;AACrH;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yHAAyH,iBAAiB;AAC1I;AACA;AACA,qHAAqH,sDAAsD;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qCAAqC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qCAAqC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qCAAqC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,qCAAqC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,MAAM;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,MAAM;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,SAAS;AACT;AACA;AACA;AACA;AACA,iCAAiC,sBAAsB,YAAY,mBAAmB,GAAG,+DAA+D;AACxJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kCAAkC,IAAI,QAAQ;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kCAAkC,IAAI,QAAQ;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kCAAkC,IAAI,QAAQ;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uDAAuD,kCAAkC,IAAI,QAAQ;AACrG;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,kCAAkC;AACzF;AACA;AACA,uDAAuD,kCAAkC;AACzF;AACA;AACA,kDAAkD,qBAAqB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sEAAsE,WAAW;AACjF,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAwB,oDAAoD;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yGAAyG;AACzG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,8BAA8B;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,8BAA8B;AAC5F;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,oBAAoB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,sBAAsB;AAC5F;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;AACrD;AACA,kHAAkH,SAAS,kBAAkB,EAAE;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA,0BAA0B;;;;;;;;;;;;;;;;;AC/9E1B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,sBAAQ;AAC7B,cAAc,mBAAO,CAAC,kGAAgC;AACtD,WAAW,mBAAO,CAAC,yEAAY;AAC/B,iCAAiC,mBAAO,CAAC,qGAA0B;AACnE,2BAA2B,mBAAO,CAAC,yFAAoB;AACvD,+BAA+B,mBAAO,CAAC,iGAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,kCAAkC,sBAAsB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oCAAoC,2DAA2D;AAC/F,kCAAkC;AAClC,yBAAyB;AACzB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA,wEAAwE,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;;;;;;;;;;;;;;;;ACniBvB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,4BAA4B;;;;;;;;;;;;;;;;;AC3F5B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;;;;;;;;;;;;;;;;AC9D5B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;;;;;;;;;;;;;;;;AClD1B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,2BAA2B;;;;;;;;;;;;;;;;;AC3E3B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;;;;;;;;;;;;;;;AClD7B;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,WAAW,mBAAO,CAAC,oCAAe;AAClC,WAAW,mBAAO,CAAC,cAAI;AACvB,eAAe,mBAAO,CAAC,mFAAQ;AAC/B,iBAAiB,mBAAO,CAAC,qEAAU;AACnC,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,wBAAwB,mBAAO,CAAC,mFAAiB;AACjD,wBAAwB,mBAAO,CAAC,mFAAiB;AACjD,yBAAyB,mBAAO,CAAC,qFAAkB;AACnD,yBAAyB,mBAAO,CAAC,qFAAkB;AACnD,2BAA2B,mBAAO,CAAC,yFAAoB;AACvD,uBAAuB,mBAAO,CAAC,iFAAgB;AAC/C,sBAAsB,mBAAO,CAAC,+EAAe;AAC7C,yBAAyB,mBAAO,CAAC,qFAAkB;AACnD,mBAAmB,mBAAO,CAAC,yEAAY;AACvC,iCAAiC,mBAAO,CAAC,qGAA0B;AACnE,kCAAkC,mBAAO,CAAC,uGAA2B;AACrE,WAAW,mBAAO,CAAC,yEAAY;AAC/B,oBAAoB,mBAAO,CAAC,uFAAmB;AAC/C,SAAS,mBAAO,CAAC,qEAAU;AAC3B,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C,qBAAqB,KAAK;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,iBAAiB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,wBAAwB,wBAAwB,iBAAiB;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA,8CAA8C,eAAe;AAC7D;AACA,mDAAmD,uBAAuB;AAC1E;AACA;AACA;AACA,oFAAoF,aAAa;AACjG;AACA;AACA;AACA;AACA;AACA,oDAAoD,6JAA6J;AACjN;AACA;AACA,oDAAoD,gLAAgL;AACpO;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,aAAa;AACrG;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,wFAAwF,aAAa;AACrG;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,kDAAkD,eAAe;AACjE;AACA,uDAAuD,uBAAuB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yKAAyK;AAClN;AACA;AACA,yCAAyC,0JAA0J;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2CAA2C;AACxF,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,2CAA2C;AACxF,iCAAiC;AACjC,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,4EAA4E,gBAAgB;AAC5F;AACA;AACA;AACA;AACA,wCAAwC,gLAAgL;AACxN;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD,wBAAwB,KAAK;;;;;;;;;;;;;;;;;ACxdhF;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,uBAAuB,mBAAO,CAAC,iFAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;;;;;;;;;;;;;;;;AC7BvB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,WAAW,mBAAO,CAAC,yEAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sCAAsC,iEAAiE;AACvG;AACA;AACA;AACA;AACA,yHAAyH,qBAAqB;AAC9I,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA,mCAAmC,4CAA4C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;;;;;;;;;;;;;;;;AC9EpB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,sBAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;;;;;;ACZf;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,sBAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;;;;;;ACZf;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,sBAAQ;AAC7B,WAAW,mBAAO,CAAC,kGAAgC;AACnD,WAAW,mBAAO,CAAC,yEAAY;AAC/B,iCAAiC,mBAAO,CAAC,qGAA0B;AACnE,2BAA2B,mBAAO,CAAC,yFAAoB;AACvD,+BAA+B,mBAAO,CAAC,iGAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,WAAW;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,WAAW;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,qCAAqC;AACnH;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;;;;;;;;;;;;;;;;ACjtBvB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,sBAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;;;;;;ACZf;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;;;;;;;;;;;;;;;;ACrD7B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe,mBAAO,CAAC,sBAAQ;AAC/B,iBAAiB,mBAAO,CAAC,qEAAU;AACnC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,mDAAmD;AAC9I;AACA;AACA,6BAA6B;;;;;;;;;;;;;;;;;ACxK7B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF,iBAAiB,mBAAO,CAAC,qEAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;;;;;;;;;;;;;;;;ACnD7B;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;AC/Df;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;;;;;;ACvDjB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,WAAW,mBAAO,CAAC,oCAAe;AAClC,eAAe,mBAAO,CAAC,kBAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;;;;;;;;;;AC7CjB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,UAAU;AACV,gCAAgC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG;AACnF;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB;;;;;;;;;;;;;;;;;;AC/FpB;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,6EAAc;AACnC,iBAAiB,mBAAO,CAAC,sBAAQ;AACjC,yCAAyC,mBAAO,CAAC,kGAAgC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,+BAA+B;;;;;;;;;;;;;;;;;ACzI/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS,UAAU;AACnB,UAAU,WAAW;AACrB,QAAQ,cAAc;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,oCAAoC;AACxD,0BAA0B,oCAAoC;AAC9D,0BAA0B,oCAAoC;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA,GAAG;AACH;;AAEA,aAAa;AACb;AACA;AACA;AACA,GAAG;AACH;;AAEA,UAAU;AACV;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;;AAEA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC3jDA;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,kBAAkB;AAClB,qBAAqB;AACrB,yBAAyB;AACzB,+BAA+B;AAC/B,kBAAkB;AAClB,aAAa;AACb,eAAe;AACf,aAAa;AACb,mBAAmB;AACnB,4BAA4B;AAC5B,4BAA4B;AAC5B,mBAAmB;AACnB,oBAAoB;AACpB,wBAAwB;AACxB,yBAAyB;AACzB,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B,2BAA2B;AAC3B,2BAA2B;AAC3B,wBAAwB;AACxB,wBAAwB;AACxB,iCAAiC;AACjC,iCAAiC;AACjC,8BAA8B;AAC9B,mCAAmC;AACnC,mCAAmC;AACnC,oBAAoB;AACpB,SAAS,mBAAO,CAAC,gGAA6B;AAC9C,SAAS,mBAAO,CAAC,kFAAY;AAC7B,sBAAsB,mBAAO,CAAC,gIAAmC;AACjE,WAAW,mBAAO,CAAC,gIAAmC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,kHAAkH;AACvH;AACA;AACA;AACA;AACA,KAAK,oIAAoI;AACzI;AACA;AACA;AACA;AACA,KAAK,oIAAoI;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,gGAAgG;AACrG;AACA;AACA;AACA;AACA,KAAK,+GAA+G;AACpH;AACA;AACA;AACA;AACA,KAAK,+GAA+G;AACpH,CAAC,kCAAkC,gBAAgB,KAAK;AACxD;AACA;AACA;AACA,gCAAgC;;;;;;;;;;;;;;;;;;;;ACjFhC;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC;;;;;;;;;;;;;;;;;;;AC9BjC;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wEAAwE,mCAAmC,KAAK;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oFAAoF,yCAAyC,KAAK;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oFAAoF,yCAAyC,KAAK;;;;;;;;;;;;;;;;;;ACrCnI;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE,gCAAgC,KAAK;;;;;;;;;;;;;;;;;AC9BxG;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;;;;;;;;;;;;;;;;;ACnB5F;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD,0BAA0B,KAAK;;;;;;;;;;;;;;;;;;ACvBzE;AACb;AACA;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD,wBAAwB,KAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD,2BAA2B,KAAK;;;;;;;;;;;;;;;;;ACtCzF;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtB/F;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,WAAW,mBAAO,CAAC,kFAAY;AAC/B,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC,kCAAkC,mBAAO,CAAC,gHAA2B;AACrE,6BAA6B;AAC7B,kCAAkC,mBAAO,CAAC,gHAA2B;AACrE,6BAA6B;AAC7B,oCAAoC,mBAAO,CAAC,oHAA6B;AACzE,+BAA+B;AAC/B,6CAA6C;AAC7C,iCAAiC,mBAAO,CAAC,8GAA0B;AACnE,4BAA4B;AAC5B,iCAAiC,mBAAO,CAAC,8GAA0B;AACnE,4BAA4B;AAC5B,gCAAgC;AAChC,gCAAgC,mBAAO,CAAC,4GAAyB;AACjE,2BAA2B;AAC3B,+BAA+B,mBAAO,CAAC,0GAAwB;AAC/D,0BAA0B;AAC1B,kCAAkC,mBAAO,CAAC,gHAA2B;AACrE,6BAA6B;AAC7B,4BAA4B,mBAAO,CAAC,oGAAqB;AACzD,wBAAwB;AACxB,qCAAqC;AACrC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C,sBAAsB,KAAK;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD,wBAAwB,KAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD,2BAA2B,KAAK;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD,2BAA2B,KAAK;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE,iCAAiC,KAAK;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gFAAgF,uCAAuC,KAAK;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE,+BAA+B,KAAK;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD,uBAAuB,KAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE,+BAA+B,KAAK;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD,uBAAuB,KAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD,wBAAwB,KAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sFAAsF,0CAA0C,KAAK;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC,mBAAmB,KAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE,+BAA+B,KAAK;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD,0BAA0B,KAAK;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D,8BAA8B,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE,kCAAkC,KAAK;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gFAAgF,uCAAuC,KAAK;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oFAAoF,yCAAyC,KAAK;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kFAAkF,wCAAwC,KAAK;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gFAAgF,uCAAuC,KAAK;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D,8BAA8B,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kFAAkF,wCAAwC,KAAK;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0FAA0F,4CAA4C,KAAK;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oFAAoF,yCAAyC,KAAK;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C,sBAAsB,KAAK;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC,iBAAiB,KAAK;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8EAA8E,sCAAsC,KAAK;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE,gCAAgC,KAAK;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C,oBAAoB,KAAK;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE,gCAAgC,KAAK;AACxG;AACA;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE,gCAAgC,KAAK;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD,yBAAyB,KAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D,8BAA8B,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD,uBAAuB,KAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D,8BAA8B,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD,2BAA2B,KAAK;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE,kCAAkC,KAAK;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE,iCAAiC,KAAK;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8EAA8E,sCAAsC,KAAK;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gFAAgF,uCAAuC,KAAK;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C,qBAAqB,KAAK;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0DAA0D,4BAA4B,KAAK;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE,iCAAiC,KAAK;;;;;;;;;;;;;;;;;;;AC5qB3G;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA,CAAC,kDAAkD,wBAAwB,KAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4EAA4E,qCAAqC,KAAK;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sFAAsF,0CAA0C,KAAK;;;;;;;;;;;;;;;;;AC3BzH;AACb;AACA;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;;;;;;;;;;;;;;;;;;;;;;ACpB/F;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD,0BAA0B,KAAK;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D,8BAA8B,KAAK;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C,sBAAsB,KAAK;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE,kCAAkC,KAAK;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE,kCAAkC,KAAK;;;;;;;;;;;;;;;;;AC5F9G;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,yBAAyB,mBAAO,CAAC,kEAAgB;AACjD,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D,6BAA6B,KAAK;;;;;;;;;;;;;;;;;;ACtB/F;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,mBAAmB,mBAAO,CAAC,kFAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE,+BAA+B,KAAK;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4FAA4F,6CAA6C,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;ACrB/I;AACA;AACA;AACA;AACa;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CrB;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AACrE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AACtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAA6C,IAAI;AACjF;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AACxB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB;;;;;;;;;;;;;;;ACt/CjB,2C;;;;;;;;;;;;;;ACAA,oC;;;;;;;;;;;;;;ACAA,gC;;;;;;;;;;;;;;ACAA,iC;;;;;;;;;;;;;;ACAA,gC;;;;;;;;;;;;;;ACAA,kC;;;;;;;;;;;;;;ACAA,oC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCrBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,sF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;UCNA;UACA;UACA;UACA","file":"extension.js","sourcesContent":["import * as net from \"net\"\nimport * as path from 'path';\nimport { workspace, ExtensionContext } from 'vscode';\n\nimport {\n LanguageClient,\n LanguageClientOptions,\n ServerOptions,\n StreamInfo,\n TransportKind\n} from 'vscode-languageclient';\n\nlet client: LanguageClient;\n\nfunction spawnLanguageClient(context: ExtensionContext) {\n\n if (client) {\n return;\n }\n\n const config = workspace.getConfiguration('bolt');\n\n const watchLanguageServer = config.get('watchLanguageServer') as boolean;\n\n let pathToLanguageServer = config.get('pathToLanguageServer') as string | null;\n\n if (pathToLanguageServer === null) {\n pathToLanguageServer = context.asAbsolutePath(path.join('bin', 'langserver.js'));\n }\n\n let serverOptions: ServerOptions;\n\n const languageServerPort = process.env['VSCODE_BOLT_LANGUAGE_SERVER_PORT']\n\n if (languageServerPort !== undefined) {\n const port = Number(languageServerPort)\n if (isNaN(port)) {\n return;\n }\n serverOptions = () => {\n const socket = net.connect(port)\n return Promise.resolve({ reader: socket, writer: socket });\n }\n } else {\n serverOptions = { module: pathToLanguageServer, transport: TransportKind.ipc }\n };\n\n // Options to control the language client\n let clientOptions: LanguageClientOptions = {\n // Register the server for plain text documents\n documentSelector: [{ scheme: 'file', language: 'bolt' }],\n synchronize: {\n // Notify the server about file changes to '.clientrc files contained in the workspace\n fileEvents: workspace.createFileSystemWatcher('**/*.bolt')\n }\n };\n\n // Create the language client and start the client.\n client = new LanguageClient(\n 'bolt-client',\n 'Bolt Language Server',\n serverOptions,\n clientOptions\n );\n\n // Start the client. This will also launch the server\n client.start();\n}\n\nexport function activate(context: ExtensionContext) {\n spawnLanguageClient(context);\n}\n\nexport function deactivate(): Thenable | undefined {\n if (!client) {\n return undefined;\n }\n return client.stop();\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"./events\");\r\nconst Is = require(\"./is\");\r\nvar CancellationToken;\r\n(function (CancellationToken) {\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: events_1.Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: events_1.Event.None\r\n });\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && (candidate === CancellationToken.None\r\n || candidate === CancellationToken.Cancelled\r\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\r\n }\r\n CancellationToken.is = is;\r\n})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {}));\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n let handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new events_1.Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = undefined;\r\n }\r\n }\r\n}\r\nclass CancellationTokenSource {\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else {\r\n this._token.cancel();\r\n }\r\n }\r\n dispose() {\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\nexports.CancellationTokenSource = CancellationTokenSource;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Disposable;\r\n(function (Disposable) {\r\n function create(func) {\r\n return {\r\n dispose: func\r\n };\r\n }\r\n Disposable.create = create;\r\n})(Disposable = exports.Disposable || (exports.Disposable = {}));\r\nvar Event;\r\n(function (Event) {\r\n const _disposable = { dispose() { } };\r\n Event.None = function () { return _disposable; };\r\n})(Event = exports.Event || (exports.Event = {}));\r\nclass CallbackList {\r\n add(callback, context = null, bucket) {\r\n if (!this._callbacks) {\r\n this._callbacks = [];\r\n this._contexts = [];\r\n }\r\n this._callbacks.push(callback);\r\n this._contexts.push(context);\r\n if (Array.isArray(bucket)) {\r\n bucket.push({ dispose: () => this.remove(callback, context) });\r\n }\r\n }\r\n remove(callback, context = null) {\r\n if (!this._callbacks) {\r\n return;\r\n }\r\n var foundCallbackWithDifferentContext = false;\r\n for (var i = 0, len = this._callbacks.length; i < len; i++) {\r\n if (this._callbacks[i] === callback) {\r\n if (this._contexts[i] === context) {\r\n // callback & context match => remove it\r\n this._callbacks.splice(i, 1);\r\n this._contexts.splice(i, 1);\r\n return;\r\n }\r\n else {\r\n foundCallbackWithDifferentContext = true;\r\n }\r\n }\r\n }\r\n if (foundCallbackWithDifferentContext) {\r\n throw new Error('When adding a listener with a context, you should remove it with the same context');\r\n }\r\n }\r\n invoke(...args) {\r\n if (!this._callbacks) {\r\n return [];\r\n }\r\n var ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; i++) {\r\n try {\r\n ret.push(callbacks[i].apply(contexts[i], args));\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n }\r\n return ret;\r\n }\r\n isEmpty() {\r\n return !this._callbacks || this._callbacks.length === 0;\r\n }\r\n dispose() {\r\n this._callbacks = undefined;\r\n this._contexts = undefined;\r\n }\r\n}\r\nclass Emitter {\r\n constructor(_options) {\r\n this._options = _options;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n if (!this._callbacks) {\r\n this._callbacks = new CallbackList();\r\n }\r\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n this._callbacks.add(listener, thisArgs);\r\n let result;\r\n result = {\r\n dispose: () => {\r\n this._callbacks.remove(listener, thisArgs);\r\n result.dispose = Emitter._noop;\r\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n };\r\n if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n if (this._callbacks) {\r\n this._callbacks.invoke.call(this._callbacks, event);\r\n }\r\n }\r\n dispose() {\r\n if (this._callbacks) {\r\n this._callbacks.dispose();\r\n this._callbacks = undefined;\r\n }\r\n }\r\n}\r\nexports.Emitter = Emitter;\r\nEmitter._noop = function () { };\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction boolean(value) {\r\n return value === true || value === false;\r\n}\r\nexports.boolean = boolean;\r\nfunction string(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\nexports.string = string;\r\nfunction number(value) {\r\n return typeof value === 'number' || value instanceof Number;\r\n}\r\nexports.number = number;\r\nfunction error(value) {\r\n return value instanceof Error;\r\n}\r\nexports.error = error;\r\nfunction func(value) {\r\n return typeof value === 'function';\r\n}\r\nexports.func = func;\r\nfunction array(value) {\r\n return Array.isArray(value);\r\n}\r\nexports.array = array;\r\nfunction stringArray(value) {\r\n return array(value) && value.every(elem => string(elem));\r\n}\r\nexports.stringArray = stringArray;\r\n","\"use strict\";\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Touch;\r\n(function (Touch) {\r\n Touch.None = 0;\r\n Touch.First = 1;\r\n Touch.Last = 2;\r\n})(Touch = exports.Touch || (exports.Touch = {}));\r\nclass LinkedMap {\r\n constructor() {\r\n this._map = new Map();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n }\r\n clear() {\r\n this._map.clear();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n }\r\n isEmpty() {\r\n return !this._head && !this._tail;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n has(key) {\r\n return this._map.has(key);\r\n }\r\n get(key) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n return item.value;\r\n }\r\n set(key, value, touch = Touch.None) {\r\n let item = this._map.get(key);\r\n if (item) {\r\n item.value = value;\r\n if (touch !== Touch.None) {\r\n this.touch(item, touch);\r\n }\r\n }\r\n else {\r\n item = { key, value, next: undefined, previous: undefined };\r\n switch (touch) {\r\n case Touch.None:\r\n this.addItemLast(item);\r\n break;\r\n case Touch.First:\r\n this.addItemFirst(item);\r\n break;\r\n case Touch.Last:\r\n this.addItemLast(item);\r\n break;\r\n default:\r\n this.addItemLast(item);\r\n break;\r\n }\r\n this._map.set(key, item);\r\n this._size++;\r\n }\r\n }\r\n delete(key) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return false;\r\n }\r\n this._map.delete(key);\r\n this.removeItem(item);\r\n this._size--;\r\n return true;\r\n }\r\n shift() {\r\n if (!this._head && !this._tail) {\r\n return undefined;\r\n }\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n const item = this._head;\r\n this._map.delete(item.key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n forEach(callbackfn, thisArg) {\r\n let current = this._head;\r\n while (current) {\r\n if (thisArg) {\r\n callbackfn.bind(thisArg)(current.value, current.key, this);\r\n }\r\n else {\r\n callbackfn(current.value, current.key, this);\r\n }\r\n current = current.next;\r\n }\r\n }\r\n forEachReverse(callbackfn, thisArg) {\r\n let current = this._tail;\r\n while (current) {\r\n if (thisArg) {\r\n callbackfn.bind(thisArg)(current.value, current.key, this);\r\n }\r\n else {\r\n callbackfn(current.value, current.key, this);\r\n }\r\n current = current.previous;\r\n }\r\n }\r\n values() {\r\n let result = [];\r\n let current = this._head;\r\n while (current) {\r\n result.push(current.value);\r\n current = current.next;\r\n }\r\n return result;\r\n }\r\n keys() {\r\n let result = [];\r\n let current = this._head;\r\n while (current) {\r\n result.push(current.key);\r\n current = current.next;\r\n }\r\n return result;\r\n }\r\n /* JSON RPC run on es5 which has no Symbol.iterator\r\n public keys(): IterableIterator {\r\n let current = this._head;\r\n let iterator: IterableIterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next():IteratorResult {\r\n if (current) {\r\n let result = { value: current.key, done: false };\r\n current = current.next;\r\n return result;\r\n } else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n\r\n public values(): IterableIterator {\r\n let current = this._head;\r\n let iterator: IterableIterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next():IteratorResult {\r\n if (current) {\r\n let result = { value: current.value, done: false };\r\n current = current.next;\r\n return result;\r\n } else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n */\r\n addItemFirst(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._tail = item;\r\n }\r\n else if (!this._head) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.next = this._head;\r\n this._head.previous = item;\r\n }\r\n this._head = item;\r\n }\r\n addItemLast(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._head = item;\r\n }\r\n else if (!this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n }\r\n this._tail = item;\r\n }\r\n removeItem(item) {\r\n if (item === this._head && item === this._tail) {\r\n this._head = undefined;\r\n this._tail = undefined;\r\n }\r\n else if (item === this._head) {\r\n this._head = item.next;\r\n }\r\n else if (item === this._tail) {\r\n this._tail = item.previous;\r\n }\r\n else {\r\n const next = item.next;\r\n const previous = item.previous;\r\n if (!next || !previous) {\r\n throw new Error('Invalid list');\r\n }\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n }\r\n touch(item, touch) {\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n if ((touch !== Touch.First && touch !== Touch.Last)) {\r\n return;\r\n }\r\n if (touch === Touch.First) {\r\n if (item === this._head) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item\r\n if (item === this._tail) {\r\n // previous must be defined since item was not head but is tail\r\n // So there are more than on item in the map\r\n previous.next = undefined;\r\n this._tail = previous;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n // Insert the node at head\r\n item.previous = undefined;\r\n item.next = this._head;\r\n this._head.previous = item;\r\n this._head = item;\r\n }\r\n else if (touch === Touch.Last) {\r\n if (item === this._tail) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item.\r\n if (item === this._head) {\r\n // next must be defined since item was not tail but is head\r\n // So there are more than on item in the map\r\n next.previous = undefined;\r\n this._head = next;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n this._tail = item;\r\n }\r\n }\r\n}\r\nexports.LinkedMap = LinkedMap;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n/// \r\n'use strict';\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst Is = require(\"./is\");\r\nconst messages_1 = require(\"./messages\");\r\nexports.RequestType = messages_1.RequestType;\r\nexports.RequestType0 = messages_1.RequestType0;\r\nexports.RequestType1 = messages_1.RequestType1;\r\nexports.RequestType2 = messages_1.RequestType2;\r\nexports.RequestType3 = messages_1.RequestType3;\r\nexports.RequestType4 = messages_1.RequestType4;\r\nexports.RequestType5 = messages_1.RequestType5;\r\nexports.RequestType6 = messages_1.RequestType6;\r\nexports.RequestType7 = messages_1.RequestType7;\r\nexports.RequestType8 = messages_1.RequestType8;\r\nexports.RequestType9 = messages_1.RequestType9;\r\nexports.ResponseError = messages_1.ResponseError;\r\nexports.ErrorCodes = messages_1.ErrorCodes;\r\nexports.NotificationType = messages_1.NotificationType;\r\nexports.NotificationType0 = messages_1.NotificationType0;\r\nexports.NotificationType1 = messages_1.NotificationType1;\r\nexports.NotificationType2 = messages_1.NotificationType2;\r\nexports.NotificationType3 = messages_1.NotificationType3;\r\nexports.NotificationType4 = messages_1.NotificationType4;\r\nexports.NotificationType5 = messages_1.NotificationType5;\r\nexports.NotificationType6 = messages_1.NotificationType6;\r\nexports.NotificationType7 = messages_1.NotificationType7;\r\nexports.NotificationType8 = messages_1.NotificationType8;\r\nexports.NotificationType9 = messages_1.NotificationType9;\r\nconst messageReader_1 = require(\"./messageReader\");\r\nexports.MessageReader = messageReader_1.MessageReader;\r\nexports.StreamMessageReader = messageReader_1.StreamMessageReader;\r\nexports.IPCMessageReader = messageReader_1.IPCMessageReader;\r\nexports.SocketMessageReader = messageReader_1.SocketMessageReader;\r\nconst messageWriter_1 = require(\"./messageWriter\");\r\nexports.MessageWriter = messageWriter_1.MessageWriter;\r\nexports.StreamMessageWriter = messageWriter_1.StreamMessageWriter;\r\nexports.IPCMessageWriter = messageWriter_1.IPCMessageWriter;\r\nexports.SocketMessageWriter = messageWriter_1.SocketMessageWriter;\r\nconst events_1 = require(\"./events\");\r\nexports.Disposable = events_1.Disposable;\r\nexports.Event = events_1.Event;\r\nexports.Emitter = events_1.Emitter;\r\nconst cancellation_1 = require(\"./cancellation\");\r\nexports.CancellationTokenSource = cancellation_1.CancellationTokenSource;\r\nexports.CancellationToken = cancellation_1.CancellationToken;\r\nconst linkedMap_1 = require(\"./linkedMap\");\r\n__export(require(\"./pipeSupport\"));\r\n__export(require(\"./socketSupport\"));\r\nvar CancelNotification;\r\n(function (CancelNotification) {\r\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\r\n})(CancelNotification || (CancelNotification = {}));\r\nvar ProgressNotification;\r\n(function (ProgressNotification) {\r\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\r\n})(ProgressNotification || (ProgressNotification = {}));\r\nclass ProgressType {\r\n constructor() {\r\n }\r\n}\r\nexports.ProgressType = ProgressType;\r\nexports.NullLogger = Object.freeze({\r\n error: () => { },\r\n warn: () => { },\r\n info: () => { },\r\n log: () => { }\r\n});\r\nvar Trace;\r\n(function (Trace) {\r\n Trace[Trace[\"Off\"] = 0] = \"Off\";\r\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\r\n Trace[Trace[\"Verbose\"] = 2] = \"Verbose\";\r\n})(Trace = exports.Trace || (exports.Trace = {}));\r\n(function (Trace) {\r\n function fromString(value) {\r\n if (!Is.string(value)) {\r\n return Trace.Off;\r\n }\r\n value = value.toLowerCase();\r\n switch (value) {\r\n case 'off':\r\n return Trace.Off;\r\n case 'messages':\r\n return Trace.Messages;\r\n case 'verbose':\r\n return Trace.Verbose;\r\n default:\r\n return Trace.Off;\r\n }\r\n }\r\n Trace.fromString = fromString;\r\n function toString(value) {\r\n switch (value) {\r\n case Trace.Off:\r\n return 'off';\r\n case Trace.Messages:\r\n return 'messages';\r\n case Trace.Verbose:\r\n return 'verbose';\r\n default:\r\n return 'off';\r\n }\r\n }\r\n Trace.toString = toString;\r\n})(Trace = exports.Trace || (exports.Trace = {}));\r\nvar TraceFormat;\r\n(function (TraceFormat) {\r\n TraceFormat[\"Text\"] = \"text\";\r\n TraceFormat[\"JSON\"] = \"json\";\r\n})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\r\n(function (TraceFormat) {\r\n function fromString(value) {\r\n value = value.toLowerCase();\r\n if (value === 'json') {\r\n return TraceFormat.JSON;\r\n }\r\n else {\r\n return TraceFormat.Text;\r\n }\r\n }\r\n TraceFormat.fromString = fromString;\r\n})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\r\nvar SetTraceNotification;\r\n(function (SetTraceNotification) {\r\n SetTraceNotification.type = new messages_1.NotificationType('$/setTraceNotification');\r\n})(SetTraceNotification = exports.SetTraceNotification || (exports.SetTraceNotification = {}));\r\nvar LogTraceNotification;\r\n(function (LogTraceNotification) {\r\n LogTraceNotification.type = new messages_1.NotificationType('$/logTraceNotification');\r\n})(LogTraceNotification = exports.LogTraceNotification || (exports.LogTraceNotification = {}));\r\nvar ConnectionErrors;\r\n(function (ConnectionErrors) {\r\n /**\r\n * The connection is closed.\r\n */\r\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\r\n /**\r\n * The connection got disposed.\r\n */\r\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\r\n /**\r\n * The connection is already in listening mode.\r\n */\r\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\r\n})(ConnectionErrors = exports.ConnectionErrors || (exports.ConnectionErrors = {}));\r\nclass ConnectionError extends Error {\r\n constructor(code, message) {\r\n super(message);\r\n this.code = code;\r\n Object.setPrototypeOf(this, ConnectionError.prototype);\r\n }\r\n}\r\nexports.ConnectionError = ConnectionError;\r\nvar ConnectionStrategy;\r\n(function (ConnectionStrategy) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && Is.func(candidate.cancelUndispatched);\r\n }\r\n ConnectionStrategy.is = is;\r\n})(ConnectionStrategy = exports.ConnectionStrategy || (exports.ConnectionStrategy = {}));\r\nvar ConnectionState;\r\n(function (ConnectionState) {\r\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\r\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\r\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\r\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\r\n})(ConnectionState || (ConnectionState = {}));\r\nfunction _createMessageConnection(messageReader, messageWriter, logger, strategy) {\r\n let sequenceNumber = 0;\r\n let notificationSquenceNumber = 0;\r\n let unknownResponseSquenceNumber = 0;\r\n const version = '2.0';\r\n let starRequestHandler = undefined;\r\n let requestHandlers = Object.create(null);\r\n let starNotificationHandler = undefined;\r\n let notificationHandlers = Object.create(null);\r\n let progressHandlers = new Map();\r\n let timer;\r\n let messageQueue = new linkedMap_1.LinkedMap();\r\n let responsePromises = Object.create(null);\r\n let requestTokens = Object.create(null);\r\n let trace = Trace.Off;\r\n let traceFormat = TraceFormat.Text;\r\n let tracer;\r\n let state = ConnectionState.New;\r\n let errorEmitter = new events_1.Emitter();\r\n let closeEmitter = new events_1.Emitter();\r\n let unhandledNotificationEmitter = new events_1.Emitter();\r\n let unhandledProgressEmitter = new events_1.Emitter();\r\n let disposeEmitter = new events_1.Emitter();\r\n function createRequestQueueKey(id) {\r\n return 'req-' + id.toString();\r\n }\r\n function createResponseQueueKey(id) {\r\n if (id === null) {\r\n return 'res-unknown-' + (++unknownResponseSquenceNumber).toString();\r\n }\r\n else {\r\n return 'res-' + id.toString();\r\n }\r\n }\r\n function createNotificationQueueKey() {\r\n return 'not-' + (++notificationSquenceNumber).toString();\r\n }\r\n function addMessageToQueue(queue, message) {\r\n if (messages_1.isRequestMessage(message)) {\r\n queue.set(createRequestQueueKey(message.id), message);\r\n }\r\n else if (messages_1.isResponseMessage(message)) {\r\n queue.set(createResponseQueueKey(message.id), message);\r\n }\r\n else {\r\n queue.set(createNotificationQueueKey(), message);\r\n }\r\n }\r\n function cancelUndispatched(_message) {\r\n return undefined;\r\n }\r\n function isListening() {\r\n return state === ConnectionState.Listening;\r\n }\r\n function isClosed() {\r\n return state === ConnectionState.Closed;\r\n }\r\n function isDisposed() {\r\n return state === ConnectionState.Disposed;\r\n }\r\n function closeHandler() {\r\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\r\n state = ConnectionState.Closed;\r\n closeEmitter.fire(undefined);\r\n }\r\n // If the connection is disposed don't sent close events.\r\n }\r\n function readErrorHandler(error) {\r\n errorEmitter.fire([error, undefined, undefined]);\r\n }\r\n function writeErrorHandler(data) {\r\n errorEmitter.fire(data);\r\n }\r\n messageReader.onClose(closeHandler);\r\n messageReader.onError(readErrorHandler);\r\n messageWriter.onClose(closeHandler);\r\n messageWriter.onError(writeErrorHandler);\r\n function triggerMessageQueue() {\r\n if (timer || messageQueue.size === 0) {\r\n return;\r\n }\r\n timer = setImmediate(() => {\r\n timer = undefined;\r\n processMessageQueue();\r\n });\r\n }\r\n function processMessageQueue() {\r\n if (messageQueue.size === 0) {\r\n return;\r\n }\r\n let message = messageQueue.shift();\r\n try {\r\n if (messages_1.isRequestMessage(message)) {\r\n handleRequest(message);\r\n }\r\n else if (messages_1.isNotificationMessage(message)) {\r\n handleNotification(message);\r\n }\r\n else if (messages_1.isResponseMessage(message)) {\r\n handleResponse(message);\r\n }\r\n else {\r\n handleInvalidMessage(message);\r\n }\r\n }\r\n finally {\r\n triggerMessageQueue();\r\n }\r\n }\r\n let callback = (message) => {\r\n try {\r\n // We have received a cancellation message. Check if the message is still in the queue\r\n // and cancel it if allowed to do so.\r\n if (messages_1.isNotificationMessage(message) && message.method === CancelNotification.type.method) {\r\n let key = createRequestQueueKey(message.params.id);\r\n let toCancel = messageQueue.get(key);\r\n if (messages_1.isRequestMessage(toCancel)) {\r\n let response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\r\n if (response && (response.error !== void 0 || response.result !== void 0)) {\r\n messageQueue.delete(key);\r\n response.id = toCancel.id;\r\n traceSendingResponse(response, message.method, Date.now());\r\n messageWriter.write(response);\r\n return;\r\n }\r\n }\r\n }\r\n addMessageToQueue(messageQueue, message);\r\n }\r\n finally {\r\n triggerMessageQueue();\r\n }\r\n };\r\n function handleRequest(requestMessage) {\r\n if (isDisposed()) {\r\n // we return here silently since we fired an event when the\r\n // connection got disposed.\r\n return;\r\n }\r\n function reply(resultOrError, method, startTime) {\r\n let message = {\r\n jsonrpc: version,\r\n id: requestMessage.id\r\n };\r\n if (resultOrError instanceof messages_1.ResponseError) {\r\n message.error = resultOrError.toJson();\r\n }\r\n else {\r\n message.result = resultOrError === void 0 ? null : resultOrError;\r\n }\r\n traceSendingResponse(message, method, startTime);\r\n messageWriter.write(message);\r\n }\r\n function replyError(error, method, startTime) {\r\n let message = {\r\n jsonrpc: version,\r\n id: requestMessage.id,\r\n error: error.toJson()\r\n };\r\n traceSendingResponse(message, method, startTime);\r\n messageWriter.write(message);\r\n }\r\n function replySuccess(result, method, startTime) {\r\n // The JSON RPC defines that a response must either have a result or an error\r\n // So we can't treat undefined as a valid response result.\r\n if (result === void 0) {\r\n result = null;\r\n }\r\n let message = {\r\n jsonrpc: version,\r\n id: requestMessage.id,\r\n result: result\r\n };\r\n traceSendingResponse(message, method, startTime);\r\n messageWriter.write(message);\r\n }\r\n traceReceivedRequest(requestMessage);\r\n let element = requestHandlers[requestMessage.method];\r\n let type;\r\n let requestHandler;\r\n if (element) {\r\n type = element.type;\r\n requestHandler = element.handler;\r\n }\r\n let startTime = Date.now();\r\n if (requestHandler || starRequestHandler) {\r\n let cancellationSource = new cancellation_1.CancellationTokenSource();\r\n let tokenKey = String(requestMessage.id);\r\n requestTokens[tokenKey] = cancellationSource;\r\n try {\r\n let handlerResult;\r\n if (requestMessage.params === void 0 || (type !== void 0 && type.numberOfParams === 0)) {\r\n handlerResult = requestHandler\r\n ? requestHandler(cancellationSource.token)\r\n : starRequestHandler(requestMessage.method, cancellationSource.token);\r\n }\r\n else if (Is.array(requestMessage.params) && (type === void 0 || type.numberOfParams > 1)) {\r\n handlerResult = requestHandler\r\n ? requestHandler(...requestMessage.params, cancellationSource.token)\r\n : starRequestHandler(requestMessage.method, ...requestMessage.params, cancellationSource.token);\r\n }\r\n else {\r\n handlerResult = requestHandler\r\n ? requestHandler(requestMessage.params, cancellationSource.token)\r\n : starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\r\n }\r\n let promise = handlerResult;\r\n if (!handlerResult) {\r\n delete requestTokens[tokenKey];\r\n replySuccess(handlerResult, requestMessage.method, startTime);\r\n }\r\n else if (promise.then) {\r\n promise.then((resultOrError) => {\r\n delete requestTokens[tokenKey];\r\n reply(resultOrError, requestMessage.method, startTime);\r\n }, error => {\r\n delete requestTokens[tokenKey];\r\n if (error instanceof messages_1.ResponseError) {\r\n replyError(error, requestMessage.method, startTime);\r\n }\r\n else if (error && Is.string(error.message)) {\r\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\r\n }\r\n else {\r\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\r\n }\r\n });\r\n }\r\n else {\r\n delete requestTokens[tokenKey];\r\n reply(handlerResult, requestMessage.method, startTime);\r\n }\r\n }\r\n catch (error) {\r\n delete requestTokens[tokenKey];\r\n if (error instanceof messages_1.ResponseError) {\r\n reply(error, requestMessage.method, startTime);\r\n }\r\n else if (error && Is.string(error.message)) {\r\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\r\n }\r\n else {\r\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\r\n }\r\n }\r\n }\r\n else {\r\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\r\n }\r\n }\r\n function handleResponse(responseMessage) {\r\n if (isDisposed()) {\r\n // See handle request.\r\n return;\r\n }\r\n if (responseMessage.id === null) {\r\n if (responseMessage.error) {\r\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\r\n }\r\n else {\r\n logger.error(`Received response message without id. No further error information provided.`);\r\n }\r\n }\r\n else {\r\n let key = String(responseMessage.id);\r\n let responsePromise = responsePromises[key];\r\n traceReceivedResponse(responseMessage, responsePromise);\r\n if (responsePromise) {\r\n delete responsePromises[key];\r\n try {\r\n if (responseMessage.error) {\r\n let error = responseMessage.error;\r\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\r\n }\r\n else if (responseMessage.result !== void 0) {\r\n responsePromise.resolve(responseMessage.result);\r\n }\r\n else {\r\n throw new Error('Should never happen.');\r\n }\r\n }\r\n catch (error) {\r\n if (error.message) {\r\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\r\n }\r\n else {\r\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n function handleNotification(message) {\r\n if (isDisposed()) {\r\n // See handle request.\r\n return;\r\n }\r\n let type = undefined;\r\n let notificationHandler;\r\n if (message.method === CancelNotification.type.method) {\r\n notificationHandler = (params) => {\r\n let id = params.id;\r\n let source = requestTokens[String(id)];\r\n if (source) {\r\n source.cancel();\r\n }\r\n };\r\n }\r\n else {\r\n let element = notificationHandlers[message.method];\r\n if (element) {\r\n notificationHandler = element.handler;\r\n type = element.type;\r\n }\r\n }\r\n if (notificationHandler || starNotificationHandler) {\r\n try {\r\n traceReceivedNotification(message);\r\n if (message.params === void 0 || (type !== void 0 && type.numberOfParams === 0)) {\r\n notificationHandler ? notificationHandler() : starNotificationHandler(message.method);\r\n }\r\n else if (Is.array(message.params) && (type === void 0 || type.numberOfParams > 1)) {\r\n notificationHandler ? notificationHandler(...message.params) : starNotificationHandler(message.method, ...message.params);\r\n }\r\n else {\r\n notificationHandler ? notificationHandler(message.params) : starNotificationHandler(message.method, message.params);\r\n }\r\n }\r\n catch (error) {\r\n if (error.message) {\r\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\r\n }\r\n else {\r\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\r\n }\r\n }\r\n }\r\n else {\r\n unhandledNotificationEmitter.fire(message);\r\n }\r\n }\r\n function handleInvalidMessage(message) {\r\n if (!message) {\r\n logger.error('Received empty message.');\r\n return;\r\n }\r\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\r\n // Test whether we find an id to reject the promise\r\n let responseMessage = message;\r\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\r\n let key = String(responseMessage.id);\r\n let responseHandler = responsePromises[key];\r\n if (responseHandler) {\r\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\r\n }\r\n }\r\n }\r\n function traceSendingRequest(message) {\r\n if (trace === Trace.Off || !tracer) {\r\n return;\r\n }\r\n if (traceFormat === TraceFormat.Text) {\r\n let data = undefined;\r\n if (trace === Trace.Verbose && message.params) {\r\n data = `Params: ${JSON.stringify(message.params, null, 4)}\\n\\n`;\r\n }\r\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\r\n }\r\n else {\r\n logLSPMessage('send-request', message);\r\n }\r\n }\r\n function traceSendingNotification(message) {\r\n if (trace === Trace.Off || !tracer) {\r\n return;\r\n }\r\n if (traceFormat === TraceFormat.Text) {\r\n let data = undefined;\r\n if (trace === Trace.Verbose) {\r\n if (message.params) {\r\n data = `Params: ${JSON.stringify(message.params, null, 4)}\\n\\n`;\r\n }\r\n else {\r\n data = 'No parameters provided.\\n\\n';\r\n }\r\n }\r\n tracer.log(`Sending notification '${message.method}'.`, data);\r\n }\r\n else {\r\n logLSPMessage('send-notification', message);\r\n }\r\n }\r\n function traceSendingResponse(message, method, startTime) {\r\n if (trace === Trace.Off || !tracer) {\r\n return;\r\n }\r\n if (traceFormat === TraceFormat.Text) {\r\n let data = undefined;\r\n if (trace === Trace.Verbose) {\r\n if (message.error && message.error.data) {\r\n data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\\n\\n`;\r\n }\r\n else {\r\n if (message.result) {\r\n data = `Result: ${JSON.stringify(message.result, null, 4)}\\n\\n`;\r\n }\r\n else if (message.error === void 0) {\r\n data = 'No result returned.\\n\\n';\r\n }\r\n }\r\n }\r\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\r\n }\r\n else {\r\n logLSPMessage('send-response', message);\r\n }\r\n }\r\n function traceReceivedRequest(message) {\r\n if (trace === Trace.Off || !tracer) {\r\n return;\r\n }\r\n if (traceFormat === TraceFormat.Text) {\r\n let data = undefined;\r\n if (trace === Trace.Verbose && message.params) {\r\n data = `Params: ${JSON.stringify(message.params, null, 4)}\\n\\n`;\r\n }\r\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\r\n }\r\n else {\r\n logLSPMessage('receive-request', message);\r\n }\r\n }\r\n function traceReceivedNotification(message) {\r\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\r\n return;\r\n }\r\n if (traceFormat === TraceFormat.Text) {\r\n let data = undefined;\r\n if (trace === Trace.Verbose) {\r\n if (message.params) {\r\n data = `Params: ${JSON.stringify(message.params, null, 4)}\\n\\n`;\r\n }\r\n else {\r\n data = 'No parameters provided.\\n\\n';\r\n }\r\n }\r\n tracer.log(`Received notification '${message.method}'.`, data);\r\n }\r\n else {\r\n logLSPMessage('receive-notification', message);\r\n }\r\n }\r\n function traceReceivedResponse(message, responsePromise) {\r\n if (trace === Trace.Off || !tracer) {\r\n return;\r\n }\r\n if (traceFormat === TraceFormat.Text) {\r\n let data = undefined;\r\n if (trace === Trace.Verbose) {\r\n if (message.error && message.error.data) {\r\n data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\\n\\n`;\r\n }\r\n else {\r\n if (message.result) {\r\n data = `Result: ${JSON.stringify(message.result, null, 4)}\\n\\n`;\r\n }\r\n else if (message.error === void 0) {\r\n data = 'No result returned.\\n\\n';\r\n }\r\n }\r\n }\r\n if (responsePromise) {\r\n let error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\r\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\r\n }\r\n else {\r\n tracer.log(`Received response ${message.id} without active response promise.`, data);\r\n }\r\n }\r\n else {\r\n logLSPMessage('receive-response', message);\r\n }\r\n }\r\n function logLSPMessage(type, message) {\r\n if (!tracer || trace === Trace.Off) {\r\n return;\r\n }\r\n const lspMessage = {\r\n isLSPMessage: true,\r\n type,\r\n message,\r\n timestamp: Date.now()\r\n };\r\n tracer.log(lspMessage);\r\n }\r\n function throwIfClosedOrDisposed() {\r\n if (isClosed()) {\r\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\r\n }\r\n if (isDisposed()) {\r\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\r\n }\r\n }\r\n function throwIfListening() {\r\n if (isListening()) {\r\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\r\n }\r\n }\r\n function throwIfNotListening() {\r\n if (!isListening()) {\r\n throw new Error('Call listen() first.');\r\n }\r\n }\r\n function undefinedToNull(param) {\r\n if (param === void 0) {\r\n return null;\r\n }\r\n else {\r\n return param;\r\n }\r\n }\r\n function computeMessageParams(type, params) {\r\n let result;\r\n let numberOfParams = type.numberOfParams;\r\n switch (numberOfParams) {\r\n case 0:\r\n result = null;\r\n break;\r\n case 1:\r\n result = undefinedToNull(params[0]);\r\n break;\r\n default:\r\n result = [];\r\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\r\n result.push(undefinedToNull(params[i]));\r\n }\r\n if (params.length < numberOfParams) {\r\n for (let i = params.length; i < numberOfParams; i++) {\r\n result.push(null);\r\n }\r\n }\r\n break;\r\n }\r\n return result;\r\n }\r\n let connection = {\r\n sendNotification: (type, ...params) => {\r\n throwIfClosedOrDisposed();\r\n let method;\r\n let messageParams;\r\n if (Is.string(type)) {\r\n method = type;\r\n switch (params.length) {\r\n case 0:\r\n messageParams = null;\r\n break;\r\n case 1:\r\n messageParams = params[0];\r\n break;\r\n default:\r\n messageParams = params;\r\n break;\r\n }\r\n }\r\n else {\r\n method = type.method;\r\n messageParams = computeMessageParams(type, params);\r\n }\r\n let notificationMessage = {\r\n jsonrpc: version,\r\n method: method,\r\n params: messageParams\r\n };\r\n traceSendingNotification(notificationMessage);\r\n messageWriter.write(notificationMessage);\r\n },\r\n onNotification: (type, handler) => {\r\n throwIfClosedOrDisposed();\r\n if (Is.func(type)) {\r\n starNotificationHandler = type;\r\n }\r\n else if (handler) {\r\n if (Is.string(type)) {\r\n notificationHandlers[type] = { type: undefined, handler };\r\n }\r\n else {\r\n notificationHandlers[type.method] = { type, handler };\r\n }\r\n }\r\n },\r\n onProgress: (_type, token, handler) => {\r\n if (progressHandlers.has(token)) {\r\n throw new Error(`Progress handler for token ${token} already registered`);\r\n }\r\n progressHandlers.set(token, handler);\r\n return {\r\n dispose: () => {\r\n progressHandlers.delete(token);\r\n }\r\n };\r\n },\r\n sendProgress: (_type, token, value) => {\r\n connection.sendNotification(ProgressNotification.type, { token, value });\r\n },\r\n onUnhandledProgress: unhandledProgressEmitter.event,\r\n sendRequest: (type, ...params) => {\r\n throwIfClosedOrDisposed();\r\n throwIfNotListening();\r\n let method;\r\n let messageParams;\r\n let token = undefined;\r\n if (Is.string(type)) {\r\n method = type;\r\n switch (params.length) {\r\n case 0:\r\n messageParams = null;\r\n break;\r\n case 1:\r\n // The cancellation token is optional so it can also be undefined.\r\n if (cancellation_1.CancellationToken.is(params[0])) {\r\n messageParams = null;\r\n token = params[0];\r\n }\r\n else {\r\n messageParams = undefinedToNull(params[0]);\r\n }\r\n break;\r\n default:\r\n const last = params.length - 1;\r\n if (cancellation_1.CancellationToken.is(params[last])) {\r\n token = params[last];\r\n if (params.length === 2) {\r\n messageParams = undefinedToNull(params[0]);\r\n }\r\n else {\r\n messageParams = params.slice(0, last).map(value => undefinedToNull(value));\r\n }\r\n }\r\n else {\r\n messageParams = params.map(value => undefinedToNull(value));\r\n }\r\n break;\r\n }\r\n }\r\n else {\r\n method = type.method;\r\n messageParams = computeMessageParams(type, params);\r\n let numberOfParams = type.numberOfParams;\r\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\r\n }\r\n let id = sequenceNumber++;\r\n let result = new Promise((resolve, reject) => {\r\n let requestMessage = {\r\n jsonrpc: version,\r\n id: id,\r\n method: method,\r\n params: messageParams\r\n };\r\n let responsePromise = { method: method, timerStart: Date.now(), resolve, reject };\r\n traceSendingRequest(requestMessage);\r\n try {\r\n messageWriter.write(requestMessage);\r\n }\r\n catch (e) {\r\n // Writing the message failed. So we need to reject the promise.\r\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, e.message ? e.message : 'Unknown reason'));\r\n responsePromise = null;\r\n }\r\n if (responsePromise) {\r\n responsePromises[String(id)] = responsePromise;\r\n }\r\n });\r\n if (token) {\r\n token.onCancellationRequested(() => {\r\n connection.sendNotification(CancelNotification.type, { id });\r\n });\r\n }\r\n return result;\r\n },\r\n onRequest: (type, handler) => {\r\n throwIfClosedOrDisposed();\r\n if (Is.func(type)) {\r\n starRequestHandler = type;\r\n }\r\n else if (handler) {\r\n if (Is.string(type)) {\r\n requestHandlers[type] = { type: undefined, handler };\r\n }\r\n else {\r\n requestHandlers[type.method] = { type, handler };\r\n }\r\n }\r\n },\r\n trace: (_value, _tracer, sendNotificationOrTraceOptions) => {\r\n let _sendNotification = false;\r\n let _traceFormat = TraceFormat.Text;\r\n if (sendNotificationOrTraceOptions !== void 0) {\r\n if (Is.boolean(sendNotificationOrTraceOptions)) {\r\n _sendNotification = sendNotificationOrTraceOptions;\r\n }\r\n else {\r\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\r\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\r\n }\r\n }\r\n trace = _value;\r\n traceFormat = _traceFormat;\r\n if (trace === Trace.Off) {\r\n tracer = undefined;\r\n }\r\n else {\r\n tracer = _tracer;\r\n }\r\n if (_sendNotification && !isClosed() && !isDisposed()) {\r\n connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\r\n }\r\n },\r\n onError: errorEmitter.event,\r\n onClose: closeEmitter.event,\r\n onUnhandledNotification: unhandledNotificationEmitter.event,\r\n onDispose: disposeEmitter.event,\r\n dispose: () => {\r\n if (isDisposed()) {\r\n return;\r\n }\r\n state = ConnectionState.Disposed;\r\n disposeEmitter.fire(undefined);\r\n let error = new Error('Connection got disposed.');\r\n Object.keys(responsePromises).forEach((key) => {\r\n responsePromises[key].reject(error);\r\n });\r\n responsePromises = Object.create(null);\r\n requestTokens = Object.create(null);\r\n messageQueue = new linkedMap_1.LinkedMap();\r\n // Test for backwards compatibility\r\n if (Is.func(messageWriter.dispose)) {\r\n messageWriter.dispose();\r\n }\r\n if (Is.func(messageReader.dispose)) {\r\n messageReader.dispose();\r\n }\r\n },\r\n listen: () => {\r\n throwIfClosedOrDisposed();\r\n throwIfListening();\r\n state = ConnectionState.Listening;\r\n messageReader.listen(callback);\r\n },\r\n inspect: () => {\r\n // eslint-disable-next-line no-console\r\n console.log('inspect');\r\n }\r\n };\r\n connection.onNotification(LogTraceNotification.type, (params) => {\r\n if (trace === Trace.Off || !tracer) {\r\n return;\r\n }\r\n tracer.log(params.message, trace === Trace.Verbose ? params.verbose : undefined);\r\n });\r\n connection.onNotification(ProgressNotification.type, (params) => {\r\n const handler = progressHandlers.get(params.token);\r\n if (handler) {\r\n handler(params.value);\r\n }\r\n else {\r\n unhandledProgressEmitter.fire(params);\r\n }\r\n });\r\n return connection;\r\n}\r\nfunction isMessageReader(value) {\r\n return value.listen !== void 0 && value.read === void 0;\r\n}\r\nfunction isMessageWriter(value) {\r\n return value.write !== void 0 && value.end === void 0;\r\n}\r\nfunction createMessageConnection(input, output, logger, strategy) {\r\n if (!logger) {\r\n logger = exports.NullLogger;\r\n }\r\n let reader = isMessageReader(input) ? input : new messageReader_1.StreamMessageReader(input);\r\n let writer = isMessageWriter(output) ? output : new messageWriter_1.StreamMessageWriter(output);\r\n return _createMessageConnection(reader, writer, logger, strategy);\r\n}\r\nexports.createMessageConnection = createMessageConnection;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"./events\");\r\nconst Is = require(\"./is\");\r\nlet DefaultSize = 8192;\r\nlet CR = Buffer.from('\\r', 'ascii')[0];\r\nlet LF = Buffer.from('\\n', 'ascii')[0];\r\nlet CRLF = '\\r\\n';\r\nclass MessageBuffer {\r\n constructor(encoding = 'utf8') {\r\n this.encoding = encoding;\r\n this.index = 0;\r\n this.buffer = Buffer.allocUnsafe(DefaultSize);\r\n }\r\n append(chunk) {\r\n var toAppend = chunk;\r\n if (typeof (chunk) === 'string') {\r\n var str = chunk;\r\n var bufferLen = Buffer.byteLength(str, this.encoding);\r\n toAppend = Buffer.allocUnsafe(bufferLen);\r\n toAppend.write(str, 0, bufferLen, this.encoding);\r\n }\r\n if (this.buffer.length - this.index >= toAppend.length) {\r\n toAppend.copy(this.buffer, this.index, 0, toAppend.length);\r\n }\r\n else {\r\n var newSize = (Math.ceil((this.index + toAppend.length) / DefaultSize) + 1) * DefaultSize;\r\n if (this.index === 0) {\r\n this.buffer = Buffer.allocUnsafe(newSize);\r\n toAppend.copy(this.buffer, 0, 0, toAppend.length);\r\n }\r\n else {\r\n this.buffer = Buffer.concat([this.buffer.slice(0, this.index), toAppend], newSize);\r\n }\r\n }\r\n this.index += toAppend.length;\r\n }\r\n tryReadHeaders() {\r\n let result = undefined;\r\n let current = 0;\r\n while (current + 3 < this.index && (this.buffer[current] !== CR || this.buffer[current + 1] !== LF || this.buffer[current + 2] !== CR || this.buffer[current + 3] !== LF)) {\r\n current++;\r\n }\r\n // No header / body separator found (e.g CRLFCRLF)\r\n if (current + 3 >= this.index) {\r\n return result;\r\n }\r\n result = Object.create(null);\r\n let headers = this.buffer.toString('ascii', 0, current).split(CRLF);\r\n headers.forEach((header) => {\r\n let index = header.indexOf(':');\r\n if (index === -1) {\r\n throw new Error('Message header must separate key and value using :');\r\n }\r\n let key = header.substr(0, index);\r\n let value = header.substr(index + 1).trim();\r\n result[key] = value;\r\n });\r\n let nextStart = current + 4;\r\n this.buffer = this.buffer.slice(nextStart);\r\n this.index = this.index - nextStart;\r\n return result;\r\n }\r\n tryReadContent(length) {\r\n if (this.index < length) {\r\n return null;\r\n }\r\n let result = this.buffer.toString(this.encoding, 0, length);\r\n let nextStart = length;\r\n this.buffer.copy(this.buffer, 0, nextStart);\r\n this.index = this.index - nextStart;\r\n return result;\r\n }\r\n get numberOfBytes() {\r\n return this.index;\r\n }\r\n}\r\nvar MessageReader;\r\n(function (MessageReader) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\r\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\r\n }\r\n MessageReader.is = is;\r\n})(MessageReader = exports.MessageReader || (exports.MessageReader = {}));\r\nclass AbstractMessageReader {\r\n constructor() {\r\n this.errorEmitter = new events_1.Emitter();\r\n this.closeEmitter = new events_1.Emitter();\r\n this.partialMessageEmitter = new events_1.Emitter();\r\n }\r\n dispose() {\r\n this.errorEmitter.dispose();\r\n this.closeEmitter.dispose();\r\n }\r\n get onError() {\r\n return this.errorEmitter.event;\r\n }\r\n fireError(error) {\r\n this.errorEmitter.fire(this.asError(error));\r\n }\r\n get onClose() {\r\n return this.closeEmitter.event;\r\n }\r\n fireClose() {\r\n this.closeEmitter.fire(undefined);\r\n }\r\n get onPartialMessage() {\r\n return this.partialMessageEmitter.event;\r\n }\r\n firePartialMessage(info) {\r\n this.partialMessageEmitter.fire(info);\r\n }\r\n asError(error) {\r\n if (error instanceof Error) {\r\n return error;\r\n }\r\n else {\r\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\r\n }\r\n }\r\n}\r\nexports.AbstractMessageReader = AbstractMessageReader;\r\nclass StreamMessageReader extends AbstractMessageReader {\r\n constructor(readable, encoding = 'utf8') {\r\n super();\r\n this.readable = readable;\r\n this.buffer = new MessageBuffer(encoding);\r\n this._partialMessageTimeout = 10000;\r\n }\r\n set partialMessageTimeout(timeout) {\r\n this._partialMessageTimeout = timeout;\r\n }\r\n get partialMessageTimeout() {\r\n return this._partialMessageTimeout;\r\n }\r\n listen(callback) {\r\n this.nextMessageLength = -1;\r\n this.messageToken = 0;\r\n this.partialMessageTimer = undefined;\r\n this.callback = callback;\r\n this.readable.on('data', (data) => {\r\n this.onData(data);\r\n });\r\n this.readable.on('error', (error) => this.fireError(error));\r\n this.readable.on('close', () => this.fireClose());\r\n }\r\n onData(data) {\r\n this.buffer.append(data);\r\n while (true) {\r\n if (this.nextMessageLength === -1) {\r\n let headers = this.buffer.tryReadHeaders();\r\n if (!headers) {\r\n return;\r\n }\r\n let contentLength = headers['Content-Length'];\r\n if (!contentLength) {\r\n throw new Error('Header must provide a Content-Length property.');\r\n }\r\n let length = parseInt(contentLength);\r\n if (isNaN(length)) {\r\n throw new Error('Content-Length value must be a number.');\r\n }\r\n this.nextMessageLength = length;\r\n // Take the encoding form the header. For compatibility\r\n // treat both utf-8 and utf8 as node utf8\r\n }\r\n var msg = this.buffer.tryReadContent(this.nextMessageLength);\r\n if (msg === null) {\r\n /** We haven't received the full message yet. */\r\n this.setPartialMessageTimer();\r\n return;\r\n }\r\n this.clearPartialMessageTimer();\r\n this.nextMessageLength = -1;\r\n this.messageToken++;\r\n var json = JSON.parse(msg);\r\n this.callback(json);\r\n }\r\n }\r\n clearPartialMessageTimer() {\r\n if (this.partialMessageTimer) {\r\n clearTimeout(this.partialMessageTimer);\r\n this.partialMessageTimer = undefined;\r\n }\r\n }\r\n setPartialMessageTimer() {\r\n this.clearPartialMessageTimer();\r\n if (this._partialMessageTimeout <= 0) {\r\n return;\r\n }\r\n this.partialMessageTimer = setTimeout((token, timeout) => {\r\n this.partialMessageTimer = undefined;\r\n if (token === this.messageToken) {\r\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\r\n this.setPartialMessageTimer();\r\n }\r\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\r\n }\r\n}\r\nexports.StreamMessageReader = StreamMessageReader;\r\nclass IPCMessageReader extends AbstractMessageReader {\r\n constructor(process) {\r\n super();\r\n this.process = process;\r\n let eventEmitter = this.process;\r\n eventEmitter.on('error', (error) => this.fireError(error));\r\n eventEmitter.on('close', () => this.fireClose());\r\n }\r\n listen(callback) {\r\n this.process.on('message', callback);\r\n }\r\n}\r\nexports.IPCMessageReader = IPCMessageReader;\r\nclass SocketMessageReader extends StreamMessageReader {\r\n constructor(socket, encoding = 'utf-8') {\r\n super(socket, encoding);\r\n }\r\n}\r\nexports.SocketMessageReader = SocketMessageReader;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"./events\");\r\nconst Is = require(\"./is\");\r\nlet ContentLength = 'Content-Length: ';\r\nlet CRLF = '\\r\\n';\r\nvar MessageWriter;\r\n(function (MessageWriter) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\r\n Is.func(candidate.onError) && Is.func(candidate.write);\r\n }\r\n MessageWriter.is = is;\r\n})(MessageWriter = exports.MessageWriter || (exports.MessageWriter = {}));\r\nclass AbstractMessageWriter {\r\n constructor() {\r\n this.errorEmitter = new events_1.Emitter();\r\n this.closeEmitter = new events_1.Emitter();\r\n }\r\n dispose() {\r\n this.errorEmitter.dispose();\r\n this.closeEmitter.dispose();\r\n }\r\n get onError() {\r\n return this.errorEmitter.event;\r\n }\r\n fireError(error, message, count) {\r\n this.errorEmitter.fire([this.asError(error), message, count]);\r\n }\r\n get onClose() {\r\n return this.closeEmitter.event;\r\n }\r\n fireClose() {\r\n this.closeEmitter.fire(undefined);\r\n }\r\n asError(error) {\r\n if (error instanceof Error) {\r\n return error;\r\n }\r\n else {\r\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\r\n }\r\n }\r\n}\r\nexports.AbstractMessageWriter = AbstractMessageWriter;\r\nclass StreamMessageWriter extends AbstractMessageWriter {\r\n constructor(writable, encoding = 'utf8') {\r\n super();\r\n this.writable = writable;\r\n this.encoding = encoding;\r\n this.errorCount = 0;\r\n this.writable.on('error', (error) => this.fireError(error));\r\n this.writable.on('close', () => this.fireClose());\r\n }\r\n write(msg) {\r\n let json = JSON.stringify(msg);\r\n let contentLength = Buffer.byteLength(json, this.encoding);\r\n let headers = [\r\n ContentLength, contentLength.toString(), CRLF,\r\n CRLF\r\n ];\r\n try {\r\n // Header must be written in ASCII encoding\r\n this.writable.write(headers.join(''), 'ascii');\r\n // Now write the content. This can be written in any encoding\r\n this.writable.write(json, this.encoding);\r\n this.errorCount = 0;\r\n }\r\n catch (error) {\r\n this.errorCount++;\r\n this.fireError(error, msg, this.errorCount);\r\n }\r\n }\r\n}\r\nexports.StreamMessageWriter = StreamMessageWriter;\r\nclass IPCMessageWriter extends AbstractMessageWriter {\r\n constructor(process) {\r\n super();\r\n this.process = process;\r\n this.errorCount = 0;\r\n this.queue = [];\r\n this.sending = false;\r\n let eventEmitter = this.process;\r\n eventEmitter.on('error', (error) => this.fireError(error));\r\n eventEmitter.on('close', () => this.fireClose);\r\n }\r\n write(msg) {\r\n if (!this.sending && this.queue.length === 0) {\r\n // See https://github.com/nodejs/node/issues/7657\r\n this.doWriteMessage(msg);\r\n }\r\n else {\r\n this.queue.push(msg);\r\n }\r\n }\r\n doWriteMessage(msg) {\r\n try {\r\n if (this.process.send) {\r\n this.sending = true;\r\n this.process.send(msg, undefined, undefined, (error) => {\r\n this.sending = false;\r\n if (error) {\r\n this.errorCount++;\r\n this.fireError(error, msg, this.errorCount);\r\n }\r\n else {\r\n this.errorCount = 0;\r\n }\r\n if (this.queue.length > 0) {\r\n this.doWriteMessage(this.queue.shift());\r\n }\r\n });\r\n }\r\n }\r\n catch (error) {\r\n this.errorCount++;\r\n this.fireError(error, msg, this.errorCount);\r\n }\r\n }\r\n}\r\nexports.IPCMessageWriter = IPCMessageWriter;\r\nclass SocketMessageWriter extends AbstractMessageWriter {\r\n constructor(socket, encoding = 'utf8') {\r\n super();\r\n this.socket = socket;\r\n this.queue = [];\r\n this.sending = false;\r\n this.encoding = encoding;\r\n this.errorCount = 0;\r\n this.socket.on('error', (error) => this.fireError(error));\r\n this.socket.on('close', () => this.fireClose());\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.socket.destroy();\r\n }\r\n write(msg) {\r\n if (!this.sending && this.queue.length === 0) {\r\n // See https://github.com/nodejs/node/issues/7657\r\n this.doWriteMessage(msg);\r\n }\r\n else {\r\n this.queue.push(msg);\r\n }\r\n }\r\n doWriteMessage(msg) {\r\n let json = JSON.stringify(msg);\r\n let contentLength = Buffer.byteLength(json, this.encoding);\r\n let headers = [\r\n ContentLength, contentLength.toString(), CRLF,\r\n CRLF\r\n ];\r\n try {\r\n // Header must be written in ASCII encoding\r\n this.sending = true;\r\n this.socket.write(headers.join(''), 'ascii', (error) => {\r\n if (error) {\r\n this.handleError(error, msg);\r\n }\r\n try {\r\n // Now write the content. This can be written in any encoding\r\n this.socket.write(json, this.encoding, (error) => {\r\n this.sending = false;\r\n if (error) {\r\n this.handleError(error, msg);\r\n }\r\n else {\r\n this.errorCount = 0;\r\n }\r\n if (this.queue.length > 0) {\r\n this.doWriteMessage(this.queue.shift());\r\n }\r\n });\r\n }\r\n catch (error) {\r\n this.handleError(error, msg);\r\n }\r\n });\r\n }\r\n catch (error) {\r\n this.handleError(error, msg);\r\n }\r\n }\r\n handleError(error, msg) {\r\n this.errorCount++;\r\n this.fireError(error, msg, this.errorCount);\r\n }\r\n}\r\nexports.SocketMessageWriter = SocketMessageWriter;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst is = require(\"./is\");\r\n/**\r\n * Predefined error codes.\r\n */\r\nvar ErrorCodes;\r\n(function (ErrorCodes) {\r\n // Defined by JSON RPC\r\n ErrorCodes.ParseError = -32700;\r\n ErrorCodes.InvalidRequest = -32600;\r\n ErrorCodes.MethodNotFound = -32601;\r\n ErrorCodes.InvalidParams = -32602;\r\n ErrorCodes.InternalError = -32603;\r\n ErrorCodes.serverErrorStart = -32099;\r\n ErrorCodes.serverErrorEnd = -32000;\r\n ErrorCodes.ServerNotInitialized = -32002;\r\n ErrorCodes.UnknownErrorCode = -32001;\r\n // Defined by the protocol.\r\n ErrorCodes.RequestCancelled = -32800;\r\n ErrorCodes.ContentModified = -32801;\r\n // Defined by VSCode library.\r\n ErrorCodes.MessageWriteError = 1;\r\n ErrorCodes.MessageReadError = 2;\r\n})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\r\n/**\r\n * An error object return in a response in case a request\r\n * has failed.\r\n */\r\nclass ResponseError extends Error {\r\n constructor(code, message, data) {\r\n super(message);\r\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\r\n this.data = data;\r\n Object.setPrototypeOf(this, ResponseError.prototype);\r\n }\r\n toJson() {\r\n return {\r\n code: this.code,\r\n message: this.message,\r\n data: this.data,\r\n };\r\n }\r\n}\r\nexports.ResponseError = ResponseError;\r\n/**\r\n * An abstract implementation of a MessageType.\r\n */\r\nclass AbstractMessageType {\r\n constructor(_method, _numberOfParams) {\r\n this._method = _method;\r\n this._numberOfParams = _numberOfParams;\r\n }\r\n get method() {\r\n return this._method;\r\n }\r\n get numberOfParams() {\r\n return this._numberOfParams;\r\n }\r\n}\r\nexports.AbstractMessageType = AbstractMessageType;\r\n/**\r\n * Classes to type request response pairs\r\n *\r\n * The type parameter RO will be removed in the next major version\r\n * of the JSON RPC library since it is a LSP concept and doesn't\r\n * belong here. For now it is tagged as default never.\r\n */\r\nclass RequestType0 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 0);\r\n }\r\n}\r\nexports.RequestType0 = RequestType0;\r\nclass RequestType extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 1);\r\n }\r\n}\r\nexports.RequestType = RequestType;\r\nclass RequestType1 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 1);\r\n }\r\n}\r\nexports.RequestType1 = RequestType1;\r\nclass RequestType2 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 2);\r\n }\r\n}\r\nexports.RequestType2 = RequestType2;\r\nclass RequestType3 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 3);\r\n }\r\n}\r\nexports.RequestType3 = RequestType3;\r\nclass RequestType4 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 4);\r\n }\r\n}\r\nexports.RequestType4 = RequestType4;\r\nclass RequestType5 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 5);\r\n }\r\n}\r\nexports.RequestType5 = RequestType5;\r\nclass RequestType6 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 6);\r\n }\r\n}\r\nexports.RequestType6 = RequestType6;\r\nclass RequestType7 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 7);\r\n }\r\n}\r\nexports.RequestType7 = RequestType7;\r\nclass RequestType8 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 8);\r\n }\r\n}\r\nexports.RequestType8 = RequestType8;\r\nclass RequestType9 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 9);\r\n }\r\n}\r\nexports.RequestType9 = RequestType9;\r\n/**\r\n * The type parameter RO will be removed in the next major version\r\n * of the JSON RPC library since it is a LSP concept and doesn't\r\n * belong here. For now it is tagged as default never.\r\n */\r\nclass NotificationType extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 1);\r\n this._ = undefined;\r\n }\r\n}\r\nexports.NotificationType = NotificationType;\r\nclass NotificationType0 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 0);\r\n }\r\n}\r\nexports.NotificationType0 = NotificationType0;\r\nclass NotificationType1 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 1);\r\n }\r\n}\r\nexports.NotificationType1 = NotificationType1;\r\nclass NotificationType2 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 2);\r\n }\r\n}\r\nexports.NotificationType2 = NotificationType2;\r\nclass NotificationType3 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 3);\r\n }\r\n}\r\nexports.NotificationType3 = NotificationType3;\r\nclass NotificationType4 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 4);\r\n }\r\n}\r\nexports.NotificationType4 = NotificationType4;\r\nclass NotificationType5 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 5);\r\n }\r\n}\r\nexports.NotificationType5 = NotificationType5;\r\nclass NotificationType6 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 6);\r\n }\r\n}\r\nexports.NotificationType6 = NotificationType6;\r\nclass NotificationType7 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 7);\r\n }\r\n}\r\nexports.NotificationType7 = NotificationType7;\r\nclass NotificationType8 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 8);\r\n }\r\n}\r\nexports.NotificationType8 = NotificationType8;\r\nclass NotificationType9 extends AbstractMessageType {\r\n constructor(method) {\r\n super(method, 9);\r\n }\r\n}\r\nexports.NotificationType9 = NotificationType9;\r\n/**\r\n * Tests if the given message is a request message\r\n */\r\nfunction isRequestMessage(message) {\r\n let candidate = message;\r\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\r\n}\r\nexports.isRequestMessage = isRequestMessage;\r\n/**\r\n * Tests if the given message is a notification message\r\n */\r\nfunction isNotificationMessage(message) {\r\n let candidate = message;\r\n return candidate && is.string(candidate.method) && message.id === void 0;\r\n}\r\nexports.isNotificationMessage = isNotificationMessage;\r\n/**\r\n * Tests if the given message is a response message\r\n */\r\nfunction isResponseMessage(message) {\r\n let candidate = message;\r\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\r\n}\r\nexports.isResponseMessage = isResponseMessage;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path_1 = require(\"path\");\r\nconst os_1 = require(\"os\");\r\nconst crypto_1 = require(\"crypto\");\r\nconst net_1 = require(\"net\");\r\nconst messageReader_1 = require(\"./messageReader\");\r\nconst messageWriter_1 = require(\"./messageWriter\");\r\nfunction generateRandomPipeName() {\r\n const randomSuffix = crypto_1.randomBytes(21).toString('hex');\r\n if (process.platform === 'win32') {\r\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\r\n }\r\n else {\r\n // Mac/Unix: use socket file\r\n return path_1.join(os_1.tmpdir(), `vscode-${randomSuffix}.sock`);\r\n }\r\n}\r\nexports.generateRandomPipeName = generateRandomPipeName;\r\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\r\n let connectResolve;\r\n let connected = new Promise((resolve, _reject) => {\r\n connectResolve = resolve;\r\n });\r\n return new Promise((resolve, reject) => {\r\n let server = net_1.createServer((socket) => {\r\n server.close();\r\n connectResolve([\r\n new messageReader_1.SocketMessageReader(socket, encoding),\r\n new messageWriter_1.SocketMessageWriter(socket, encoding)\r\n ]);\r\n });\r\n server.on('error', reject);\r\n server.listen(pipeName, () => {\r\n server.removeListener('error', reject);\r\n resolve({\r\n onConnected: () => { return connected; }\r\n });\r\n });\r\n });\r\n}\r\nexports.createClientPipeTransport = createClientPipeTransport;\r\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\r\n const socket = net_1.createConnection(pipeName);\r\n return [\r\n new messageReader_1.SocketMessageReader(socket, encoding),\r\n new messageWriter_1.SocketMessageWriter(socket, encoding)\r\n ];\r\n}\r\nexports.createServerPipeTransport = createServerPipeTransport;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst net_1 = require(\"net\");\r\nconst messageReader_1 = require(\"./messageReader\");\r\nconst messageWriter_1 = require(\"./messageWriter\");\r\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\r\n let connectResolve;\r\n let connected = new Promise((resolve, _reject) => {\r\n connectResolve = resolve;\r\n });\r\n return new Promise((resolve, reject) => {\r\n let server = net_1.createServer((socket) => {\r\n server.close();\r\n connectResolve([\r\n new messageReader_1.SocketMessageReader(socket, encoding),\r\n new messageWriter_1.SocketMessageWriter(socket, encoding)\r\n ]);\r\n });\r\n server.on('error', reject);\r\n server.listen(port, '127.0.0.1', () => {\r\n server.removeListener('error', reject);\r\n resolve({\r\n onConnected: () => { return connected; }\r\n });\r\n });\r\n });\r\n}\r\nexports.createClientSocketTransport = createClientSocketTransport;\r\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\r\n const socket = net_1.createConnection(port, '127.0.0.1');\r\n return [\r\n new messageReader_1.SocketMessageReader(socket, encoding),\r\n new messageWriter_1.SocketMessageWriter(socket, encoding)\r\n ];\r\n}\r\nexports.createServerSocketTransport = createServerSocketTransport;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nvar protocol2code;\r\n(function (protocol2code) {\r\n function asCallHierarchyItem(converter, item) {\r\n if (item === null) {\r\n return undefined;\r\n }\r\n let result = new vscode_1.CallHierarchyItem(converter.asSymbolKind(item.kind), item.name, item.detail || '', converter.asUri(item.uri), converter.asRange(item.range), converter.asRange(item.selectionRange));\r\n if (item.tags !== undefined) {\r\n result.tags = converter.asSymbolTags(item.tags);\r\n }\r\n return result;\r\n }\r\n protocol2code.asCallHierarchyItem = asCallHierarchyItem;\r\n function asCallHierarchyItems(converter, items) {\r\n if (items === null) {\r\n return undefined;\r\n }\r\n let result = items.map(item => asCallHierarchyItem(converter, item));\r\n return result[0];\r\n }\r\n protocol2code.asCallHierarchyItems = asCallHierarchyItems;\r\n function asCallHierarchyIncomingCall(converter, item) {\r\n return new vscode_1.CallHierarchyIncomingCall(asCallHierarchyItem(converter, item.from), converter.asRanges(item.fromRanges));\r\n }\r\n protocol2code.asCallHierarchyIncomingCall = asCallHierarchyIncomingCall;\r\n function asCallHierarchyIncomingCalls(converter, items) {\r\n if (items === null) {\r\n return undefined;\r\n }\r\n return items.map(item => asCallHierarchyIncomingCall(converter, item));\r\n }\r\n protocol2code.asCallHierarchyIncomingCalls = asCallHierarchyIncomingCalls;\r\n function asCallHierarchyOutgoingCall(converter, item) {\r\n return new vscode_1.CallHierarchyOutgoingCall(asCallHierarchyItem(converter, item.to), converter.asRanges(item.fromRanges));\r\n }\r\n protocol2code.asCallHierarchyOutgoingCall = asCallHierarchyOutgoingCall;\r\n function asCallHierarchyOutgoingCalls(converter, items) {\r\n if (items === null) {\r\n return undefined;\r\n }\r\n return items.map(item => asCallHierarchyOutgoingCall(converter, item));\r\n }\r\n protocol2code.asCallHierarchyOutgoingCalls = asCallHierarchyOutgoingCalls;\r\n})(protocol2code || (protocol2code = {}));\r\nvar code2protocol;\r\n(function (code2protocol) {\r\n function asCallHierarchyItem(converter, value) {\r\n const result = {\r\n name: value.name,\r\n kind: converter.asSymbolKind(value.kind),\r\n uri: converter.asUri(value.uri),\r\n range: converter.asRange(value.range),\r\n selectionRange: converter.asRange(value.selectionRange)\r\n };\r\n if (value.detail !== undefined && value.detail.length > 0) {\r\n result.detail = value.detail;\r\n }\r\n if (value.tags !== undefined) {\r\n result.tags = converter.asSymbolTags(value.tags);\r\n }\r\n return result;\r\n }\r\n code2protocol.asCallHierarchyItem = asCallHierarchyItem;\r\n})(code2protocol || (code2protocol = {}));\r\nclass CallHierarchyProvider {\r\n constructor(client) {\r\n this.client = client;\r\n this.middleware = client.clientOptions.middleware;\r\n }\r\n prepareCallHierarchy(document, position, token) {\r\n const client = this.client;\r\n const middleware = this.middleware;\r\n const prepareCallHierarchy = (document, position, token) => {\r\n const params = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position);\r\n return client.sendRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type, params, token).then((result) => {\r\n return protocol2code.asCallHierarchyItems(this.client.protocol2CodeConverter, result);\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n return middleware.prepareCallHierarchy\r\n ? middleware.prepareCallHierarchy(document, position, token, prepareCallHierarchy)\r\n : prepareCallHierarchy(document, position, token);\r\n }\r\n provideCallHierarchyIncomingCalls(item, token) {\r\n const client = this.client;\r\n const middleware = this.middleware;\r\n const provideCallHierarchyIncomingCalls = (item, token) => {\r\n const params = {\r\n item: code2protocol.asCallHierarchyItem(client.code2ProtocolConverter, item)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyIncomingCallsRequest.type, params, token).then((result) => {\r\n return protocol2code.asCallHierarchyIncomingCalls(client.protocol2CodeConverter, result);\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyIncomingCallsRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n return middleware.provideCallHierarchyIncomingCalls\r\n ? middleware.provideCallHierarchyIncomingCalls(item, token, provideCallHierarchyIncomingCalls)\r\n : provideCallHierarchyIncomingCalls(item, token);\r\n }\r\n provideCallHierarchyOutgoingCalls(item, token) {\r\n const client = this.client;\r\n const middleware = this.middleware;\r\n const provideCallHierarchyOutgoingCalls = (item, token) => {\r\n const params = {\r\n item: code2protocol.asCallHierarchyItem(client.code2ProtocolConverter, item)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyOutgoingCallsRequest.type, params, token).then((result) => {\r\n return protocol2code.asCallHierarchyOutgoingCalls(client.protocol2CodeConverter, result);\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.CallHierarchyOutgoingCallsRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n return middleware.provideCallHierarchyOutgingCalls\r\n ? middleware.provideCallHierarchyOutgingCalls(item, token, provideCallHierarchyOutgoingCalls)\r\n : provideCallHierarchyOutgoingCalls(item, token);\r\n }\r\n}\r\nclass CallHierarchyFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.Proposed.CallHierarchyPrepareRequest.type);\r\n }\r\n fillClientCapabilities(cap) {\r\n const capabilites = cap;\r\n const capability = ensure(ensure(capabilites, 'textDocument'), 'callHierarchy');\r\n capability.dynamicRegistration = true;\r\n }\r\n initialize(cap, documentSelector) {\r\n const capabilities = cap;\r\n const [id, options] = this.getRegistration(documentSelector, capabilities.callHierarchyProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const client = this._client;\r\n const provider = new CallHierarchyProvider(client);\r\n return [vscode_1.languages.registerCallHierarchyProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nexports.CallHierarchyFeature = CallHierarchyFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst c2p = require(\"./codeConverter\");\r\nconst p2c = require(\"./protocolConverter\");\r\nconst Is = require(\"./utils/is\");\r\nconst async_1 = require(\"./utils/async\");\r\nconst UUID = require(\"./utils/uuid\");\r\nconst progressPart_1 = require(\"./progressPart\");\r\n__export(require(\"vscode-languageserver-protocol\"));\r\nclass ConsoleLogger {\r\n error(message) {\r\n console.error(message);\r\n }\r\n warn(message) {\r\n console.warn(message);\r\n }\r\n info(message) {\r\n console.info(message);\r\n }\r\n log(message) {\r\n console.log(message);\r\n }\r\n}\r\nfunction createConnection(input, output, errorHandler, closeHandler) {\r\n let logger = new ConsoleLogger();\r\n let connection = vscode_languageserver_protocol_1.createProtocolConnection(input, output, logger);\r\n connection.onError((data) => { errorHandler(data[0], data[1], data[2]); });\r\n connection.onClose(closeHandler);\r\n let result = {\r\n listen: () => connection.listen(),\r\n sendRequest: (type, ...params) => connection.sendRequest(Is.string(type) ? type : type.method, ...params),\r\n onRequest: (type, handler) => connection.onRequest(Is.string(type) ? type : type.method, handler),\r\n sendNotification: (type, params) => connection.sendNotification(Is.string(type) ? type : type.method, params),\r\n onNotification: (type, handler) => connection.onNotification(Is.string(type) ? type : type.method, handler),\r\n onProgress: connection.onProgress,\r\n sendProgress: connection.sendProgress,\r\n trace: (value, tracer, sendNotificationOrTraceOptions) => {\r\n const defaultTraceOptions = {\r\n sendNotification: false,\r\n traceFormat: vscode_languageserver_protocol_1.TraceFormat.Text\r\n };\r\n if (sendNotificationOrTraceOptions === void 0) {\r\n connection.trace(value, tracer, defaultTraceOptions);\r\n }\r\n else if (Is.boolean(sendNotificationOrTraceOptions)) {\r\n connection.trace(value, tracer, sendNotificationOrTraceOptions);\r\n }\r\n else {\r\n connection.trace(value, tracer, sendNotificationOrTraceOptions);\r\n }\r\n },\r\n initialize: (params) => connection.sendRequest(vscode_languageserver_protocol_1.InitializeRequest.type, params),\r\n shutdown: () => connection.sendRequest(vscode_languageserver_protocol_1.ShutdownRequest.type, undefined),\r\n exit: () => connection.sendNotification(vscode_languageserver_protocol_1.ExitNotification.type),\r\n onLogMessage: (handler) => connection.onNotification(vscode_languageserver_protocol_1.LogMessageNotification.type, handler),\r\n onShowMessage: (handler) => connection.onNotification(vscode_languageserver_protocol_1.ShowMessageNotification.type, handler),\r\n onTelemetry: (handler) => connection.onNotification(vscode_languageserver_protocol_1.TelemetryEventNotification.type, handler),\r\n didChangeConfiguration: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, params),\r\n didChangeWatchedFiles: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type, params),\r\n didOpenTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, params),\r\n didChangeTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params),\r\n didCloseTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, params),\r\n didSaveTextDocument: (params) => connection.sendNotification(vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type, params),\r\n onDiagnostics: (handler) => connection.onNotification(vscode_languageserver_protocol_1.PublishDiagnosticsNotification.type, handler),\r\n dispose: () => connection.dispose()\r\n };\r\n return result;\r\n}\r\n/**\r\n * An action to be performed when the connection is producing errors.\r\n */\r\nvar ErrorAction;\r\n(function (ErrorAction) {\r\n /**\r\n * Continue running the server.\r\n */\r\n ErrorAction[ErrorAction[\"Continue\"] = 1] = \"Continue\";\r\n /**\r\n * Shutdown the server.\r\n */\r\n ErrorAction[ErrorAction[\"Shutdown\"] = 2] = \"Shutdown\";\r\n})(ErrorAction = exports.ErrorAction || (exports.ErrorAction = {}));\r\n/**\r\n * An action to be performed when the connection to a server got closed.\r\n */\r\nvar CloseAction;\r\n(function (CloseAction) {\r\n /**\r\n * Don't restart the server. The connection stays closed.\r\n */\r\n CloseAction[CloseAction[\"DoNotRestart\"] = 1] = \"DoNotRestart\";\r\n /**\r\n * Restart the server.\r\n */\r\n CloseAction[CloseAction[\"Restart\"] = 2] = \"Restart\";\r\n})(CloseAction = exports.CloseAction || (exports.CloseAction = {}));\r\nclass DefaultErrorHandler {\r\n constructor(name) {\r\n this.name = name;\r\n this.restarts = [];\r\n }\r\n error(_error, _message, count) {\r\n if (count && count <= 3) {\r\n return ErrorAction.Continue;\r\n }\r\n return ErrorAction.Shutdown;\r\n }\r\n closed() {\r\n this.restarts.push(Date.now());\r\n if (this.restarts.length < 5) {\r\n return CloseAction.Restart;\r\n }\r\n else {\r\n let diff = this.restarts[this.restarts.length - 1] - this.restarts[0];\r\n if (diff <= 3 * 60 * 1000) {\r\n vscode_1.window.showErrorMessage(`The ${this.name} server crashed 5 times in the last 3 minutes. The server will not be restarted.`);\r\n return CloseAction.DoNotRestart;\r\n }\r\n else {\r\n this.restarts.shift();\r\n return CloseAction.Restart;\r\n }\r\n }\r\n }\r\n}\r\nvar RevealOutputChannelOn;\r\n(function (RevealOutputChannelOn) {\r\n RevealOutputChannelOn[RevealOutputChannelOn[\"Info\"] = 1] = \"Info\";\r\n RevealOutputChannelOn[RevealOutputChannelOn[\"Warn\"] = 2] = \"Warn\";\r\n RevealOutputChannelOn[RevealOutputChannelOn[\"Error\"] = 3] = \"Error\";\r\n RevealOutputChannelOn[RevealOutputChannelOn[\"Never\"] = 4] = \"Never\";\r\n})(RevealOutputChannelOn = exports.RevealOutputChannelOn || (exports.RevealOutputChannelOn = {}));\r\nvar State;\r\n(function (State) {\r\n State[State[\"Stopped\"] = 1] = \"Stopped\";\r\n State[State[\"Starting\"] = 3] = \"Starting\";\r\n State[State[\"Running\"] = 2] = \"Running\";\r\n})(State = exports.State || (exports.State = {}));\r\nvar ClientState;\r\n(function (ClientState) {\r\n ClientState[ClientState[\"Initial\"] = 0] = \"Initial\";\r\n ClientState[ClientState[\"Starting\"] = 1] = \"Starting\";\r\n ClientState[ClientState[\"StartFailed\"] = 2] = \"StartFailed\";\r\n ClientState[ClientState[\"Running\"] = 3] = \"Running\";\r\n ClientState[ClientState[\"Stopping\"] = 4] = \"Stopping\";\r\n ClientState[ClientState[\"Stopped\"] = 5] = \"Stopped\";\r\n})(ClientState || (ClientState = {}));\r\nconst SupportedSymbolKinds = [\r\n vscode_languageserver_protocol_1.SymbolKind.File,\r\n vscode_languageserver_protocol_1.SymbolKind.Module,\r\n vscode_languageserver_protocol_1.SymbolKind.Namespace,\r\n vscode_languageserver_protocol_1.SymbolKind.Package,\r\n vscode_languageserver_protocol_1.SymbolKind.Class,\r\n vscode_languageserver_protocol_1.SymbolKind.Method,\r\n vscode_languageserver_protocol_1.SymbolKind.Property,\r\n vscode_languageserver_protocol_1.SymbolKind.Field,\r\n vscode_languageserver_protocol_1.SymbolKind.Constructor,\r\n vscode_languageserver_protocol_1.SymbolKind.Enum,\r\n vscode_languageserver_protocol_1.SymbolKind.Interface,\r\n vscode_languageserver_protocol_1.SymbolKind.Function,\r\n vscode_languageserver_protocol_1.SymbolKind.Variable,\r\n vscode_languageserver_protocol_1.SymbolKind.Constant,\r\n vscode_languageserver_protocol_1.SymbolKind.String,\r\n vscode_languageserver_protocol_1.SymbolKind.Number,\r\n vscode_languageserver_protocol_1.SymbolKind.Boolean,\r\n vscode_languageserver_protocol_1.SymbolKind.Array,\r\n vscode_languageserver_protocol_1.SymbolKind.Object,\r\n vscode_languageserver_protocol_1.SymbolKind.Key,\r\n vscode_languageserver_protocol_1.SymbolKind.Null,\r\n vscode_languageserver_protocol_1.SymbolKind.EnumMember,\r\n vscode_languageserver_protocol_1.SymbolKind.Struct,\r\n vscode_languageserver_protocol_1.SymbolKind.Event,\r\n vscode_languageserver_protocol_1.SymbolKind.Operator,\r\n vscode_languageserver_protocol_1.SymbolKind.TypeParameter\r\n];\r\nconst SupportedCompletionItemKinds = [\r\n vscode_languageserver_protocol_1.CompletionItemKind.Text,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Method,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Function,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Constructor,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Field,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Variable,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Class,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Interface,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Module,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Property,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Unit,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Value,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Enum,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Keyword,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Snippet,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Color,\r\n vscode_languageserver_protocol_1.CompletionItemKind.File,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Reference,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Folder,\r\n vscode_languageserver_protocol_1.CompletionItemKind.EnumMember,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Constant,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Struct,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Event,\r\n vscode_languageserver_protocol_1.CompletionItemKind.Operator,\r\n vscode_languageserver_protocol_1.CompletionItemKind.TypeParameter\r\n];\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nvar DynamicFeature;\r\n(function (DynamicFeature) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && Is.func(candidate.register) && Is.func(candidate.unregister) && Is.func(candidate.dispose) && candidate.messages !== void 0;\r\n }\r\n DynamicFeature.is = is;\r\n})(DynamicFeature || (DynamicFeature = {}));\r\nclass DocumentNotifiactions {\r\n constructor(_client, _event, _type, _middleware, _createParams, _selectorFilter) {\r\n this._client = _client;\r\n this._event = _event;\r\n this._type = _type;\r\n this._middleware = _middleware;\r\n this._createParams = _createParams;\r\n this._selectorFilter = _selectorFilter;\r\n this._selectors = new Map();\r\n }\r\n static textDocumentFilter(selectors, textDocument) {\r\n for (const selector of selectors) {\r\n if (vscode_1.languages.match(selector, textDocument)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n register(_message, data) {\r\n if (!data.registerOptions.documentSelector) {\r\n return;\r\n }\r\n if (!this._listener) {\r\n this._listener = this._event(this.callback, this);\r\n }\r\n this._selectors.set(data.id, data.registerOptions.documentSelector);\r\n }\r\n callback(data) {\r\n if (!this._selectorFilter || this._selectorFilter(this._selectors.values(), data)) {\r\n if (this._middleware) {\r\n this._middleware(data, (data) => this._client.sendNotification(this._type, this._createParams(data)));\r\n }\r\n else {\r\n this._client.sendNotification(this._type, this._createParams(data));\r\n }\r\n this.notificationSent(data);\r\n }\r\n }\r\n notificationSent(_data) {\r\n }\r\n unregister(id) {\r\n this._selectors.delete(id);\r\n if (this._selectors.size === 0 && this._listener) {\r\n this._listener.dispose();\r\n this._listener = undefined;\r\n }\r\n }\r\n dispose() {\r\n this._selectors.clear();\r\n if (this._listener) {\r\n this._listener.dispose();\r\n this._listener = undefined;\r\n }\r\n }\r\n getProvider(document) {\r\n for (const selector of this._selectors.values()) {\r\n if (vscode_1.languages.match(selector, document)) {\r\n return {\r\n send: (data) => {\r\n this.callback(data);\r\n }\r\n };\r\n }\r\n }\r\n throw new Error(`No provider available for the given text document`);\r\n }\r\n}\r\nclass DidOpenTextDocumentFeature extends DocumentNotifiactions {\r\n constructor(client, _syncedDocuments) {\r\n super(client, vscode_1.workspace.onDidOpenTextDocument, vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, client.clientOptions.middleware.didOpen, (textDocument) => client.code2ProtocolConverter.asOpenTextDocumentParams(textDocument), DocumentNotifiactions.textDocumentFilter);\r\n this._syncedDocuments = _syncedDocuments;\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\r\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) {\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } });\r\n }\r\n }\r\n register(message, data) {\r\n super.register(message, data);\r\n if (!data.registerOptions.documentSelector) {\r\n return;\r\n }\r\n let documentSelector = data.registerOptions.documentSelector;\r\n vscode_1.workspace.textDocuments.forEach((textDocument) => {\r\n let uri = textDocument.uri.toString();\r\n if (this._syncedDocuments.has(uri)) {\r\n return;\r\n }\r\n if (vscode_1.languages.match(documentSelector, textDocument)) {\r\n let middleware = this._client.clientOptions.middleware;\r\n let didOpen = (textDocument) => {\r\n this._client.sendNotification(this._type, this._createParams(textDocument));\r\n };\r\n if (middleware.didOpen) {\r\n middleware.didOpen(textDocument, didOpen);\r\n }\r\n else {\r\n didOpen(textDocument);\r\n }\r\n this._syncedDocuments.set(uri, textDocument);\r\n }\r\n });\r\n }\r\n notificationSent(textDocument) {\r\n super.notificationSent(textDocument);\r\n this._syncedDocuments.set(textDocument.uri.toString(), textDocument);\r\n }\r\n}\r\nclass DidCloseTextDocumentFeature extends DocumentNotifiactions {\r\n constructor(client, _syncedDocuments) {\r\n super(client, vscode_1.workspace.onDidCloseTextDocument, vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, client.clientOptions.middleware.didClose, (textDocument) => client.code2ProtocolConverter.asCloseTextDocumentParams(textDocument), DocumentNotifiactions.textDocumentFilter);\r\n this._syncedDocuments = _syncedDocuments;\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\r\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) {\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } });\r\n }\r\n }\r\n notificationSent(textDocument) {\r\n super.notificationSent(textDocument);\r\n this._syncedDocuments.delete(textDocument.uri.toString());\r\n }\r\n unregister(id) {\r\n let selector = this._selectors.get(id);\r\n // The super call removed the selector from the map\r\n // of selectors.\r\n super.unregister(id);\r\n let selectors = this._selectors.values();\r\n this._syncedDocuments.forEach((textDocument) => {\r\n if (vscode_1.languages.match(selector, textDocument) && !this._selectorFilter(selectors, textDocument)) {\r\n let middleware = this._client.clientOptions.middleware;\r\n let didClose = (textDocument) => {\r\n this._client.sendNotification(this._type, this._createParams(textDocument));\r\n };\r\n this._syncedDocuments.delete(textDocument.uri.toString());\r\n if (middleware.didClose) {\r\n middleware.didClose(textDocument, didClose);\r\n }\r\n else {\r\n didClose(textDocument);\r\n }\r\n }\r\n });\r\n }\r\n}\r\nclass DidChangeTextDocumentFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n this._changeData = new Map();\r\n this._forcingDelivery = false;\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\r\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.change !== void 0 && textDocumentSyncOptions.change !== vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: Object.assign({}, { documentSelector: documentSelector }, { syncKind: textDocumentSyncOptions.change })\r\n });\r\n }\r\n }\r\n register(_message, data) {\r\n if (!data.registerOptions.documentSelector) {\r\n return;\r\n }\r\n if (!this._listener) {\r\n this._listener = vscode_1.workspace.onDidChangeTextDocument(this.callback, this);\r\n }\r\n this._changeData.set(data.id, {\r\n documentSelector: data.registerOptions.documentSelector,\r\n syncKind: data.registerOptions.syncKind\r\n });\r\n }\r\n callback(event) {\r\n // Text document changes are send for dirty changes as well. We don't\r\n // have dirty / undirty events in the LSP so we ignore content changes\r\n // with length zero.\r\n if (event.contentChanges.length === 0) {\r\n return;\r\n }\r\n for (const changeData of this._changeData.values()) {\r\n if (vscode_1.languages.match(changeData.documentSelector, event.document)) {\r\n let middleware = this._client.clientOptions.middleware;\r\n if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental) {\r\n let params = this._client.code2ProtocolConverter.asChangeTextDocumentParams(event);\r\n if (middleware.didChange) {\r\n middleware.didChange(event, () => this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params));\r\n }\r\n else {\r\n this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\r\n }\r\n }\r\n else if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\r\n let didChange = (event) => {\r\n if (this._changeDelayer) {\r\n if (this._changeDelayer.uri !== event.document.uri.toString()) {\r\n // Use this force delivery to track boolean state. Otherwise we might call two times.\r\n this.forceDelivery();\r\n this._changeDelayer.uri = event.document.uri.toString();\r\n }\r\n this._changeDelayer.delayer.trigger(() => {\r\n this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, this._client.code2ProtocolConverter.asChangeTextDocumentParams(event.document));\r\n });\r\n }\r\n else {\r\n this._changeDelayer = {\r\n uri: event.document.uri.toString(),\r\n delayer: new async_1.Delayer(200)\r\n };\r\n this._changeDelayer.delayer.trigger(() => {\r\n this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, this._client.code2ProtocolConverter.asChangeTextDocumentParams(event.document));\r\n }, -1);\r\n }\r\n };\r\n if (middleware.didChange) {\r\n middleware.didChange(event, didChange);\r\n }\r\n else {\r\n didChange(event);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n unregister(id) {\r\n this._changeData.delete(id);\r\n if (this._changeData.size === 0 && this._listener) {\r\n this._listener.dispose();\r\n this._listener = undefined;\r\n }\r\n }\r\n dispose() {\r\n this._changeDelayer = undefined;\r\n this._forcingDelivery = false;\r\n this._changeData.clear();\r\n if (this._listener) {\r\n this._listener.dispose();\r\n this._listener = undefined;\r\n }\r\n }\r\n forceDelivery() {\r\n if (this._forcingDelivery || !this._changeDelayer) {\r\n return;\r\n }\r\n try {\r\n this._forcingDelivery = true;\r\n this._changeDelayer.delayer.forceDelivery();\r\n }\r\n finally {\r\n this._forcingDelivery = false;\r\n }\r\n }\r\n getProvider(document) {\r\n for (const changeData of this._changeData.values()) {\r\n if (vscode_1.languages.match(changeData.documentSelector, document)) {\r\n return {\r\n send: (event) => {\r\n this.callback(event);\r\n }\r\n };\r\n }\r\n }\r\n throw new Error(`No provider available for the given text document`);\r\n }\r\n}\r\nclass WillSaveFeature extends DocumentNotifiactions {\r\n constructor(client) {\r\n super(client, vscode_1.workspace.onWillSaveTextDocument, vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type, client.clientOptions.middleware.willSave, (willSaveEvent) => client.code2ProtocolConverter.asWillSaveTextDocumentParams(willSaveEvent), (selectors, willSaveEvent) => DocumentNotifiactions.textDocumentFilter(selectors, willSaveEvent.document));\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n let value = ensure(ensure(capabilities, 'textDocument'), 'synchronization');\r\n value.willSave = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\r\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSave) {\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: { documentSelector: documentSelector }\r\n });\r\n }\r\n }\r\n}\r\nclass WillSaveWaitUntilFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n this._selectors = new Map();\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n let value = ensure(ensure(capabilities, 'textDocument'), 'synchronization');\r\n value.willSaveWaitUntil = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\r\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSaveWaitUntil) {\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: { documentSelector: documentSelector }\r\n });\r\n }\r\n }\r\n register(_message, data) {\r\n if (!data.registerOptions.documentSelector) {\r\n return;\r\n }\r\n if (!this._listener) {\r\n this._listener = vscode_1.workspace.onWillSaveTextDocument(this.callback, this);\r\n }\r\n this._selectors.set(data.id, data.registerOptions.documentSelector);\r\n }\r\n callback(event) {\r\n if (DocumentNotifiactions.textDocumentFilter(this._selectors.values(), event.document)) {\r\n let middleware = this._client.clientOptions.middleware;\r\n let willSaveWaitUntil = (event) => {\r\n return this._client.sendRequest(vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type, this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(event)).then((edits) => {\r\n let vEdits = this._client.protocol2CodeConverter.asTextEdits(edits);\r\n return vEdits === void 0 ? [] : vEdits;\r\n });\r\n };\r\n event.waitUntil(middleware.willSaveWaitUntil\r\n ? middleware.willSaveWaitUntil(event, willSaveWaitUntil)\r\n : willSaveWaitUntil(event));\r\n }\r\n }\r\n unregister(id) {\r\n this._selectors.delete(id);\r\n if (this._selectors.size === 0 && this._listener) {\r\n this._listener.dispose();\r\n this._listener = undefined;\r\n }\r\n }\r\n dispose() {\r\n this._selectors.clear();\r\n if (this._listener) {\r\n this._listener.dispose();\r\n this._listener = undefined;\r\n }\r\n }\r\n}\r\nclass DidSaveTextDocumentFeature extends DocumentNotifiactions {\r\n constructor(client) {\r\n super(client, vscode_1.workspace.onDidSaveTextDocument, vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type, client.clientOptions.middleware.didSave, (textDocument) => client.code2ProtocolConverter.asSaveTextDocumentParams(textDocument, this._includeText), DocumentNotifiactions.textDocumentFilter);\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'textDocument'), 'synchronization').didSave = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\r\n if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.save) {\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: Object.assign({}, { documentSelector: documentSelector }, { includeText: !!textDocumentSyncOptions.save.includeText })\r\n });\r\n }\r\n }\r\n register(method, data) {\r\n this._includeText = !!data.registerOptions.includeText;\r\n super.register(method, data);\r\n }\r\n}\r\nclass FileSystemWatcherFeature {\r\n constructor(_client, _notifyFileEvent) {\r\n this._client = _client;\r\n this._notifyFileEvent = _notifyFileEvent;\r\n this._watchers = new Map();\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'workspace'), 'didChangeWatchedFiles').dynamicRegistration = true;\r\n }\r\n initialize(_capabilities, _documentSelector) {\r\n }\r\n register(_method, data) {\r\n if (!Array.isArray(data.registerOptions.watchers)) {\r\n return;\r\n }\r\n let disposeables = [];\r\n for (let watcher of data.registerOptions.watchers) {\r\n if (!Is.string(watcher.globPattern)) {\r\n continue;\r\n }\r\n let watchCreate = true, watchChange = true, watchDelete = true;\r\n if (watcher.kind !== void 0 && watcher.kind !== null) {\r\n watchCreate = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Create) !== 0;\r\n watchChange = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Change) !== 0;\r\n watchDelete = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Delete) !== 0;\r\n }\r\n let fileSystemWatcher = vscode_1.workspace.createFileSystemWatcher(watcher.globPattern, !watchCreate, !watchChange, !watchDelete);\r\n this.hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete);\r\n disposeables.push(fileSystemWatcher);\r\n }\r\n this._watchers.set(data.id, disposeables);\r\n }\r\n registerRaw(id, fileSystemWatchers) {\r\n let disposeables = [];\r\n for (let fileSystemWatcher of fileSystemWatchers) {\r\n this.hookListeners(fileSystemWatcher, true, true, true, disposeables);\r\n }\r\n this._watchers.set(id, disposeables);\r\n }\r\n hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete, listeners) {\r\n if (watchCreate) {\r\n fileSystemWatcher.onDidCreate((resource) => this._notifyFileEvent({\r\n uri: this._client.code2ProtocolConverter.asUri(resource),\r\n type: vscode_languageserver_protocol_1.FileChangeType.Created\r\n }), null, listeners);\r\n }\r\n if (watchChange) {\r\n fileSystemWatcher.onDidChange((resource) => this._notifyFileEvent({\r\n uri: this._client.code2ProtocolConverter.asUri(resource),\r\n type: vscode_languageserver_protocol_1.FileChangeType.Changed\r\n }), null, listeners);\r\n }\r\n if (watchDelete) {\r\n fileSystemWatcher.onDidDelete((resource) => this._notifyFileEvent({\r\n uri: this._client.code2ProtocolConverter.asUri(resource),\r\n type: vscode_languageserver_protocol_1.FileChangeType.Deleted\r\n }), null, listeners);\r\n }\r\n }\r\n unregister(id) {\r\n let disposeables = this._watchers.get(id);\r\n if (disposeables) {\r\n for (let disposable of disposeables) {\r\n disposable.dispose();\r\n }\r\n }\r\n }\r\n dispose() {\r\n this._watchers.forEach((disposeables) => {\r\n for (let disposable of disposeables) {\r\n disposable.dispose();\r\n }\r\n });\r\n this._watchers.clear();\r\n }\r\n}\r\nclass TextDocumentFeature {\r\n constructor(_client, _message) {\r\n this._client = _client;\r\n this._message = _message;\r\n this._registrations = new Map();\r\n }\r\n get messages() {\r\n return this._message;\r\n }\r\n register(message, data) {\r\n if (message.method !== this.messages.method) {\r\n throw new Error(`Register called on wrong feature. Requested ${message.method} but reached feature ${this.messages.method}`);\r\n }\r\n if (!data.registerOptions.documentSelector) {\r\n return;\r\n }\r\n let registration = this.registerLanguageProvider(data.registerOptions);\r\n this._registrations.set(data.id, { disposable: registration[0], data, provider: registration[1] });\r\n }\r\n unregister(id) {\r\n let registration = this._registrations.get(id);\r\n if (registration !== undefined) {\r\n registration.disposable.dispose();\r\n }\r\n }\r\n dispose() {\r\n this._registrations.forEach((value) => {\r\n value.disposable.dispose();\r\n });\r\n this._registrations.clear();\r\n }\r\n getRegistration(documentSelector, capability) {\r\n if (!capability) {\r\n return [undefined, undefined];\r\n }\r\n else if (vscode_languageserver_protocol_1.TextDocumentRegistrationOptions.is(capability)) {\r\n const id = vscode_languageserver_protocol_1.StaticRegistrationOptions.hasId(capability) ? capability.id : UUID.generateUuid();\r\n const selector = capability.documentSelector || documentSelector;\r\n if (selector) {\r\n return [id, Object.assign({}, capability, { documentSelector: selector })];\r\n }\r\n }\r\n else if (Is.boolean(capability) && capability === true || vscode_languageserver_protocol_1.WorkDoneProgressOptions.is(capability)) {\r\n if (!documentSelector) {\r\n return [undefined, undefined];\r\n }\r\n let options = (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector }));\r\n return [UUID.generateUuid(), options];\r\n }\r\n return [undefined, undefined];\r\n }\r\n getRegistrationOptions(documentSelector, capability) {\r\n if (!documentSelector || !capability) {\r\n return undefined;\r\n }\r\n return (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector }));\r\n }\r\n getProvider(textDocument) {\r\n for (const registration of this._registrations.values()) {\r\n let selector = registration.data.registerOptions.documentSelector;\r\n if (selector !== null && vscode_1.languages.match(selector, textDocument)) {\r\n return registration.provider;\r\n }\r\n }\r\n throw new Error(`The feature has no registration for the provided text document ${textDocument.uri.toString()}`);\r\n }\r\n}\r\nexports.TextDocumentFeature = TextDocumentFeature;\r\nclass WorkspaceFeature {\r\n constructor(_client, _message) {\r\n this._client = _client;\r\n this._message = _message;\r\n this._registrations = new Map();\r\n }\r\n get messages() {\r\n return this._message;\r\n }\r\n register(message, data) {\r\n if (message.method !== this.messages.method) {\r\n throw new Error(`Register called on wron feature. Requested ${message.method} but reached feature ${this.messages.method}`);\r\n }\r\n const registration = this.registerLanguageProvider(data.registerOptions);\r\n this._registrations.set(data.id, { disposable: registration[0], provider: registration[1] });\r\n }\r\n unregister(id) {\r\n let registration = this._registrations.get(id);\r\n if (registration !== undefined) {\r\n registration.disposable.dispose();\r\n }\r\n }\r\n dispose() {\r\n this._registrations.forEach((registration) => {\r\n registration.disposable.dispose();\r\n });\r\n this._registrations.clear();\r\n }\r\n getProviders() {\r\n const result = [];\r\n for (const registration of this._registrations.values()) {\r\n result.push(registration.provider);\r\n }\r\n return result;\r\n }\r\n}\r\nclass CompletionItemFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.CompletionRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let completion = ensure(ensure(capabilites, 'textDocument'), 'completion');\r\n completion.dynamicRegistration = true;\r\n completion.contextSupport = true;\r\n completion.completionItem = {\r\n snippetSupport: true,\r\n commitCharactersSupport: true,\r\n documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText],\r\n deprecatedSupport: true,\r\n preselectSupport: true,\r\n tagSupport: { valueSet: [vscode_languageserver_protocol_1.CompletionItemTag.Deprecated] }\r\n };\r\n completion.completionItemKind = { valueSet: SupportedCompletionItemKinds };\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.completionProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: options\r\n });\r\n }\r\n registerLanguageProvider(options) {\r\n const triggerCharacters = options.triggerCharacters || [];\r\n const provider = {\r\n provideCompletionItems: (document, position, token, context) => {\r\n const client = this._client;\r\n const middleware = this._client.clientOptions.middleware;\r\n const provideCompletionItems = (document, position, context, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.CompletionRequest.type, client.code2ProtocolConverter.asCompletionParams(document, position, context), token).then(client.protocol2CodeConverter.asCompletionResult, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.CompletionRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n return middleware.provideCompletionItem\r\n ? middleware.provideCompletionItem(document, position, context, token, provideCompletionItems)\r\n : provideCompletionItems(document, position, context, token);\r\n },\r\n resolveCompletionItem: options.resolveProvider\r\n ? (item, token) => {\r\n const client = this._client;\r\n const middleware = this._client.clientOptions.middleware;\r\n const resolveCompletionItem = (item, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, client.code2ProtocolConverter.asCompletionItem(item), token).then(client.protocol2CodeConverter.asCompletionItem, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, error);\r\n return Promise.resolve(item);\r\n });\r\n };\r\n return middleware.resolveCompletionItem\r\n ? middleware.resolveCompletionItem(item, token, resolveCompletionItem)\r\n : resolveCompletionItem(item, token);\r\n }\r\n : undefined\r\n };\r\n return [vscode_1.languages.registerCompletionItemProvider(options.documentSelector, provider, ...triggerCharacters), provider];\r\n }\r\n}\r\nclass HoverFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.HoverRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n const hoverCapability = (ensure(ensure(capabilites, 'textDocument'), 'hover'));\r\n hoverCapability.dynamicRegistration = true;\r\n hoverCapability.contentFormat = [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText];\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.hoverProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: options\r\n });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideHover: (document, position, token) => {\r\n const client = this._client;\r\n const provideHover = (document, position, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.HoverRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asHover, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.HoverRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideHover\r\n ? middleware.provideHover(document, position, token, provideHover)\r\n : provideHover(document, position, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerHoverProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass SignatureHelpFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.SignatureHelpRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let config = ensure(ensure(capabilites, 'textDocument'), 'signatureHelp');\r\n config.dynamicRegistration = true;\r\n config.signatureInformation = { documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText] };\r\n config.signatureInformation.parameterInformation = { labelOffsetSupport: true };\r\n config.contextSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.signatureHelpProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: options\r\n });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideSignatureHelp: (document, position, token, context) => {\r\n const client = this._client;\r\n const providerSignatureHelp = (document, position, context, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, client.code2ProtocolConverter.asSignatureHelpParams(document, position, context), token).then(client.protocol2CodeConverter.asSignatureHelp, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideSignatureHelp\r\n ? middleware.provideSignatureHelp(document, position, context, token, providerSignatureHelp)\r\n : providerSignatureHelp(document, position, context, token);\r\n }\r\n };\r\n let disposable;\r\n if (options.retriggerCharacters === undefined) {\r\n const triggerCharacters = options.triggerCharacters || [];\r\n disposable = vscode_1.languages.registerSignatureHelpProvider(options.documentSelector, provider, ...triggerCharacters);\r\n }\r\n else {\r\n const metaData = {\r\n triggerCharacters: options.triggerCharacters || [],\r\n retriggerCharacters: options.retriggerCharacters || []\r\n };\r\n disposable = vscode_1.languages.registerSignatureHelpProvider(options.documentSelector, provider, metaData);\r\n }\r\n return [disposable, provider];\r\n }\r\n}\r\nclass DefinitionFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DefinitionRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let definitionSupport = ensure(ensure(capabilites, 'textDocument'), 'definition');\r\n definitionSupport.dynamicRegistration = true;\r\n definitionSupport.linkSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.definitionProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDefinition: (document, position, token) => {\r\n const client = this._client;\r\n const provideDefinition = (document, position, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDefinitionResult, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDefinition\r\n ? middleware.provideDefinition(document, position, token, provideDefinition)\r\n : provideDefinition(document, position, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerDefinitionProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass ReferencesFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.ReferencesRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'references').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.referencesProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideReferences: (document, position, options, token) => {\r\n const client = this._client;\r\n const _providerReferences = (document, position, options, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, client.code2ProtocolConverter.asReferenceParams(document, position, options), token).then(client.protocol2CodeConverter.asReferences, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideReferences\r\n ? middleware.provideReferences(document, position, options, token, _providerReferences)\r\n : _providerReferences(document, position, options, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerReferenceProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass DocumentHighlightFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentHighlightRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'documentHighlight').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentHighlightProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDocumentHighlights: (document, position, token) => {\r\n const client = this._client;\r\n const _provideDocumentHighlights = (document, position, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDocumentHighlights, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDocumentHighlights\r\n ? middleware.provideDocumentHighlights(document, position, token, _provideDocumentHighlights)\r\n : _provideDocumentHighlights(document, position, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerDocumentHighlightProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass DocumentSymbolFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentSymbolRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let symbolCapabilities = ensure(ensure(capabilites, 'textDocument'), 'documentSymbol');\r\n symbolCapabilities.dynamicRegistration = true;\r\n symbolCapabilities.symbolKind = {\r\n valueSet: SupportedSymbolKinds\r\n };\r\n symbolCapabilities.hierarchicalDocumentSymbolSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentSymbolProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDocumentSymbols: (document, token) => {\r\n const client = this._client;\r\n const _provideDocumentSymbols = (document, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, client.code2ProtocolConverter.asDocumentSymbolParams(document), token).then((data) => {\r\n if (data === null) {\r\n return undefined;\r\n }\r\n if (data.length === 0) {\r\n return [];\r\n }\r\n else {\r\n let element = data[0];\r\n if (vscode_languageserver_protocol_1.DocumentSymbol.is(element)) {\r\n return client.protocol2CodeConverter.asDocumentSymbols(data);\r\n }\r\n else {\r\n return client.protocol2CodeConverter.asSymbolInformations(data);\r\n }\r\n }\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDocumentSymbols\r\n ? middleware.provideDocumentSymbols(document, token, _provideDocumentSymbols)\r\n : _provideDocumentSymbols(document, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerDocumentSymbolProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass WorkspaceSymbolFeature extends WorkspaceFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let symbolCapabilities = ensure(ensure(capabilites, 'workspace'), 'symbol');\r\n symbolCapabilities.dynamicRegistration = true;\r\n symbolCapabilities.symbolKind = {\r\n valueSet: SupportedSymbolKinds\r\n };\r\n }\r\n initialize(capabilities) {\r\n if (!capabilities.workspaceSymbolProvider) {\r\n return;\r\n }\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: capabilities.workspaceSymbolProvider === true ? { workDoneProgress: false } : capabilities.workspaceSymbolProvider\r\n });\r\n }\r\n registerLanguageProvider(_options) {\r\n const provider = {\r\n provideWorkspaceSymbols: (query, token) => {\r\n const client = this._client;\r\n const provideWorkspaceSymbols = (query, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, { query }, token).then(client.protocol2CodeConverter.asSymbolInformations, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideWorkspaceSymbols\r\n ? middleware.provideWorkspaceSymbols(query, token, provideWorkspaceSymbols)\r\n : provideWorkspaceSymbols(query, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerWorkspaceSymbolProvider(provider), provider];\r\n }\r\n}\r\nclass CodeActionFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.CodeActionRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n const cap = ensure(ensure(capabilites, 'textDocument'), 'codeAction');\r\n cap.dynamicRegistration = true;\r\n cap.isPreferredSupport = true;\r\n cap.codeActionLiteralSupport = {\r\n codeActionKind: {\r\n valueSet: [\r\n vscode_languageserver_protocol_1.CodeActionKind.Empty,\r\n vscode_languageserver_protocol_1.CodeActionKind.QuickFix,\r\n vscode_languageserver_protocol_1.CodeActionKind.Refactor,\r\n vscode_languageserver_protocol_1.CodeActionKind.RefactorExtract,\r\n vscode_languageserver_protocol_1.CodeActionKind.RefactorInline,\r\n vscode_languageserver_protocol_1.CodeActionKind.RefactorRewrite,\r\n vscode_languageserver_protocol_1.CodeActionKind.Source,\r\n vscode_languageserver_protocol_1.CodeActionKind.SourceOrganizeImports\r\n ]\r\n }\r\n };\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.codeActionProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideCodeActions: (document, range, context, token) => {\r\n const client = this._client;\r\n const _provideCodeActions = (document, range, context, token) => {\r\n const params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n range: client.code2ProtocolConverter.asRange(range),\r\n context: client.code2ProtocolConverter.asCodeActionContext(context)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, params, token).then((values) => {\r\n if (values === null) {\r\n return undefined;\r\n }\r\n const result = [];\r\n for (let item of values) {\r\n if (vscode_languageserver_protocol_1.Command.is(item)) {\r\n result.push(client.protocol2CodeConverter.asCommand(item));\r\n }\r\n else {\r\n result.push(client.protocol2CodeConverter.asCodeAction(item));\r\n }\r\n }\r\n return result;\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideCodeActions\r\n ? middleware.provideCodeActions(document, range, context, token, _provideCodeActions)\r\n : _provideCodeActions(document, range, context, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerCodeActionsProvider(options.documentSelector, provider, (options.codeActionKinds\r\n ? { providedCodeActionKinds: this._client.protocol2CodeConverter.asCodeActionKinds(options.codeActionKinds) }\r\n : undefined)), provider];\r\n }\r\n}\r\nclass CodeLensFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.CodeLensRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'codeLens').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.codeLensProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideCodeLenses: (document, token) => {\r\n const client = this._client;\r\n const provideCodeLenses = (document, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, client.code2ProtocolConverter.asCodeLensParams(document), token).then(client.protocol2CodeConverter.asCodeLenses, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideCodeLenses\r\n ? middleware.provideCodeLenses(document, token, provideCodeLenses)\r\n : provideCodeLenses(document, token);\r\n },\r\n resolveCodeLens: (options.resolveProvider)\r\n ? (codeLens, token) => {\r\n const client = this._client;\r\n const resolveCodeLens = (codeLens, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, client.code2ProtocolConverter.asCodeLens(codeLens), token).then(client.protocol2CodeConverter.asCodeLens, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, error);\r\n return codeLens;\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.resolveCodeLens\r\n ? middleware.resolveCodeLens(codeLens, token, resolveCodeLens)\r\n : resolveCodeLens(codeLens, token);\r\n }\r\n : undefined\r\n };\r\n return [vscode_1.languages.registerCodeLensProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass DocumentFormattingFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentFormattingRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'formatting').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentFormattingProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDocumentFormattingEdits: (document, options, token) => {\r\n const client = this._client;\r\n const provideDocumentFormattingEdits = (document, options, token) => {\r\n const params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n options: client.code2ProtocolConverter.asFormattingOptions(options)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, params, token).then(client.protocol2CodeConverter.asTextEdits, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDocumentFormattingEdits\r\n ? middleware.provideDocumentFormattingEdits(document, options, token, provideDocumentFormattingEdits)\r\n : provideDocumentFormattingEdits(document, options, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerDocumentFormattingEditProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass DocumentRangeFormattingFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'rangeFormatting').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentRangeFormattingProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDocumentRangeFormattingEdits: (document, range, options, token) => {\r\n const client = this._client;\r\n const provideDocumentRangeFormattingEdits = (document, range, options, token) => {\r\n let params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n range: client.code2ProtocolConverter.asRange(range),\r\n options: client.code2ProtocolConverter.asFormattingOptions(options)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, params, token).then(client.protocol2CodeConverter.asTextEdits, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n let middleware = client.clientOptions.middleware;\r\n return middleware.provideDocumentRangeFormattingEdits\r\n ? middleware.provideDocumentRangeFormattingEdits(document, range, options, token, provideDocumentRangeFormattingEdits)\r\n : provideDocumentRangeFormattingEdits(document, range, options, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerDocumentRangeFormattingEditProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass DocumentOnTypeFormattingFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'onTypeFormatting').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentOnTypeFormattingProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideOnTypeFormattingEdits: (document, position, ch, options, token) => {\r\n const client = this._client;\r\n const provideOnTypeFormattingEdits = (document, position, ch, options, token) => {\r\n let params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n position: client.code2ProtocolConverter.asPosition(position),\r\n ch: ch,\r\n options: client.code2ProtocolConverter.asFormattingOptions(options)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, params, token).then(client.protocol2CodeConverter.asTextEdits, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideOnTypeFormattingEdits\r\n ? middleware.provideOnTypeFormattingEdits(document, position, ch, options, token, provideOnTypeFormattingEdits)\r\n : provideOnTypeFormattingEdits(document, position, ch, options, token);\r\n }\r\n };\r\n const moreTriggerCharacter = options.moreTriggerCharacter || [];\r\n return [vscode_1.languages.registerOnTypeFormattingEditProvider(options.documentSelector, provider, options.firstTriggerCharacter, ...moreTriggerCharacter), provider];\r\n }\r\n}\r\nclass RenameFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.RenameRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let rename = ensure(ensure(capabilites, 'textDocument'), 'rename');\r\n rename.dynamicRegistration = true;\r\n rename.prepareSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.renameProvider);\r\n if (!options) {\r\n return;\r\n }\r\n if (Is.boolean(capabilities.renameProvider)) {\r\n options.prepareProvider = false;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideRenameEdits: (document, position, newName, token) => {\r\n const client = this._client;\r\n const provideRenameEdits = (document, position, newName, token) => {\r\n let params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n position: client.code2ProtocolConverter.asPosition(position),\r\n newName: newName\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.RenameRequest.type, params, token).then(client.protocol2CodeConverter.asWorkspaceEdit, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.RenameRequest.type, error);\r\n return Promise.reject(new Error(error.message));\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideRenameEdits\r\n ? middleware.provideRenameEdits(document, position, newName, token, provideRenameEdits)\r\n : provideRenameEdits(document, position, newName, token);\r\n },\r\n prepareRename: options.prepareProvider\r\n ? (document, position, token) => {\r\n const client = this._client;\r\n const prepareRename = (document, position, token) => {\r\n let params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n position: client.code2ProtocolConverter.asPosition(position),\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.PrepareRenameRequest.type, params, token).then((result) => {\r\n if (vscode_languageserver_protocol_1.Range.is(result)) {\r\n return client.protocol2CodeConverter.asRange(result);\r\n }\r\n else if (result && vscode_languageserver_protocol_1.Range.is(result.range)) {\r\n return {\r\n range: client.protocol2CodeConverter.asRange(result.range),\r\n placeholder: result.placeholder\r\n };\r\n }\r\n // To cancel the rename vscode API expects a rejected promise.\r\n return Promise.reject(new Error(`The element can't be renamed.`));\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.PrepareRenameRequest.type, error);\r\n return Promise.reject(new Error(error.message));\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.prepareRename\r\n ? middleware.prepareRename(document, position, token, prepareRename)\r\n : prepareRename(document, position, token);\r\n }\r\n : undefined\r\n };\r\n return [vscode_1.languages.registerRenameProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass DocumentLinkFeature extends TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentLinkRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n const documentLinkCapabilities = ensure(ensure(capabilites, 'textDocument'), 'documentLink');\r\n documentLinkCapabilities.dynamicRegistration = true;\r\n documentLinkCapabilities.tooltipSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const options = this.getRegistrationOptions(documentSelector, capabilities.documentLinkProvider);\r\n if (!options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: UUID.generateUuid(), registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDocumentLinks: (document, token) => {\r\n const client = this._client;\r\n const provideDocumentLinks = (document, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, client.code2ProtocolConverter.asDocumentLinkParams(document), token).then(client.protocol2CodeConverter.asDocumentLinks, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, error);\r\n return Promise.resolve([]);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDocumentLinks\r\n ? middleware.provideDocumentLinks(document, token, provideDocumentLinks)\r\n : provideDocumentLinks(document, token);\r\n },\r\n resolveDocumentLink: options.resolveProvider\r\n ? (link, token) => {\r\n const client = this._client;\r\n let resolveDocumentLink = (link, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, client.code2ProtocolConverter.asDocumentLink(link), token).then(client.protocol2CodeConverter.asDocumentLink, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, error);\r\n return Promise.resolve(link);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.resolveDocumentLink\r\n ? middleware.resolveDocumentLink(link, token, resolveDocumentLink)\r\n : resolveDocumentLink(link, token);\r\n }\r\n : undefined\r\n };\r\n return [vscode_1.languages.registerDocumentLinkProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nclass ConfigurationFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n this._listeners = new Map();\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'workspace'), 'didChangeConfiguration').dynamicRegistration = true;\r\n }\r\n initialize() {\r\n let section = this._client.clientOptions.synchronize.configurationSection;\r\n if (section !== void 0) {\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: {\r\n section: section\r\n }\r\n });\r\n }\r\n }\r\n register(_message, data) {\r\n let disposable = vscode_1.workspace.onDidChangeConfiguration((event) => {\r\n this.onDidChangeConfiguration(data.registerOptions.section, event);\r\n });\r\n this._listeners.set(data.id, disposable);\r\n if (data.registerOptions.section !== void 0) {\r\n this.onDidChangeConfiguration(data.registerOptions.section, undefined);\r\n }\r\n }\r\n unregister(id) {\r\n let disposable = this._listeners.get(id);\r\n if (disposable) {\r\n this._listeners.delete(id);\r\n disposable.dispose();\r\n }\r\n }\r\n dispose() {\r\n for (let disposable of this._listeners.values()) {\r\n disposable.dispose();\r\n }\r\n this._listeners.clear();\r\n }\r\n onDidChangeConfiguration(configurationSection, event) {\r\n let sections;\r\n if (Is.string(configurationSection)) {\r\n sections = [configurationSection];\r\n }\r\n else {\r\n sections = configurationSection;\r\n }\r\n if (sections !== void 0 && event !== void 0) {\r\n let affected = sections.some((section) => event.affectsConfiguration(section));\r\n if (!affected) {\r\n return;\r\n }\r\n }\r\n let didChangeConfiguration = (sections) => {\r\n if (sections === void 0) {\r\n this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: null });\r\n return;\r\n }\r\n this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: this.extractSettingsInformation(sections) });\r\n };\r\n let middleware = this.getMiddleware();\r\n middleware\r\n ? middleware(sections, didChangeConfiguration)\r\n : didChangeConfiguration(sections);\r\n }\r\n extractSettingsInformation(keys) {\r\n function ensurePath(config, path) {\r\n let current = config;\r\n for (let i = 0; i < path.length - 1; i++) {\r\n let obj = current[path[i]];\r\n if (!obj) {\r\n obj = Object.create(null);\r\n current[path[i]] = obj;\r\n }\r\n current = obj;\r\n }\r\n return current;\r\n }\r\n let resource = this._client.clientOptions.workspaceFolder\r\n ? this._client.clientOptions.workspaceFolder.uri\r\n : undefined;\r\n let result = Object.create(null);\r\n for (let i = 0; i < keys.length; i++) {\r\n let key = keys[i];\r\n let index = key.indexOf('.');\r\n let config = null;\r\n if (index >= 0) {\r\n config = vscode_1.workspace.getConfiguration(key.substr(0, index), resource).get(key.substr(index + 1));\r\n }\r\n else {\r\n config = vscode_1.workspace.getConfiguration(key, resource);\r\n }\r\n if (config) {\r\n let path = keys[i].split('.');\r\n ensurePath(result, path)[path[path.length - 1]] = config;\r\n }\r\n }\r\n return result;\r\n }\r\n getMiddleware() {\r\n let middleware = this._client.clientOptions.middleware;\r\n if (middleware.workspace && middleware.workspace.didChangeConfiguration) {\r\n return middleware.workspace.didChangeConfiguration;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n}\r\nclass ExecuteCommandFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n this._commands = new Map();\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.ExecuteCommandRequest.type;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(ensure(capabilities, 'workspace'), 'executeCommand').dynamicRegistration = true;\r\n }\r\n initialize(capabilities) {\r\n if (!capabilities.executeCommandProvider) {\r\n return;\r\n }\r\n this.register(this.messages, {\r\n id: UUID.generateUuid(),\r\n registerOptions: Object.assign({}, capabilities.executeCommandProvider)\r\n });\r\n }\r\n register(_message, data) {\r\n const client = this._client;\r\n const middleware = client.clientOptions.middleware;\r\n const executeCommand = (command, args) => {\r\n let params = {\r\n command,\r\n arguments: args\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, params).then(undefined, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, error);\r\n });\r\n };\r\n if (data.registerOptions.commands) {\r\n const disposeables = [];\r\n for (const command of data.registerOptions.commands) {\r\n disposeables.push(vscode_1.commands.registerCommand(command, (...args) => {\r\n return middleware.executeCommand\r\n ? middleware.executeCommand(command, args, executeCommand)\r\n : executeCommand(command, args);\r\n }));\r\n }\r\n this._commands.set(data.id, disposeables);\r\n }\r\n }\r\n unregister(id) {\r\n let disposeables = this._commands.get(id);\r\n if (disposeables) {\r\n disposeables.forEach(disposable => disposable.dispose());\r\n }\r\n }\r\n dispose() {\r\n this._commands.forEach((value) => {\r\n value.forEach(disposable => disposable.dispose());\r\n });\r\n this._commands.clear();\r\n }\r\n}\r\nvar MessageTransports;\r\n(function (MessageTransports) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && vscode_languageserver_protocol_1.MessageReader.is(value.reader) && vscode_languageserver_protocol_1.MessageWriter.is(value.writer);\r\n }\r\n MessageTransports.is = is;\r\n})(MessageTransports = exports.MessageTransports || (exports.MessageTransports = {}));\r\nclass OnReady {\r\n constructor(_resolve, _reject) {\r\n this._resolve = _resolve;\r\n this._reject = _reject;\r\n this._used = false;\r\n }\r\n get isUsed() {\r\n return this._used;\r\n }\r\n resolve() {\r\n this._used = true;\r\n this._resolve();\r\n }\r\n reject(error) {\r\n this._used = true;\r\n this._reject(error);\r\n }\r\n}\r\nclass BaseLanguageClient {\r\n constructor(id, name, clientOptions) {\r\n this._traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\r\n this._features = [];\r\n this._method2Message = new Map();\r\n this._dynamicFeatures = new Map();\r\n this._id = id;\r\n this._name = name;\r\n clientOptions = clientOptions || {};\r\n this._clientOptions = {\r\n documentSelector: clientOptions.documentSelector || [],\r\n synchronize: clientOptions.synchronize || {},\r\n diagnosticCollectionName: clientOptions.diagnosticCollectionName,\r\n outputChannelName: clientOptions.outputChannelName || this._name,\r\n revealOutputChannelOn: clientOptions.revealOutputChannelOn || RevealOutputChannelOn.Error,\r\n stdioEncoding: clientOptions.stdioEncoding || 'utf8',\r\n initializationOptions: clientOptions.initializationOptions,\r\n initializationFailedHandler: clientOptions.initializationFailedHandler,\r\n progressOnInitialization: !!clientOptions.progressOnInitialization,\r\n errorHandler: clientOptions.errorHandler || new DefaultErrorHandler(this._name),\r\n middleware: clientOptions.middleware || {},\r\n uriConverters: clientOptions.uriConverters,\r\n workspaceFolder: clientOptions.workspaceFolder\r\n };\r\n this._clientOptions.synchronize = this._clientOptions.synchronize || {};\r\n this.state = ClientState.Initial;\r\n this._connectionPromise = undefined;\r\n this._resolvedConnection = undefined;\r\n this._initializeResult = undefined;\r\n if (clientOptions.outputChannel) {\r\n this._outputChannel = clientOptions.outputChannel;\r\n this._disposeOutputChannel = false;\r\n }\r\n else {\r\n this._outputChannel = undefined;\r\n this._disposeOutputChannel = true;\r\n }\r\n this._traceOutputChannel = clientOptions.traceOutputChannel;\r\n this._listeners = undefined;\r\n this._providers = undefined;\r\n this._diagnostics = undefined;\r\n this._fileEvents = [];\r\n this._fileEventDelayer = new async_1.Delayer(250);\r\n this._onReady = new Promise((resolve, reject) => {\r\n this._onReadyCallbacks = new OnReady(resolve, reject);\r\n });\r\n this._onStop = undefined;\r\n this._telemetryEmitter = new vscode_languageserver_protocol_1.Emitter();\r\n this._stateChangeEmitter = new vscode_languageserver_protocol_1.Emitter();\r\n this._tracer = {\r\n log: (messageOrDataObject, data) => {\r\n if (Is.string(messageOrDataObject)) {\r\n this.logTrace(messageOrDataObject, data);\r\n }\r\n else {\r\n this.logObjectTrace(messageOrDataObject);\r\n }\r\n },\r\n };\r\n this._c2p = c2p.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.code2Protocol : undefined);\r\n this._p2c = p2c.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.protocol2Code : undefined);\r\n this._syncedDocuments = new Map();\r\n this.registerBuiltinFeatures();\r\n }\r\n get state() {\r\n return this._state;\r\n }\r\n set state(value) {\r\n let oldState = this.getPublicState();\r\n this._state = value;\r\n let newState = this.getPublicState();\r\n if (newState !== oldState) {\r\n this._stateChangeEmitter.fire({ oldState, newState });\r\n }\r\n }\r\n getPublicState() {\r\n if (this.state === ClientState.Running) {\r\n return State.Running;\r\n }\r\n else if (this.state === ClientState.Starting) {\r\n return State.Starting;\r\n }\r\n else {\r\n return State.Stopped;\r\n }\r\n }\r\n get initializeResult() {\r\n return this._initializeResult;\r\n }\r\n sendRequest(type, ...params) {\r\n if (!this.isConnectionActive()) {\r\n throw new Error('Language client is not ready yet');\r\n }\r\n this.forceDocumentSync();\r\n try {\r\n return this._resolvedConnection.sendRequest(type, ...params);\r\n }\r\n catch (error) {\r\n this.error(`Sending request ${Is.string(type) ? type : type.method} failed.`, error);\r\n throw error;\r\n }\r\n }\r\n onRequest(type, handler) {\r\n if (!this.isConnectionActive()) {\r\n throw new Error('Language client is not ready yet');\r\n }\r\n try {\r\n this._resolvedConnection.onRequest(type, handler);\r\n }\r\n catch (error) {\r\n this.error(`Registering request handler ${Is.string(type) ? type : type.method} failed.`, error);\r\n throw error;\r\n }\r\n }\r\n sendNotification(type, params) {\r\n if (!this.isConnectionActive()) {\r\n throw new Error('Language client is not ready yet');\r\n }\r\n this.forceDocumentSync();\r\n try {\r\n this._resolvedConnection.sendNotification(type, params);\r\n }\r\n catch (error) {\r\n this.error(`Sending notification ${Is.string(type) ? type : type.method} failed.`, error);\r\n throw error;\r\n }\r\n }\r\n onNotification(type, handler) {\r\n if (!this.isConnectionActive()) {\r\n throw new Error('Language client is not ready yet');\r\n }\r\n try {\r\n this._resolvedConnection.onNotification(type, handler);\r\n }\r\n catch (error) {\r\n this.error(`Registering notification handler ${Is.string(type) ? type : type.method} failed.`, error);\r\n throw error;\r\n }\r\n }\r\n onProgress(type, token, handler) {\r\n if (!this.isConnectionActive()) {\r\n throw new Error('Language client is not ready yet');\r\n }\r\n try {\r\n return this._resolvedConnection.onProgress(type, token, handler);\r\n }\r\n catch (error) {\r\n this.error(`Registering progress handler for token ${token} failed.`, error);\r\n throw error;\r\n }\r\n }\r\n sendProgress(type, token, value) {\r\n if (!this.isConnectionActive()) {\r\n throw new Error('Language client is not ready yet');\r\n }\r\n this.forceDocumentSync();\r\n try {\r\n this._resolvedConnection.sendProgress(type, token, value);\r\n }\r\n catch (error) {\r\n this.error(`Sending progress for token ${token} failed.`, error);\r\n throw error;\r\n }\r\n }\r\n get clientOptions() {\r\n return this._clientOptions;\r\n }\r\n get protocol2CodeConverter() {\r\n return this._p2c;\r\n }\r\n get code2ProtocolConverter() {\r\n return this._c2p;\r\n }\r\n get onTelemetry() {\r\n return this._telemetryEmitter.event;\r\n }\r\n get onDidChangeState() {\r\n return this._stateChangeEmitter.event;\r\n }\r\n get outputChannel() {\r\n if (!this._outputChannel) {\r\n this._outputChannel = vscode_1.window.createOutputChannel(this._clientOptions.outputChannelName ? this._clientOptions.outputChannelName : this._name);\r\n }\r\n return this._outputChannel;\r\n }\r\n get traceOutputChannel() {\r\n if (this._traceOutputChannel) {\r\n return this._traceOutputChannel;\r\n }\r\n return this.outputChannel;\r\n }\r\n get diagnostics() {\r\n return this._diagnostics;\r\n }\r\n createDefaultErrorHandler() {\r\n return new DefaultErrorHandler(this._name);\r\n }\r\n set trace(value) {\r\n this._trace = value;\r\n this.onReady().then(() => {\r\n this.resolveConnection().then((connection) => {\r\n connection.trace(this._trace, this._tracer, {\r\n sendNotification: false,\r\n traceFormat: this._traceFormat\r\n });\r\n });\r\n }, () => {\r\n });\r\n }\r\n data2String(data) {\r\n if (data instanceof vscode_languageserver_protocol_1.ResponseError) {\r\n const responseError = data;\r\n return ` Message: ${responseError.message}\\n Code: ${responseError.code} ${responseError.data ? '\\n' + responseError.data.toString() : ''}`;\r\n }\r\n if (data instanceof Error) {\r\n if (Is.string(data.stack)) {\r\n return data.stack;\r\n }\r\n return data.message;\r\n }\r\n if (Is.string(data)) {\r\n return data;\r\n }\r\n return data.toString();\r\n }\r\n info(message, data, showNotification = true) {\r\n this.outputChannel.appendLine(`[Info - ${(new Date().toLocaleTimeString())}] ${message}`);\r\n if (data) {\r\n this.outputChannel.appendLine(this.data2String(data));\r\n }\r\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Info) {\r\n this.showNotificationMessage();\r\n }\r\n }\r\n warn(message, data, showNotification = true) {\r\n this.outputChannel.appendLine(`[Warn - ${(new Date().toLocaleTimeString())}] ${message}`);\r\n if (data) {\r\n this.outputChannel.appendLine(this.data2String(data));\r\n }\r\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Warn) {\r\n this.showNotificationMessage();\r\n }\r\n }\r\n error(message, data, showNotification = true) {\r\n this.outputChannel.appendLine(`[Error - ${(new Date().toLocaleTimeString())}] ${message}`);\r\n if (data) {\r\n this.outputChannel.appendLine(this.data2String(data));\r\n }\r\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Error) {\r\n this.showNotificationMessage();\r\n }\r\n }\r\n showNotificationMessage() {\r\n vscode_1.window.showInformationMessage('A request has failed. See the output for more information.', 'Go to output').then(() => {\r\n this.outputChannel.show(true);\r\n });\r\n }\r\n logTrace(message, data) {\r\n this.traceOutputChannel.appendLine(`[Trace - ${(new Date().toLocaleTimeString())}] ${message}`);\r\n if (data) {\r\n this.traceOutputChannel.appendLine(this.data2String(data));\r\n }\r\n }\r\n logObjectTrace(data) {\r\n if (data.isLSPMessage && data.type) {\r\n this.traceOutputChannel.append(`[LSP - ${(new Date().toLocaleTimeString())}] `);\r\n }\r\n else {\r\n this.traceOutputChannel.append(`[Trace - ${(new Date().toLocaleTimeString())}] `);\r\n }\r\n if (data) {\r\n this.traceOutputChannel.appendLine(`${JSON.stringify(data)}`);\r\n }\r\n }\r\n needsStart() {\r\n return this.state === ClientState.Initial || this.state === ClientState.Stopping || this.state === ClientState.Stopped;\r\n }\r\n needsStop() {\r\n return this.state === ClientState.Starting || this.state === ClientState.Running;\r\n }\r\n onReady() {\r\n return this._onReady;\r\n }\r\n isConnectionActive() {\r\n return this.state === ClientState.Running && !!this._resolvedConnection;\r\n }\r\n start() {\r\n if (this._onReadyCallbacks.isUsed) {\r\n this._onReady = new Promise((resolve, reject) => {\r\n this._onReadyCallbacks = new OnReady(resolve, reject);\r\n });\r\n }\r\n this._listeners = [];\r\n this._providers = [];\r\n // If we restart then the diagnostics collection is reused.\r\n if (!this._diagnostics) {\r\n this._diagnostics = this._clientOptions.diagnosticCollectionName\r\n ? vscode_1.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName)\r\n : vscode_1.languages.createDiagnosticCollection();\r\n }\r\n this.state = ClientState.Starting;\r\n this.resolveConnection().then((connection) => {\r\n connection.onLogMessage((message) => {\r\n switch (message.type) {\r\n case vscode_languageserver_protocol_1.MessageType.Error:\r\n this.error(message.message, undefined, false);\r\n break;\r\n case vscode_languageserver_protocol_1.MessageType.Warning:\r\n this.warn(message.message, undefined, false);\r\n break;\r\n case vscode_languageserver_protocol_1.MessageType.Info:\r\n this.info(message.message, undefined, false);\r\n break;\r\n default:\r\n this.outputChannel.appendLine(message.message);\r\n }\r\n });\r\n connection.onShowMessage((message) => {\r\n switch (message.type) {\r\n case vscode_languageserver_protocol_1.MessageType.Error:\r\n vscode_1.window.showErrorMessage(message.message);\r\n break;\r\n case vscode_languageserver_protocol_1.MessageType.Warning:\r\n vscode_1.window.showWarningMessage(message.message);\r\n break;\r\n case vscode_languageserver_protocol_1.MessageType.Info:\r\n vscode_1.window.showInformationMessage(message.message);\r\n break;\r\n default:\r\n vscode_1.window.showInformationMessage(message.message);\r\n }\r\n });\r\n connection.onRequest(vscode_languageserver_protocol_1.ShowMessageRequest.type, (params) => {\r\n let messageFunc;\r\n switch (params.type) {\r\n case vscode_languageserver_protocol_1.MessageType.Error:\r\n messageFunc = vscode_1.window.showErrorMessage;\r\n break;\r\n case vscode_languageserver_protocol_1.MessageType.Warning:\r\n messageFunc = vscode_1.window.showWarningMessage;\r\n break;\r\n case vscode_languageserver_protocol_1.MessageType.Info:\r\n messageFunc = vscode_1.window.showInformationMessage;\r\n break;\r\n default:\r\n messageFunc = vscode_1.window.showInformationMessage;\r\n }\r\n let actions = params.actions || [];\r\n return messageFunc(params.message, ...actions);\r\n });\r\n connection.onTelemetry((data) => {\r\n this._telemetryEmitter.fire(data);\r\n });\r\n connection.listen();\r\n // Error is handled in the initialize call.\r\n return this.initialize(connection);\r\n }).then(undefined, (error) => {\r\n this.state = ClientState.StartFailed;\r\n this._onReadyCallbacks.reject(error);\r\n this.error('Starting client failed', error);\r\n vscode_1.window.showErrorMessage(`Couldn't start client ${this._name}`);\r\n });\r\n return new vscode_1.Disposable(() => {\r\n if (this.needsStop()) {\r\n this.stop();\r\n }\r\n });\r\n }\r\n resolveConnection() {\r\n if (!this._connectionPromise) {\r\n this._connectionPromise = this.createConnection();\r\n }\r\n return this._connectionPromise;\r\n }\r\n initialize(connection) {\r\n this.refreshTrace(connection, false);\r\n let initOption = this._clientOptions.initializationOptions;\r\n let rootPath = this._clientOptions.workspaceFolder\r\n ? this._clientOptions.workspaceFolder.uri.fsPath\r\n : this._clientGetRootPath();\r\n let initParams = {\r\n processId: process.pid,\r\n clientInfo: {\r\n name: 'vscode',\r\n version: vscode_1.version\r\n },\r\n rootPath: rootPath ? rootPath : null,\r\n rootUri: rootPath ? this._c2p.asUri(vscode_1.Uri.file(rootPath)) : null,\r\n capabilities: this.computeClientCapabilities(),\r\n initializationOptions: Is.func(initOption) ? initOption() : initOption,\r\n trace: vscode_languageserver_protocol_1.Trace.toString(this._trace),\r\n workspaceFolders: null\r\n };\r\n this.fillInitializeParams(initParams);\r\n if (this._clientOptions.progressOnInitialization) {\r\n const token = UUID.generateUuid();\r\n const part = new progressPart_1.ProgressPart(connection, token);\r\n initParams.workDoneToken = token;\r\n return this.doInitialize(connection, initParams).then((result) => {\r\n part.done();\r\n return result;\r\n }, (error) => {\r\n part.cancel();\r\n throw error;\r\n });\r\n }\r\n else {\r\n return this.doInitialize(connection, initParams);\r\n }\r\n }\r\n doInitialize(connection, initParams) {\r\n return connection.initialize(initParams).then((result) => {\r\n this._resolvedConnection = connection;\r\n this._initializeResult = result;\r\n this.state = ClientState.Running;\r\n let textDocumentSyncOptions = undefined;\r\n if (Is.number(result.capabilities.textDocumentSync)) {\r\n if (result.capabilities.textDocumentSync === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\r\n textDocumentSyncOptions = {\r\n openClose: false,\r\n change: vscode_languageserver_protocol_1.TextDocumentSyncKind.None,\r\n save: undefined\r\n };\r\n }\r\n else {\r\n textDocumentSyncOptions = {\r\n openClose: true,\r\n change: result.capabilities.textDocumentSync,\r\n save: {\r\n includeText: false\r\n }\r\n };\r\n }\r\n }\r\n else if (result.capabilities.textDocumentSync !== void 0 && result.capabilities.textDocumentSync !== null) {\r\n textDocumentSyncOptions = result.capabilities.textDocumentSync;\r\n }\r\n this._capabilities = Object.assign({}, result.capabilities, { resolvedTextDocumentSync: textDocumentSyncOptions });\r\n connection.onDiagnostics(params => this.handleDiagnostics(params));\r\n connection.onRequest(vscode_languageserver_protocol_1.RegistrationRequest.type, params => this.handleRegistrationRequest(params));\r\n // See https://github.com/Microsoft/vscode-languageserver-node/issues/199\r\n connection.onRequest('client/registerFeature', params => this.handleRegistrationRequest(params));\r\n connection.onRequest(vscode_languageserver_protocol_1.UnregistrationRequest.type, params => this.handleUnregistrationRequest(params));\r\n // See https://github.com/Microsoft/vscode-languageserver-node/issues/199\r\n connection.onRequest('client/unregisterFeature', params => this.handleUnregistrationRequest(params));\r\n connection.onRequest(vscode_languageserver_protocol_1.ApplyWorkspaceEditRequest.type, params => this.handleApplyWorkspaceEdit(params));\r\n connection.sendNotification(vscode_languageserver_protocol_1.InitializedNotification.type, {});\r\n this.hookFileEvents(connection);\r\n this.hookConfigurationChanged(connection);\r\n this.initializeFeatures(connection);\r\n this._onReadyCallbacks.resolve();\r\n return result;\r\n }).then(undefined, (error) => {\r\n if (this._clientOptions.initializationFailedHandler) {\r\n if (this._clientOptions.initializationFailedHandler(error)) {\r\n this.initialize(connection);\r\n }\r\n else {\r\n this.stop();\r\n this._onReadyCallbacks.reject(error);\r\n }\r\n }\r\n else if (error instanceof vscode_languageserver_protocol_1.ResponseError && error.data && error.data.retry) {\r\n vscode_1.window.showErrorMessage(error.message, { title: 'Retry', id: 'retry' }).then(item => {\r\n if (item && item.id === 'retry') {\r\n this.initialize(connection);\r\n }\r\n else {\r\n this.stop();\r\n this._onReadyCallbacks.reject(error);\r\n }\r\n });\r\n }\r\n else {\r\n if (error && error.message) {\r\n vscode_1.window.showErrorMessage(error.message);\r\n }\r\n this.error('Server initialization failed.', error);\r\n this.stop();\r\n this._onReadyCallbacks.reject(error);\r\n }\r\n throw error;\r\n });\r\n }\r\n _clientGetRootPath() {\r\n let folders = vscode_1.workspace.workspaceFolders;\r\n if (!folders || folders.length === 0) {\r\n return undefined;\r\n }\r\n let folder = folders[0];\r\n if (folder.uri.scheme === 'file') {\r\n return folder.uri.fsPath;\r\n }\r\n return undefined;\r\n }\r\n stop() {\r\n this._initializeResult = undefined;\r\n if (!this._connectionPromise) {\r\n this.state = ClientState.Stopped;\r\n return Promise.resolve();\r\n }\r\n if (this.state === ClientState.Stopping && this._onStop) {\r\n return this._onStop;\r\n }\r\n this.state = ClientState.Stopping;\r\n this.cleanUp(false);\r\n // unhook listeners\r\n return this._onStop = this.resolveConnection().then(connection => {\r\n return connection.shutdown().then(() => {\r\n connection.exit();\r\n connection.dispose();\r\n this.state = ClientState.Stopped;\r\n this.cleanUpChannel();\r\n this._onStop = undefined;\r\n this._connectionPromise = undefined;\r\n this._resolvedConnection = undefined;\r\n });\r\n });\r\n }\r\n cleanUp(channel = true, diagnostics = true) {\r\n if (this._listeners) {\r\n this._listeners.forEach(listener => listener.dispose());\r\n this._listeners = undefined;\r\n }\r\n if (this._providers) {\r\n this._providers.forEach(provider => provider.dispose());\r\n this._providers = undefined;\r\n }\r\n if (this._syncedDocuments) {\r\n this._syncedDocuments.clear();\r\n }\r\n for (let handler of this._dynamicFeatures.values()) {\r\n handler.dispose();\r\n }\r\n if (channel) {\r\n this.cleanUpChannel();\r\n }\r\n if (diagnostics && this._diagnostics) {\r\n this._diagnostics.dispose();\r\n this._diagnostics = undefined;\r\n }\r\n }\r\n cleanUpChannel() {\r\n if (this._outputChannel && this._disposeOutputChannel) {\r\n this._outputChannel.dispose();\r\n this._outputChannel = undefined;\r\n }\r\n }\r\n notifyFileEvent(event) {\r\n var _a, _b;\r\n const client = this;\r\n function didChangeWatchedFile(event) {\r\n client._fileEvents.push(event);\r\n client._fileEventDelayer.trigger(() => {\r\n client.onReady().then(() => {\r\n client.resolveConnection().then(connection => {\r\n if (client.isConnectionActive()) {\r\n client.forceDocumentSync();\r\n connection.didChangeWatchedFiles({ changes: client._fileEvents });\r\n }\r\n client._fileEvents = [];\r\n });\r\n }, (error) => {\r\n client.error(`Notify file events failed.`, error);\r\n });\r\n });\r\n }\r\n const workSpaceMiddleware = (_a = this.clientOptions.middleware) === null || _a === void 0 ? void 0 : _a.workspace;\r\n ((_b = workSpaceMiddleware) === null || _b === void 0 ? void 0 : _b.didChangeWatchedFile) ? workSpaceMiddleware.didChangeWatchedFile(event, didChangeWatchedFile) : didChangeWatchedFile(event);\r\n }\r\n forceDocumentSync() {\r\n this._dynamicFeatures.get(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type.method).forceDelivery();\r\n }\r\n handleDiagnostics(params) {\r\n if (!this._diagnostics) {\r\n return;\r\n }\r\n let uri = this._p2c.asUri(params.uri);\r\n let diagnostics = this._p2c.asDiagnostics(params.diagnostics);\r\n let middleware = this.clientOptions.middleware;\r\n if (middleware.handleDiagnostics) {\r\n middleware.handleDiagnostics(uri, diagnostics, (uri, diagnostics) => this.setDiagnostics(uri, diagnostics));\r\n }\r\n else {\r\n this.setDiagnostics(uri, diagnostics);\r\n }\r\n }\r\n setDiagnostics(uri, diagnostics) {\r\n if (!this._diagnostics) {\r\n return;\r\n }\r\n this._diagnostics.set(uri, diagnostics);\r\n }\r\n createConnection() {\r\n let errorHandler = (error, message, count) => {\r\n this.handleConnectionError(error, message, count);\r\n };\r\n let closeHandler = () => {\r\n this.handleConnectionClosed();\r\n };\r\n return this.createMessageTransports(this._clientOptions.stdioEncoding || 'utf8').then((transports) => {\r\n return createConnection(transports.reader, transports.writer, errorHandler, closeHandler);\r\n });\r\n }\r\n handleConnectionClosed() {\r\n // Check whether this is a normal shutdown in progress or the client stopped normally.\r\n if (this.state === ClientState.Stopping || this.state === ClientState.Stopped) {\r\n return;\r\n }\r\n try {\r\n if (this._resolvedConnection) {\r\n this._resolvedConnection.dispose();\r\n }\r\n }\r\n catch (error) {\r\n // Disposing a connection could fail if error cases.\r\n }\r\n let action = CloseAction.DoNotRestart;\r\n try {\r\n action = this._clientOptions.errorHandler.closed();\r\n }\r\n catch (error) {\r\n // Ignore errors coming from the error handler.\r\n }\r\n this._connectionPromise = undefined;\r\n this._resolvedConnection = undefined;\r\n if (action === CloseAction.DoNotRestart) {\r\n this.error('Connection to server got closed. Server will not be restarted.');\r\n this.state = ClientState.Stopped;\r\n this.cleanUp(false, true);\r\n }\r\n else if (action === CloseAction.Restart) {\r\n this.info('Connection to server got closed. Server will restart.');\r\n this.cleanUp(false, false);\r\n this.state = ClientState.Initial;\r\n this.start();\r\n }\r\n }\r\n handleConnectionError(error, message, count) {\r\n let action = this._clientOptions.errorHandler.error(error, message, count);\r\n if (action === ErrorAction.Shutdown) {\r\n this.error('Connection to server is erroring. Shutting down server.');\r\n this.stop();\r\n }\r\n }\r\n hookConfigurationChanged(connection) {\r\n vscode_1.workspace.onDidChangeConfiguration(() => {\r\n this.refreshTrace(connection, true);\r\n });\r\n }\r\n refreshTrace(connection, sendNotification = false) {\r\n let config = vscode_1.workspace.getConfiguration(this._id);\r\n let trace = vscode_languageserver_protocol_1.Trace.Off;\r\n let traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\r\n if (config) {\r\n const traceConfig = config.get('trace.server', 'off');\r\n if (typeof traceConfig === 'string') {\r\n trace = vscode_languageserver_protocol_1.Trace.fromString(traceConfig);\r\n }\r\n else {\r\n trace = vscode_languageserver_protocol_1.Trace.fromString(config.get('trace.server.verbosity', 'off'));\r\n traceFormat = vscode_languageserver_protocol_1.TraceFormat.fromString(config.get('trace.server.format', 'text'));\r\n }\r\n }\r\n this._trace = trace;\r\n this._traceFormat = traceFormat;\r\n connection.trace(this._trace, this._tracer, {\r\n sendNotification,\r\n traceFormat: this._traceFormat\r\n });\r\n }\r\n hookFileEvents(_connection) {\r\n let fileEvents = this._clientOptions.synchronize.fileEvents;\r\n if (!fileEvents) {\r\n return;\r\n }\r\n let watchers;\r\n if (Is.array(fileEvents)) {\r\n watchers = fileEvents;\r\n }\r\n else {\r\n watchers = [fileEvents];\r\n }\r\n if (!watchers) {\r\n return;\r\n }\r\n this._dynamicFeatures.get(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type.method).registerRaw(UUID.generateUuid(), watchers);\r\n }\r\n registerFeatures(features) {\r\n for (let feature of features) {\r\n this.registerFeature(feature);\r\n }\r\n }\r\n registerFeature(feature) {\r\n this._features.push(feature);\r\n if (DynamicFeature.is(feature)) {\r\n let messages = feature.messages;\r\n if (Array.isArray(messages)) {\r\n for (let message of messages) {\r\n this._method2Message.set(message.method, message);\r\n this._dynamicFeatures.set(message.method, feature);\r\n }\r\n }\r\n else {\r\n this._method2Message.set(messages.method, messages);\r\n this._dynamicFeatures.set(messages.method, feature);\r\n }\r\n }\r\n }\r\n getFeature(request) {\r\n return this._dynamicFeatures.get(request);\r\n }\r\n registerBuiltinFeatures() {\r\n this.registerFeature(new ConfigurationFeature(this));\r\n this.registerFeature(new DidOpenTextDocumentFeature(this, this._syncedDocuments));\r\n this.registerFeature(new DidChangeTextDocumentFeature(this));\r\n this.registerFeature(new WillSaveFeature(this));\r\n this.registerFeature(new WillSaveWaitUntilFeature(this));\r\n this.registerFeature(new DidSaveTextDocumentFeature(this));\r\n this.registerFeature(new DidCloseTextDocumentFeature(this, this._syncedDocuments));\r\n this.registerFeature(new FileSystemWatcherFeature(this, (event) => this.notifyFileEvent(event)));\r\n this.registerFeature(new CompletionItemFeature(this));\r\n this.registerFeature(new HoverFeature(this));\r\n this.registerFeature(new SignatureHelpFeature(this));\r\n this.registerFeature(new DefinitionFeature(this));\r\n this.registerFeature(new ReferencesFeature(this));\r\n this.registerFeature(new DocumentHighlightFeature(this));\r\n this.registerFeature(new DocumentSymbolFeature(this));\r\n this.registerFeature(new WorkspaceSymbolFeature(this));\r\n this.registerFeature(new CodeActionFeature(this));\r\n this.registerFeature(new CodeLensFeature(this));\r\n this.registerFeature(new DocumentFormattingFeature(this));\r\n this.registerFeature(new DocumentRangeFormattingFeature(this));\r\n this.registerFeature(new DocumentOnTypeFormattingFeature(this));\r\n this.registerFeature(new RenameFeature(this));\r\n this.registerFeature(new DocumentLinkFeature(this));\r\n this.registerFeature(new ExecuteCommandFeature(this));\r\n }\r\n fillInitializeParams(params) {\r\n for (let feature of this._features) {\r\n if (Is.func(feature.fillInitializeParams)) {\r\n feature.fillInitializeParams(params);\r\n }\r\n }\r\n }\r\n computeClientCapabilities() {\r\n let result = {};\r\n ensure(result, 'workspace').applyEdit = true;\r\n let workspaceEdit = ensure(ensure(result, 'workspace'), 'workspaceEdit');\r\n workspaceEdit.documentChanges = true;\r\n workspaceEdit.resourceOperations = [vscode_languageserver_protocol_1.ResourceOperationKind.Create, vscode_languageserver_protocol_1.ResourceOperationKind.Rename, vscode_languageserver_protocol_1.ResourceOperationKind.Delete];\r\n workspaceEdit.failureHandling = vscode_languageserver_protocol_1.FailureHandlingKind.TextOnlyTransactional;\r\n let diagnostics = ensure(ensure(result, 'textDocument'), 'publishDiagnostics');\r\n diagnostics.relatedInformation = true;\r\n diagnostics.versionSupport = false;\r\n diagnostics.tagSupport = { valueSet: [vscode_languageserver_protocol_1.DiagnosticTag.Unnecessary, vscode_languageserver_protocol_1.DiagnosticTag.Deprecated] };\r\n for (let feature of this._features) {\r\n feature.fillClientCapabilities(result);\r\n }\r\n return result;\r\n }\r\n initializeFeatures(_connection) {\r\n let documentSelector = this._clientOptions.documentSelector;\r\n for (let feature of this._features) {\r\n feature.initialize(this._capabilities, documentSelector);\r\n }\r\n }\r\n handleRegistrationRequest(params) {\r\n return new Promise((resolve, reject) => {\r\n for (let registration of params.registrations) {\r\n const feature = this._dynamicFeatures.get(registration.method);\r\n if (!feature) {\r\n reject(new Error(`No feature implementation for ${registration.method} found. Registration failed.`));\r\n return;\r\n }\r\n const options = registration.registerOptions || {};\r\n options.documentSelector = options.documentSelector || this._clientOptions.documentSelector;\r\n const data = {\r\n id: registration.id,\r\n registerOptions: options\r\n };\r\n feature.register(this._method2Message.get(registration.method), data);\r\n }\r\n resolve();\r\n });\r\n }\r\n handleUnregistrationRequest(params) {\r\n return new Promise((resolve, reject) => {\r\n for (let unregistration of params.unregisterations) {\r\n const feature = this._dynamicFeatures.get(unregistration.method);\r\n if (!feature) {\r\n reject(new Error(`No feature implementation for ${unregistration.method} found. Unregistration failed.`));\r\n return;\r\n }\r\n feature.unregister(unregistration.id);\r\n }\r\n resolve();\r\n });\r\n }\r\n handleApplyWorkspaceEdit(params) {\r\n // This is some sort of workaround since the version check should be done by VS Code in the Workspace.applyEdit.\r\n // However doing it here adds some safety since the server can lag more behind then an extension.\r\n let workspaceEdit = params.edit;\r\n let openTextDocuments = new Map();\r\n vscode_1.workspace.textDocuments.forEach((document) => openTextDocuments.set(document.uri.toString(), document));\r\n let versionMismatch = false;\r\n if (workspaceEdit.documentChanges) {\r\n for (const change of workspaceEdit.documentChanges) {\r\n if (vscode_languageserver_protocol_1.TextDocumentEdit.is(change) && change.textDocument.version && change.textDocument.version >= 0) {\r\n let textDocument = openTextDocuments.get(change.textDocument.uri);\r\n if (textDocument && textDocument.version !== change.textDocument.version) {\r\n versionMismatch = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (versionMismatch) {\r\n return Promise.resolve({ applied: false });\r\n }\r\n return Is.asPromise(vscode_1.workspace.applyEdit(this._p2c.asWorkspaceEdit(params.edit)).then((value) => { return { applied: value }; }));\r\n }\r\n logFailedRequest(type, error) {\r\n // If we get a request cancel or a content modified don't log anything.\r\n if (error instanceof vscode_languageserver_protocol_1.ResponseError && (error.code === vscode_languageserver_protocol_1.ErrorCodes.RequestCancelled || error.code === vscode_languageserver_protocol_1.ErrorCodes.ContentModified)) {\r\n return;\r\n }\r\n this.error(`Request ${type.method} failed.`, error);\r\n }\r\n}\r\nexports.BaseLanguageClient = BaseLanguageClient;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst code = require(\"vscode\");\r\nconst proto = require(\"vscode-languageserver-protocol\");\r\nconst Is = require(\"./utils/is\");\r\nconst protocolCompletionItem_1 = require(\"./protocolCompletionItem\");\r\nconst protocolCodeLens_1 = require(\"./protocolCodeLens\");\r\nconst protocolDocumentLink_1 = require(\"./protocolDocumentLink\");\r\nfunction createConverter(uriConverter) {\r\n const nullConverter = (value) => value.toString();\r\n const _uriConverter = uriConverter || nullConverter;\r\n function asUri(value) {\r\n return _uriConverter(value);\r\n }\r\n function asTextDocumentIdentifier(textDocument) {\r\n return {\r\n uri: _uriConverter(textDocument.uri)\r\n };\r\n }\r\n function asVersionedTextDocumentIdentifier(textDocument) {\r\n return {\r\n uri: _uriConverter(textDocument.uri),\r\n version: textDocument.version\r\n };\r\n }\r\n function asOpenTextDocumentParams(textDocument) {\r\n return {\r\n textDocument: {\r\n uri: _uriConverter(textDocument.uri),\r\n languageId: textDocument.languageId,\r\n version: textDocument.version,\r\n text: textDocument.getText()\r\n }\r\n };\r\n }\r\n function isTextDocumentChangeEvent(value) {\r\n let candidate = value;\r\n return !!candidate.document && !!candidate.contentChanges;\r\n }\r\n function isTextDocument(value) {\r\n let candidate = value;\r\n return !!candidate.uri && !!candidate.version;\r\n }\r\n function asChangeTextDocumentParams(arg) {\r\n if (isTextDocument(arg)) {\r\n let result = {\r\n textDocument: {\r\n uri: _uriConverter(arg.uri),\r\n version: arg.version\r\n },\r\n contentChanges: [{ text: arg.getText() }]\r\n };\r\n return result;\r\n }\r\n else if (isTextDocumentChangeEvent(arg)) {\r\n let document = arg.document;\r\n let result = {\r\n textDocument: {\r\n uri: _uriConverter(document.uri),\r\n version: document.version\r\n },\r\n contentChanges: arg.contentChanges.map((change) => {\r\n let range = change.range;\r\n return {\r\n range: {\r\n start: { line: range.start.line, character: range.start.character },\r\n end: { line: range.end.line, character: range.end.character }\r\n },\r\n rangeLength: change.rangeLength,\r\n text: change.text\r\n };\r\n })\r\n };\r\n return result;\r\n }\r\n else {\r\n throw Error('Unsupported text document change parameter');\r\n }\r\n }\r\n function asCloseTextDocumentParams(textDocument) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument)\r\n };\r\n }\r\n function asSaveTextDocumentParams(textDocument, includeContent = false) {\r\n let result = {\r\n textDocument: asVersionedTextDocumentIdentifier(textDocument)\r\n };\r\n if (includeContent) {\r\n result.text = textDocument.getText();\r\n }\r\n return result;\r\n }\r\n function asTextDocumentSaveReason(reason) {\r\n switch (reason) {\r\n case code.TextDocumentSaveReason.Manual:\r\n return proto.TextDocumentSaveReason.Manual;\r\n case code.TextDocumentSaveReason.AfterDelay:\r\n return proto.TextDocumentSaveReason.AfterDelay;\r\n case code.TextDocumentSaveReason.FocusOut:\r\n return proto.TextDocumentSaveReason.FocusOut;\r\n }\r\n return proto.TextDocumentSaveReason.Manual;\r\n }\r\n function asWillSaveTextDocumentParams(event) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(event.document),\r\n reason: asTextDocumentSaveReason(event.reason)\r\n };\r\n }\r\n function asTextDocumentPositionParams(textDocument, position) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument),\r\n position: asWorkerPosition(position)\r\n };\r\n }\r\n function asCompletionTriggerKind(triggerKind) {\r\n switch (triggerKind) {\r\n case code.CompletionTriggerKind.TriggerCharacter:\r\n return proto.CompletionTriggerKind.TriggerCharacter;\r\n case code.CompletionTriggerKind.TriggerForIncompleteCompletions:\r\n return proto.CompletionTriggerKind.TriggerForIncompleteCompletions;\r\n default:\r\n return proto.CompletionTriggerKind.Invoked;\r\n }\r\n }\r\n function asCompletionParams(textDocument, position, context) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument),\r\n position: asWorkerPosition(position),\r\n context: {\r\n triggerKind: asCompletionTriggerKind(context.triggerKind),\r\n triggerCharacter: context.triggerCharacter\r\n }\r\n };\r\n }\r\n function asSignatureHelpTriggerKind(triggerKind) {\r\n switch (triggerKind) {\r\n case code.SignatureHelpTriggerKind.Invoke:\r\n return proto.SignatureHelpTriggerKind.Invoked;\r\n case code.SignatureHelpTriggerKind.TriggerCharacter:\r\n return proto.SignatureHelpTriggerKind.TriggerCharacter;\r\n case code.SignatureHelpTriggerKind.ContentChange:\r\n return proto.SignatureHelpTriggerKind.ContentChange;\r\n }\r\n }\r\n function asParameterInformation(value) {\r\n // We leave the documentation out on purpose since it usually adds no\r\n // value for the server.\r\n return {\r\n label: value.label\r\n };\r\n }\r\n function asParameterInformations(values) {\r\n return values.map(asParameterInformation);\r\n }\r\n function asSignatureInformation(value) {\r\n // We leave the documentation out on purpose since it usually adds no\r\n // value for the server.\r\n return {\r\n label: value.label,\r\n parameters: asParameterInformations(value.parameters)\r\n };\r\n }\r\n function asSignatureInformations(values) {\r\n return values.map(asSignatureInformation);\r\n }\r\n function asSignatureHelp(value) {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n return {\r\n signatures: asSignatureInformations(value.signatures),\r\n activeSignature: value.activeSignature,\r\n activeParameter: value.activeParameter\r\n };\r\n }\r\n function asSignatureHelpParams(textDocument, position, context) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument),\r\n position: asWorkerPosition(position),\r\n context: {\r\n isRetrigger: context.isRetrigger,\r\n triggerCharacter: context.triggerCharacter,\r\n triggerKind: asSignatureHelpTriggerKind(context.triggerKind),\r\n activeSignatureHelp: asSignatureHelp(context.activeSignatureHelp)\r\n }\r\n };\r\n }\r\n function asWorkerPosition(position) {\r\n return { line: position.line, character: position.character };\r\n }\r\n function asPosition(value) {\r\n if (value === undefined || value === null) {\r\n return value;\r\n }\r\n return { line: value.line, character: value.character };\r\n }\r\n function asPositions(value) {\r\n let result = [];\r\n for (let elem of value) {\r\n result.push(asPosition(elem));\r\n }\r\n return result;\r\n }\r\n function isInsertReplace(value) {\r\n const candidate = value;\r\n return candidate && !!candidate.inserting && !!candidate.replacing;\r\n }\r\n function asRange(value) {\r\n if (value === undefined || value === null) {\r\n return value;\r\n }\r\n // The LSP has no support yet for insert replace. So this can never happen.\r\n if (isInsertReplace(value)) {\r\n throw new Error(`Receving unknown insert replace range.`);\r\n }\r\n return { start: asPosition(value.start), end: asPosition(value.end) };\r\n }\r\n function asLocation(value) {\r\n if (value === undefined || value === null) {\r\n return value;\r\n }\r\n return proto.Location.create(asUri(value.uri), asRange(value.range));\r\n }\r\n function asDiagnosticSeverity(value) {\r\n switch (value) {\r\n case code.DiagnosticSeverity.Error:\r\n return proto.DiagnosticSeverity.Error;\r\n case code.DiagnosticSeverity.Warning:\r\n return proto.DiagnosticSeverity.Warning;\r\n case code.DiagnosticSeverity.Information:\r\n return proto.DiagnosticSeverity.Information;\r\n case code.DiagnosticSeverity.Hint:\r\n return proto.DiagnosticSeverity.Hint;\r\n }\r\n }\r\n function asDiagnosticTags(tags) {\r\n if (!tags) {\r\n return undefined;\r\n }\r\n let result = [];\r\n for (let tag of tags) {\r\n let converted = asDiagnosticTag(tag);\r\n if (converted !== undefined) {\r\n result.push(converted);\r\n }\r\n }\r\n return result.length > 0 ? result : undefined;\r\n }\r\n function asDiagnosticTag(tag) {\r\n switch (tag) {\r\n case code.DiagnosticTag.Unnecessary:\r\n return proto.DiagnosticTag.Unnecessary;\r\n case code.DiagnosticTag.Deprecated:\r\n return proto.DiagnosticTag.Deprecated;\r\n default:\r\n return undefined;\r\n }\r\n }\r\n function asRelatedInformation(item) {\r\n return {\r\n message: item.message,\r\n location: asLocation(item.location)\r\n };\r\n }\r\n function asRelatedInformations(items) {\r\n return items.map(asRelatedInformation);\r\n }\r\n function asDiagnostic(item) {\r\n let result = proto.Diagnostic.create(asRange(item.range), item.message);\r\n if (Is.number(item.severity)) {\r\n result.severity = asDiagnosticSeverity(item.severity);\r\n }\r\n if (Is.number(item.code) || Is.string(item.code)) {\r\n result.code = item.code;\r\n }\r\n if (Array.isArray(item.tags)) {\r\n result.tags = asDiagnosticTags(item.tags);\r\n }\r\n if (item.relatedInformation) {\r\n result.relatedInformation = asRelatedInformations(item.relatedInformation);\r\n }\r\n if (item.source) {\r\n result.source = item.source;\r\n }\r\n return result;\r\n }\r\n function asDiagnostics(items) {\r\n if (items === undefined || items === null) {\r\n return items;\r\n }\r\n return items.map(asDiagnostic);\r\n }\r\n function asDocumentation(format, documentation) {\r\n switch (format) {\r\n case '$string':\r\n return documentation;\r\n case proto.MarkupKind.PlainText:\r\n return { kind: format, value: documentation };\r\n case proto.MarkupKind.Markdown:\r\n return { kind: format, value: documentation.value };\r\n default:\r\n return `Unsupported Markup content received. Kind is: ${format}`;\r\n }\r\n }\r\n function asCompletionItemTag(tag) {\r\n switch (tag) {\r\n case code.CompletionItemTag.Deprecated:\r\n return proto.CompletionItemTag.Deprecated;\r\n }\r\n return undefined;\r\n }\r\n function asCompletionItemTags(tags) {\r\n if (tags === undefined) {\r\n return tags;\r\n }\r\n const result = [];\r\n for (let tag of tags) {\r\n const converted = asCompletionItemTag(tag);\r\n if (converted !== undefined) {\r\n result.push(converted);\r\n }\r\n }\r\n return result;\r\n }\r\n function asCompletionItemKind(value, original) {\r\n if (original !== undefined) {\r\n return original;\r\n }\r\n return value + 1;\r\n }\r\n function asCompletionItem(item) {\r\n let result = { label: item.label };\r\n let protocolItem = item instanceof protocolCompletionItem_1.default ? item : undefined;\r\n if (item.detail) {\r\n result.detail = item.detail;\r\n }\r\n // We only send items back we created. So this can't be something else than\r\n // a string right now.\r\n if (item.documentation) {\r\n if (!protocolItem || protocolItem.documentationFormat === '$string') {\r\n result.documentation = item.documentation;\r\n }\r\n else {\r\n result.documentation = asDocumentation(protocolItem.documentationFormat, item.documentation);\r\n }\r\n }\r\n if (item.filterText) {\r\n result.filterText = item.filterText;\r\n }\r\n fillPrimaryInsertText(result, item);\r\n if (Is.number(item.kind)) {\r\n result.kind = asCompletionItemKind(item.kind, protocolItem && protocolItem.originalItemKind);\r\n }\r\n if (item.sortText) {\r\n result.sortText = item.sortText;\r\n }\r\n if (item.additionalTextEdits) {\r\n result.additionalTextEdits = asTextEdits(item.additionalTextEdits);\r\n }\r\n if (item.commitCharacters) {\r\n result.commitCharacters = item.commitCharacters.slice();\r\n }\r\n if (item.command) {\r\n result.command = asCommand(item.command);\r\n }\r\n if (item.preselect === true || item.preselect === false) {\r\n result.preselect = item.preselect;\r\n }\r\n const tags = asCompletionItemTags(item.tags);\r\n if (protocolItem) {\r\n if (protocolItem.data !== undefined) {\r\n result.data = protocolItem.data;\r\n }\r\n if (protocolItem.deprecated === true || protocolItem.deprecated === false) {\r\n if (protocolItem.deprecated === true && tags !== undefined && tags.length > 0) {\r\n const index = tags.indexOf(code.CompletionItemTag.Deprecated);\r\n if (index !== -1) {\r\n tags.splice(index, 1);\r\n }\r\n }\r\n result.deprecated = protocolItem.deprecated;\r\n }\r\n }\r\n if (tags !== undefined && tags.length > 0) {\r\n result.tags = tags;\r\n }\r\n return result;\r\n }\r\n function fillPrimaryInsertText(target, source) {\r\n let format = proto.InsertTextFormat.PlainText;\r\n let text = undefined;\r\n let range = undefined;\r\n if (source.textEdit) {\r\n text = source.textEdit.newText;\r\n range = asRange(source.textEdit.range);\r\n }\r\n else if (source.insertText instanceof code.SnippetString) {\r\n format = proto.InsertTextFormat.Snippet;\r\n text = source.insertText.value;\r\n }\r\n else {\r\n text = source.insertText;\r\n }\r\n if (source.range) {\r\n range = asRange(source.range);\r\n }\r\n target.insertTextFormat = format;\r\n if (source.fromEdit && text !== undefined && range !== undefined) {\r\n target.textEdit = { newText: text, range: range };\r\n }\r\n else {\r\n target.insertText = text;\r\n }\r\n }\r\n function asTextEdit(edit) {\r\n return { range: asRange(edit.range), newText: edit.newText };\r\n }\r\n function asTextEdits(edits) {\r\n if (edits === undefined || edits === null) {\r\n return edits;\r\n }\r\n return edits.map(asTextEdit);\r\n }\r\n function asSymbolKind(item) {\r\n if (item <= code.SymbolKind.TypeParameter) {\r\n // Symbol kind is one based in the protocol and zero based in code.\r\n return (item + 1);\r\n }\r\n return proto.SymbolKind.Property;\r\n }\r\n function asSymbolTag(item) {\r\n return item;\r\n }\r\n function asSymbolTags(items) {\r\n return items.map(asSymbolTag);\r\n }\r\n function asReferenceParams(textDocument, position, options) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument),\r\n position: asWorkerPosition(position),\r\n context: { includeDeclaration: options.includeDeclaration }\r\n };\r\n }\r\n function asCodeActionContext(context) {\r\n if (context === undefined || context === null) {\r\n return context;\r\n }\r\n let only;\r\n if (context.only && Is.string(context.only.value)) {\r\n only = [context.only.value];\r\n }\r\n return proto.CodeActionContext.create(asDiagnostics(context.diagnostics), only);\r\n }\r\n function asCommand(item) {\r\n let result = proto.Command.create(item.title, item.command);\r\n if (item.arguments) {\r\n result.arguments = item.arguments;\r\n }\r\n return result;\r\n }\r\n function asCodeLens(item) {\r\n let result = proto.CodeLens.create(asRange(item.range));\r\n if (item.command) {\r\n result.command = asCommand(item.command);\r\n }\r\n if (item instanceof protocolCodeLens_1.default) {\r\n if (item.data) {\r\n result.data = item.data;\r\n }\r\n }\r\n return result;\r\n }\r\n function asFormattingOptions(item) {\r\n return { tabSize: item.tabSize, insertSpaces: item.insertSpaces };\r\n }\r\n function asDocumentSymbolParams(textDocument) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument)\r\n };\r\n }\r\n function asCodeLensParams(textDocument) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument)\r\n };\r\n }\r\n function asDocumentLink(item) {\r\n let result = proto.DocumentLink.create(asRange(item.range));\r\n if (item.target) {\r\n result.target = asUri(item.target);\r\n }\r\n if (item.tooltip !== undefined) {\r\n result.tooltip = item.tooltip;\r\n }\r\n let protocolItem = item instanceof protocolDocumentLink_1.default ? item : undefined;\r\n if (protocolItem && protocolItem.data) {\r\n result.data = protocolItem.data;\r\n }\r\n return result;\r\n }\r\n function asDocumentLinkParams(textDocument) {\r\n return {\r\n textDocument: asTextDocumentIdentifier(textDocument)\r\n };\r\n }\r\n return {\r\n asUri,\r\n asTextDocumentIdentifier,\r\n asVersionedTextDocumentIdentifier,\r\n asOpenTextDocumentParams,\r\n asChangeTextDocumentParams,\r\n asCloseTextDocumentParams,\r\n asSaveTextDocumentParams,\r\n asWillSaveTextDocumentParams,\r\n asTextDocumentPositionParams,\r\n asCompletionParams,\r\n asSignatureHelpParams,\r\n asWorkerPosition,\r\n asRange,\r\n asPosition,\r\n asPositions,\r\n asLocation,\r\n asDiagnosticSeverity,\r\n asDiagnosticTag,\r\n asDiagnostic,\r\n asDiagnostics,\r\n asCompletionItem,\r\n asTextEdit,\r\n asSymbolKind,\r\n asSymbolTag,\r\n asSymbolTags,\r\n asReferenceParams,\r\n asCodeActionContext,\r\n asCommand,\r\n asCodeLens,\r\n asFormattingOptions,\r\n asDocumentSymbolParams,\r\n asCodeLensParams,\r\n asDocumentLink,\r\n asDocumentLinkParams\r\n };\r\n}\r\nexports.createConverter = createConverter;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nclass ColorProviderFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DocumentColorRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'colorProvider').dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let [id, options] = this.getRegistration(documentSelector, capabilities.colorProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideColorPresentations: (color, context, token) => {\r\n const client = this._client;\r\n const provideColorPresentations = (color, context, token) => {\r\n const requestParams = {\r\n color,\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(context.document),\r\n range: client.code2ProtocolConverter.asRange(context.range)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, requestParams, token).then(this.asColorPresentations.bind(this), (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideColorPresentations\r\n ? middleware.provideColorPresentations(color, context, token, provideColorPresentations)\r\n : provideColorPresentations(color, context, token);\r\n },\r\n provideDocumentColors: (document, token) => {\r\n const client = this._client;\r\n const provideDocumentColors = (document, token) => {\r\n const requestParams = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.DocumentColorRequest.type, requestParams, token).then(this.asColorInformations.bind(this), (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDocumentColors\r\n ? middleware.provideDocumentColors(document, token, provideDocumentColors)\r\n : provideDocumentColors(document, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerColorProvider(options.documentSelector, provider), provider];\r\n }\r\n asColor(color) {\r\n return new vscode_1.Color(color.red, color.green, color.blue, color.alpha);\r\n }\r\n asColorInformations(colorInformation) {\r\n if (Array.isArray(colorInformation)) {\r\n return colorInformation.map(ci => {\r\n return new vscode_1.ColorInformation(this._client.protocol2CodeConverter.asRange(ci.range), this.asColor(ci.color));\r\n });\r\n }\r\n return [];\r\n }\r\n asColorPresentations(colorPresentations) {\r\n if (Array.isArray(colorPresentations)) {\r\n return colorPresentations.map(cp => {\r\n let presentation = new vscode_1.ColorPresentation(cp.label);\r\n presentation.additionalTextEdits = this._client.protocol2CodeConverter.asTextEdits(cp.additionalTextEdits);\r\n presentation.textEdit = this._client.protocol2CodeConverter.asTextEdit(cp.textEdit);\r\n return presentation;\r\n });\r\n }\r\n return [];\r\n }\r\n}\r\nexports.ColorProviderFeature = ColorProviderFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nclass ConfigurationFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n capabilities.workspace = capabilities.workspace || {};\r\n capabilities.workspace.configuration = true;\r\n }\r\n initialize() {\r\n let client = this._client;\r\n client.onRequest(vscode_languageserver_protocol_1.ConfigurationRequest.type, (params, token) => {\r\n let configuration = (params) => {\r\n let result = [];\r\n for (let item of params.items) {\r\n let resource = item.scopeUri !== void 0 && item.scopeUri !== null ? this._client.protocol2CodeConverter.asUri(item.scopeUri) : undefined;\r\n result.push(this.getConfiguration(resource, item.section !== null ? item.section : undefined));\r\n }\r\n return result;\r\n };\r\n let middleware = client.clientOptions.middleware.workspace;\r\n return middleware && middleware.configuration\r\n ? middleware.configuration(params, token, configuration)\r\n : configuration(params, token);\r\n });\r\n }\r\n getConfiguration(resource, section) {\r\n let result = null;\r\n if (section) {\r\n let index = section.lastIndexOf('.');\r\n if (index === -1) {\r\n result = vscode_1.workspace.getConfiguration(undefined, resource).get(section);\r\n }\r\n else {\r\n let config = vscode_1.workspace.getConfiguration(section.substr(0, index), resource);\r\n if (config) {\r\n result = config.get(section.substr(index + 1));\r\n }\r\n }\r\n }\r\n else {\r\n let config = vscode_1.workspace.getConfiguration(undefined, resource);\r\n result = {};\r\n for (let key of Object.keys(config)) {\r\n if (config.has(key)) {\r\n result[key] = config.get(key);\r\n }\r\n }\r\n }\r\n if (!result) {\r\n return null;\r\n }\r\n return result;\r\n }\r\n}\r\nexports.ConfigurationFeature = ConfigurationFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nclass DeclarationFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.DeclarationRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n const declarationSupport = ensure(ensure(capabilites, 'textDocument'), 'declaration');\r\n declarationSupport.dynamicRegistration = true;\r\n declarationSupport.linkSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n const [id, options] = this.getRegistration(documentSelector, capabilities.declarationProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideDeclaration: (document, position, token) => {\r\n const client = this._client;\r\n const provideDeclaration = (document, position, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDeclarationResult, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideDeclaration\r\n ? middleware.provideDeclaration(document, position, token, provideDeclaration)\r\n : provideDeclaration(document, position, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerDeclarationProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nexports.DeclarationFeature = DeclarationFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nclass FoldingRangeFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.FoldingRangeRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let capability = ensure(ensure(capabilites, 'textDocument'), 'foldingRange');\r\n capability.dynamicRegistration = true;\r\n capability.rangeLimit = 5000;\r\n capability.lineFoldingOnly = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let [id, options] = this.getRegistration(documentSelector, capabilities.foldingRangeProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideFoldingRanges: (document, context, token) => {\r\n const client = this._client;\r\n const provideFoldingRanges = (document, _, token) => {\r\n const requestParams = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, requestParams, token).then(this.asFoldingRanges.bind(this), (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideFoldingRanges\r\n ? middleware.provideFoldingRanges(document, context, token, provideFoldingRanges)\r\n : provideFoldingRanges(document, context, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerFoldingRangeProvider(options.documentSelector, provider), provider];\r\n }\r\n asFoldingRangeKind(kind) {\r\n if (kind) {\r\n switch (kind) {\r\n case vscode_languageserver_protocol_1.FoldingRangeKind.Comment:\r\n return vscode_1.FoldingRangeKind.Comment;\r\n case vscode_languageserver_protocol_1.FoldingRangeKind.Imports:\r\n return vscode_1.FoldingRangeKind.Imports;\r\n case vscode_languageserver_protocol_1.FoldingRangeKind.Region:\r\n return vscode_1.FoldingRangeKind.Region;\r\n }\r\n }\r\n return void 0;\r\n }\r\n asFoldingRanges(foldingRanges) {\r\n if (Array.isArray(foldingRanges)) {\r\n return foldingRanges.map(r => {\r\n return new vscode_1.FoldingRange(r.startLine, r.endLine, this.asFoldingRangeKind(r.kind));\r\n });\r\n }\r\n return [];\r\n }\r\n}\r\nexports.FoldingRangeFeature = FoldingRangeFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nclass ImplementationFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.ImplementationRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let implementationSupport = ensure(ensure(capabilites, 'textDocument'), 'implementation');\r\n implementationSupport.dynamicRegistration = true;\r\n implementationSupport.linkSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let [id, options] = this.getRegistration(documentSelector, capabilities.implementationProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideImplementation: (document, position, token) => {\r\n const client = this._client;\r\n const provideImplementation = (document, position, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDefinitionResult, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideImplementation\r\n ? middleware.provideImplementation(document, position, token, provideImplementation)\r\n : provideImplementation(document, position, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerImplementationProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nexports.ImplementationFeature = ImplementationFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst cp = require(\"child_process\");\r\nconst fs = require(\"fs\");\r\nconst SemVer = require(\"semver\");\r\nconst client_1 = require(\"./client\");\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst colorProvider_1 = require(\"./colorProvider\");\r\nconst configuration_1 = require(\"./configuration\");\r\nconst implementation_1 = require(\"./implementation\");\r\nconst typeDefinition_1 = require(\"./typeDefinition\");\r\nconst workspaceFolders_1 = require(\"./workspaceFolders\");\r\nconst foldingRange_1 = require(\"./foldingRange\");\r\nconst declaration_1 = require(\"./declaration\");\r\nconst selectionRange_1 = require(\"./selectionRange\");\r\nconst progress_1 = require(\"./progress\");\r\nconst callHierarchy_proposed_1 = require(\"./callHierarchy.proposed\");\r\nconst semanticTokens_proposed_1 = require(\"./semanticTokens.proposed\");\r\nconst Is = require(\"./utils/is\");\r\nconst processes_1 = require(\"./utils/processes\");\r\n__export(require(\"./client\"));\r\nconst REQUIRED_VSCODE_VERSION = '^1.41.0'; // do not change format, updated by `updateVSCode` script\r\nvar Executable;\r\n(function (Executable) {\r\n function is(value) {\r\n return Is.string(value.command);\r\n }\r\n Executable.is = is;\r\n})(Executable || (Executable = {}));\r\nvar TransportKind;\r\n(function (TransportKind) {\r\n TransportKind[TransportKind[\"stdio\"] = 0] = \"stdio\";\r\n TransportKind[TransportKind[\"ipc\"] = 1] = \"ipc\";\r\n TransportKind[TransportKind[\"pipe\"] = 2] = \"pipe\";\r\n TransportKind[TransportKind[\"socket\"] = 3] = \"socket\";\r\n})(TransportKind = exports.TransportKind || (exports.TransportKind = {}));\r\nvar Transport;\r\n(function (Transport) {\r\n function isSocket(value) {\r\n let candidate = value;\r\n return candidate && candidate.kind === TransportKind.socket && Is.number(candidate.port);\r\n }\r\n Transport.isSocket = isSocket;\r\n})(Transport || (Transport = {}));\r\nvar NodeModule;\r\n(function (NodeModule) {\r\n function is(value) {\r\n return Is.string(value.module);\r\n }\r\n NodeModule.is = is;\r\n})(NodeModule || (NodeModule = {}));\r\nvar StreamInfo;\r\n(function (StreamInfo) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && candidate.writer !== void 0 && candidate.reader !== void 0;\r\n }\r\n StreamInfo.is = is;\r\n})(StreamInfo || (StreamInfo = {}));\r\nvar ChildProcessInfo;\r\n(function (ChildProcessInfo) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && candidate.process !== void 0 && typeof candidate.detached === 'boolean';\r\n }\r\n ChildProcessInfo.is = is;\r\n})(ChildProcessInfo || (ChildProcessInfo = {}));\r\nclass LanguageClient extends client_1.BaseLanguageClient {\r\n constructor(arg1, arg2, arg3, arg4, arg5) {\r\n let id;\r\n let name;\r\n let serverOptions;\r\n let clientOptions;\r\n let forceDebug;\r\n if (Is.string(arg2)) {\r\n id = arg1;\r\n name = arg2;\r\n serverOptions = arg3;\r\n clientOptions = arg4;\r\n forceDebug = !!arg5;\r\n }\r\n else {\r\n id = arg1.toLowerCase();\r\n name = arg1;\r\n serverOptions = arg2;\r\n clientOptions = arg3;\r\n forceDebug = arg4;\r\n }\r\n if (forceDebug === void 0) {\r\n forceDebug = false;\r\n }\r\n super(id, name, clientOptions);\r\n this._serverOptions = serverOptions;\r\n this._forceDebug = forceDebug;\r\n try {\r\n this.checkVersion();\r\n }\r\n catch (error) {\r\n if (Is.string(error.message)) {\r\n this.outputChannel.appendLine(error.message);\r\n }\r\n throw error;\r\n }\r\n }\r\n checkVersion() {\r\n let codeVersion = SemVer.parse(vscode_1.version);\r\n if (!codeVersion) {\r\n throw new Error(`No valid VS Code version detected. Version string is: ${vscode_1.version}`);\r\n }\r\n // Remove the insider pre-release since we stay API compatible.\r\n if (codeVersion.prerelease && codeVersion.prerelease.length > 0) {\r\n codeVersion.prerelease = [];\r\n }\r\n if (!SemVer.satisfies(codeVersion, REQUIRED_VSCODE_VERSION)) {\r\n throw new Error(`The language client requires VS Code version ${REQUIRED_VSCODE_VERSION} but received version ${vscode_1.version}`);\r\n }\r\n }\r\n stop() {\r\n return super.stop().then(() => {\r\n if (this._serverProcess) {\r\n let toCheck = this._serverProcess;\r\n this._serverProcess = undefined;\r\n if (this._isDetached === void 0 || !this._isDetached) {\r\n this.checkProcessDied(toCheck);\r\n }\r\n this._isDetached = undefined;\r\n }\r\n });\r\n }\r\n checkProcessDied(childProcess) {\r\n if (!childProcess) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n // Test if the process is still alive. Throws an exception if not\r\n try {\r\n process.kill(childProcess.pid, 0);\r\n processes_1.terminate(childProcess);\r\n }\r\n catch (error) {\r\n // All is fine.\r\n }\r\n }, 2000);\r\n }\r\n handleConnectionClosed() {\r\n this._serverProcess = undefined;\r\n super.handleConnectionClosed();\r\n }\r\n createMessageTransports(encoding) {\r\n function getEnvironment(env, fork) {\r\n if (!env && !fork) {\r\n return undefined;\r\n }\r\n let result = Object.create(null);\r\n Object.keys(process.env).forEach(key => result[key] = process.env[key]);\r\n if (fork) {\r\n result['ELECTRON_RUN_AS_NODE'] = '1';\r\n result['ELECTRON_NO_ASAR'] = '1';\r\n }\r\n if (env) {\r\n Object.keys(env).forEach(key => result[key] = env[key]);\r\n }\r\n return result;\r\n }\r\n const debugStartWith = ['--debug=', '--debug-brk=', '--inspect=', '--inspect-brk='];\r\n const debugEquals = ['--debug', '--debug-brk', '--inspect', '--inspect-brk'];\r\n function startedInDebugMode() {\r\n let args = process.execArgv;\r\n if (args) {\r\n return args.some((arg) => {\r\n return debugStartWith.some(value => arg.startsWith(value)) ||\r\n debugEquals.some(value => arg === value);\r\n });\r\n }\r\n return false;\r\n }\r\n function assertStdio(process) {\r\n if (process.stdin === null || process.stdout === null || process.stderr === null) {\r\n throw new Error('Process created without stdio streams');\r\n }\r\n }\r\n let server = this._serverOptions;\r\n // We got a function.\r\n if (Is.func(server)) {\r\n return server().then((result) => {\r\n if (client_1.MessageTransports.is(result)) {\r\n this._isDetached = !!result.detached;\r\n return result;\r\n }\r\n else if (StreamInfo.is(result)) {\r\n this._isDetached = !!result.detached;\r\n return { reader: new vscode_languageserver_protocol_1.StreamMessageReader(result.reader), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(result.writer) };\r\n }\r\n else {\r\n let cp;\r\n if (ChildProcessInfo.is(result)) {\r\n cp = result.process;\r\n this._isDetached = result.detached;\r\n }\r\n else {\r\n cp = result;\r\n this._isDetached = false;\r\n }\r\n cp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n return { reader: new vscode_languageserver_protocol_1.StreamMessageReader(cp.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(cp.stdin) };\r\n }\r\n });\r\n }\r\n let json;\r\n let runDebug = server;\r\n if (runDebug.run || runDebug.debug) {\r\n if (this._forceDebug || startedInDebugMode()) {\r\n json = runDebug.debug;\r\n }\r\n else {\r\n json = runDebug.run;\r\n }\r\n }\r\n else {\r\n json = server;\r\n }\r\n return this._getServerWorkingDir(json.options).then(serverWorkingDir => {\r\n if (NodeModule.is(json) && json.module) {\r\n let node = json;\r\n let transport = node.transport || TransportKind.stdio;\r\n if (node.runtime) {\r\n let args = [];\r\n let options = node.options || Object.create(null);\r\n if (options.execArgv) {\r\n options.execArgv.forEach(element => args.push(element));\r\n }\r\n args.push(node.module);\r\n if (node.args) {\r\n node.args.forEach(element => args.push(element));\r\n }\r\n let execOptions = Object.create(null);\r\n execOptions.cwd = serverWorkingDir;\r\n execOptions.env = getEnvironment(options.env, false);\r\n let pipeName = undefined;\r\n if (transport === TransportKind.ipc) {\r\n // exec options not correctly typed in lib\r\n execOptions.stdio = [null, null, null, 'ipc'];\r\n args.push('--node-ipc');\r\n }\r\n else if (transport === TransportKind.stdio) {\r\n args.push('--stdio');\r\n }\r\n else if (transport === TransportKind.pipe) {\r\n pipeName = vscode_languageserver_protocol_1.generateRandomPipeName();\r\n args.push(`--pipe=${pipeName}`);\r\n }\r\n else if (Transport.isSocket(transport)) {\r\n args.push(`--socket=${transport.port}`);\r\n }\r\n args.push(`--clientProcessId=${process.pid.toString()}`);\r\n if (transport === TransportKind.ipc || transport === TransportKind.stdio) {\r\n let serverProcess = cp.spawn(node.runtime, args, execOptions);\r\n if (!serverProcess || !serverProcess.pid) {\r\n return Promise.reject(`Launching server using runtime ${node.runtime} failed.`);\r\n }\r\n this._serverProcess = serverProcess;\r\n serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n if (transport === TransportKind.ipc) {\r\n serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n return Promise.resolve({ reader: new vscode_languageserver_protocol_1.IPCMessageReader(serverProcess), writer: new vscode_languageserver_protocol_1.IPCMessageWriter(serverProcess) });\r\n }\r\n else {\r\n return Promise.resolve({ reader: new vscode_languageserver_protocol_1.StreamMessageReader(serverProcess.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(serverProcess.stdin) });\r\n }\r\n }\r\n else if (transport === TransportKind.pipe) {\r\n return vscode_languageserver_protocol_1.createClientPipeTransport(pipeName).then((transport) => {\r\n let process = cp.spawn(node.runtime, args, execOptions);\r\n if (!process || !process.pid) {\r\n return Promise.reject(`Launching server using runtime ${node.runtime} failed.`);\r\n }\r\n this._serverProcess = process;\r\n process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n return transport.onConnected().then((protocol) => {\r\n return { reader: protocol[0], writer: protocol[1] };\r\n });\r\n });\r\n }\r\n else if (Transport.isSocket(transport)) {\r\n return vscode_languageserver_protocol_1.createClientSocketTransport(transport.port).then((transport) => {\r\n let process = cp.spawn(node.runtime, args, execOptions);\r\n if (!process || !process.pid) {\r\n return Promise.reject(`Launching server using runtime ${node.runtime} failed.`);\r\n }\r\n this._serverProcess = process;\r\n process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n return transport.onConnected().then((protocol) => {\r\n return { reader: protocol[0], writer: protocol[1] };\r\n });\r\n });\r\n }\r\n }\r\n else {\r\n let pipeName = undefined;\r\n return new Promise((resolve, _reject) => {\r\n let args = node.args && node.args.slice() || [];\r\n if (transport === TransportKind.ipc) {\r\n args.push('--node-ipc');\r\n }\r\n else if (transport === TransportKind.stdio) {\r\n args.push('--stdio');\r\n }\r\n else if (transport === TransportKind.pipe) {\r\n pipeName = vscode_languageserver_protocol_1.generateRandomPipeName();\r\n args.push(`--pipe=${pipeName}`);\r\n }\r\n else if (Transport.isSocket(transport)) {\r\n args.push(`--socket=${transport.port}`);\r\n }\r\n args.push(`--clientProcessId=${process.pid.toString()}`);\r\n let options = node.options || Object.create(null);\r\n options.env = getEnvironment(options.env, true);\r\n options.execArgv = options.execArgv || [];\r\n options.cwd = serverWorkingDir;\r\n options.silent = true;\r\n if (transport === TransportKind.ipc || transport === TransportKind.stdio) {\r\n let sp = cp.fork(node.module, args || [], options);\r\n assertStdio(sp);\r\n this._serverProcess = sp;\r\n sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n if (transport === TransportKind.ipc) {\r\n sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n resolve({ reader: new vscode_languageserver_protocol_1.IPCMessageReader(this._serverProcess), writer: new vscode_languageserver_protocol_1.IPCMessageWriter(this._serverProcess) });\r\n }\r\n else {\r\n resolve({ reader: new vscode_languageserver_protocol_1.StreamMessageReader(sp.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(sp.stdin) });\r\n }\r\n }\r\n else if (transport === TransportKind.pipe) {\r\n vscode_languageserver_protocol_1.createClientPipeTransport(pipeName).then((transport) => {\r\n let sp = cp.fork(node.module, args || [], options);\r\n assertStdio(sp);\r\n this._serverProcess = sp;\r\n sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n transport.onConnected().then((protocol) => {\r\n resolve({ reader: protocol[0], writer: protocol[1] });\r\n });\r\n });\r\n }\r\n else if (Transport.isSocket(transport)) {\r\n vscode_languageserver_protocol_1.createClientSocketTransport(transport.port).then((transport) => {\r\n let sp = cp.fork(node.module, args || [], options);\r\n assertStdio(sp);\r\n this._serverProcess = sp;\r\n sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n transport.onConnected().then((protocol) => {\r\n resolve({ reader: protocol[0], writer: protocol[1] });\r\n });\r\n });\r\n }\r\n });\r\n }\r\n }\r\n else if (Executable.is(json) && json.command) {\r\n let command = json;\r\n let args = command.args || [];\r\n let options = Object.assign({}, command.options);\r\n options.cwd = options.cwd || serverWorkingDir;\r\n let serverProcess = cp.spawn(command.command, args, options);\r\n if (!serverProcess || !serverProcess.pid) {\r\n return Promise.reject(`Launching server using command ${command.command} failed.`);\r\n }\r\n serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\r\n this._serverProcess = serverProcess;\r\n this._isDetached = !!options.detached;\r\n return Promise.resolve({ reader: new vscode_languageserver_protocol_1.StreamMessageReader(serverProcess.stdout), writer: new vscode_languageserver_protocol_1.StreamMessageWriter(serverProcess.stdin) });\r\n }\r\n return Promise.reject(new Error(`Unsupported server configuration ` + JSON.stringify(server, null, 4)));\r\n });\r\n }\r\n registerProposedFeatures() {\r\n this.registerFeatures(ProposedFeatures.createAll(this));\r\n }\r\n registerBuiltinFeatures() {\r\n super.registerBuiltinFeatures();\r\n this.registerFeature(new configuration_1.ConfigurationFeature(this));\r\n this.registerFeature(new typeDefinition_1.TypeDefinitionFeature(this));\r\n this.registerFeature(new implementation_1.ImplementationFeature(this));\r\n this.registerFeature(new colorProvider_1.ColorProviderFeature(this));\r\n this.registerFeature(new workspaceFolders_1.WorkspaceFoldersFeature(this));\r\n this.registerFeature(new foldingRange_1.FoldingRangeFeature(this));\r\n this.registerFeature(new declaration_1.DeclarationFeature(this));\r\n this.registerFeature(new selectionRange_1.SelectionRangeFeature(this));\r\n this.registerFeature(new progress_1.ProgressFeature(this));\r\n }\r\n _mainGetRootPath() {\r\n let folders = vscode_1.workspace.workspaceFolders;\r\n if (!folders || folders.length === 0) {\r\n return undefined;\r\n }\r\n let folder = folders[0];\r\n if (folder.uri.scheme === 'file') {\r\n return folder.uri.fsPath;\r\n }\r\n return undefined;\r\n }\r\n _getServerWorkingDir(options) {\r\n let cwd = options && options.cwd;\r\n if (!cwd) {\r\n cwd = this.clientOptions.workspaceFolder\r\n ? this.clientOptions.workspaceFolder.uri.fsPath\r\n : this._mainGetRootPath();\r\n }\r\n if (cwd) {\r\n // make sure the folder exists otherwise creating the process will fail\r\n return new Promise(s => {\r\n fs.lstat(cwd, (err, stats) => {\r\n s(!err && stats.isDirectory() ? cwd : undefined);\r\n });\r\n });\r\n }\r\n return Promise.resolve(undefined);\r\n }\r\n}\r\nexports.LanguageClient = LanguageClient;\r\nclass SettingMonitor {\r\n constructor(_client, _setting) {\r\n this._client = _client;\r\n this._setting = _setting;\r\n this._listeners = [];\r\n }\r\n start() {\r\n vscode_1.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this._listeners);\r\n this.onDidChangeConfiguration();\r\n return new vscode_1.Disposable(() => {\r\n if (this._client.needsStop()) {\r\n this._client.stop();\r\n }\r\n });\r\n }\r\n onDidChangeConfiguration() {\r\n let index = this._setting.indexOf('.');\r\n let primary = index >= 0 ? this._setting.substr(0, index) : this._setting;\r\n let rest = index >= 0 ? this._setting.substr(index + 1) : undefined;\r\n let enabled = rest ? vscode_1.workspace.getConfiguration(primary).get(rest, false) : vscode_1.workspace.getConfiguration(primary);\r\n if (enabled && this._client.needsStart()) {\r\n this._client.start();\r\n }\r\n else if (!enabled && this._client.needsStop()) {\r\n this._client.stop();\r\n }\r\n }\r\n}\r\nexports.SettingMonitor = SettingMonitor;\r\n// Exporting proposed protocol.\r\nvar ProposedFeatures;\r\n(function (ProposedFeatures) {\r\n function createAll(client) {\r\n let result = [\r\n new callHierarchy_proposed_1.CallHierarchyFeature(client),\r\n new semanticTokens_proposed_1.SemanticTokensFeature(client)\r\n ];\r\n return result;\r\n }\r\n ProposedFeatures.createAll = createAll;\r\n})(ProposedFeatures = exports.ProposedFeatures || (exports.ProposedFeatures = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst progressPart_1 = require(\"./progressPart\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = Object.create(null);\r\n }\r\n return target[key];\r\n}\r\nclass ProgressFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n ensure(capabilities, 'window').workDoneProgress = true;\r\n }\r\n initialize() {\r\n let client = this._client;\r\n let createHandler = (params) => {\r\n new progressPart_1.ProgressPart(this._client, params.token);\r\n };\r\n client.onRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, createHandler);\r\n }\r\n}\r\nexports.ProgressFeature = ProgressFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst Is = require(\"./utils/is\");\r\nclass ProgressPart {\r\n constructor(_client, _token) {\r\n this._client = _client;\r\n this._token = _token;\r\n this._reported = 0;\r\n this._disposable = this._client.onProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, (value) => {\r\n switch (value.kind) {\r\n case 'begin':\r\n this.begin(value);\r\n break;\r\n case 'report':\r\n this.report(value);\r\n break;\r\n case 'end':\r\n this.done();\r\n break;\r\n }\r\n });\r\n }\r\n begin(params) {\r\n let location = params.cancellable ? vscode_1.ProgressLocation.Notification : vscode_1.ProgressLocation.Window;\r\n vscode_1.window.withProgress({ location, cancellable: params.cancellable, title: params.title }, async (progress, cancellationToken) => {\r\n this._progress = progress;\r\n this._infinite = params.percentage === undefined;\r\n this._cancellationToken = cancellationToken;\r\n this._cancellationToken.onCancellationRequested(() => {\r\n this._client.sendNotification(vscode_languageserver_protocol_1.WorkDoneProgressCancelNotification.type, { token: this._token });\r\n });\r\n this.report(params);\r\n return new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n });\r\n }\r\n report(params) {\r\n if (this._infinite && Is.string(params.message)) {\r\n this._progress.report({ message: params.message });\r\n }\r\n else if (Is.number(params.percentage)) {\r\n let percentage = Math.max(0, Math.min(params.percentage, 100));\r\n let delta = Math.max(0, percentage - this._reported);\r\n this._progress.report({ message: params.message, increment: delta });\r\n this._reported += delta;\r\n }\r\n }\r\n cancel() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = undefined;\r\n }\r\n if (this._reject) {\r\n this._reject();\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n done() {\r\n if (this._disposable) {\r\n this._disposable.dispose();\r\n this._disposable = undefined;\r\n }\r\n if (this._resolve) {\r\n this._resolve();\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n}\r\nexports.ProgressPart = ProgressPart;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst code = require(\"vscode\");\r\nclass ProtocolCodeLens extends code.CodeLens {\r\n constructor(range) {\r\n super(range);\r\n }\r\n}\r\nexports.default = ProtocolCodeLens;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst code = require(\"vscode\");\r\nclass ProtocolCompletionItem extends code.CompletionItem {\r\n constructor(label) {\r\n super(label);\r\n }\r\n}\r\nexports.default = ProtocolCompletionItem;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst code = require(\"vscode\");\r\nconst ls = require(\"vscode-languageserver-protocol\");\r\nconst Is = require(\"./utils/is\");\r\nconst protocolCompletionItem_1 = require(\"./protocolCompletionItem\");\r\nconst protocolCodeLens_1 = require(\"./protocolCodeLens\");\r\nconst protocolDocumentLink_1 = require(\"./protocolDocumentLink\");\r\nvar CodeBlock;\r\n(function (CodeBlock) {\r\n function is(value) {\r\n let candidate = value;\r\n return candidate && Is.string(candidate.language) && Is.string(candidate.value);\r\n }\r\n CodeBlock.is = is;\r\n})(CodeBlock || (CodeBlock = {}));\r\nfunction createConverter(uriConverter) {\r\n const nullConverter = (value) => code.Uri.parse(value);\r\n const _uriConverter = uriConverter || nullConverter;\r\n function asUri(value) {\r\n return _uriConverter(value);\r\n }\r\n function asDiagnostics(diagnostics) {\r\n return diagnostics.map(asDiagnostic);\r\n }\r\n function asDiagnostic(diagnostic) {\r\n let result = new code.Diagnostic(asRange(diagnostic.range), diagnostic.message, asDiagnosticSeverity(diagnostic.severity));\r\n if (Is.number(diagnostic.code) || Is.string(diagnostic.code)) {\r\n result.code = diagnostic.code;\r\n }\r\n if (diagnostic.source) {\r\n result.source = diagnostic.source;\r\n }\r\n if (diagnostic.relatedInformation) {\r\n result.relatedInformation = asRelatedInformation(diagnostic.relatedInformation);\r\n }\r\n if (Array.isArray(diagnostic.tags)) {\r\n result.tags = asDiagnosticTags(diagnostic.tags);\r\n }\r\n return result;\r\n }\r\n function asRelatedInformation(relatedInformation) {\r\n return relatedInformation.map(asDiagnosticRelatedInformation);\r\n }\r\n function asDiagnosticRelatedInformation(information) {\r\n return new code.DiagnosticRelatedInformation(asLocation(information.location), information.message);\r\n }\r\n function asDiagnosticTags(tags) {\r\n if (!tags) {\r\n return undefined;\r\n }\r\n let result = [];\r\n for (let tag of tags) {\r\n let converted = asDiagnosticTag(tag);\r\n if (converted !== undefined) {\r\n result.push(converted);\r\n }\r\n }\r\n return result.length > 0 ? result : undefined;\r\n }\r\n function asDiagnosticTag(tag) {\r\n switch (tag) {\r\n case ls.DiagnosticTag.Unnecessary:\r\n return code.DiagnosticTag.Unnecessary;\r\n case ls.DiagnosticTag.Deprecated:\r\n return code.DiagnosticTag.Deprecated;\r\n default:\r\n return undefined;\r\n }\r\n }\r\n function asPosition(value) {\r\n if (!value) {\r\n return undefined;\r\n }\r\n return new code.Position(value.line, value.character);\r\n }\r\n function asRange(value) {\r\n if (!value) {\r\n return undefined;\r\n }\r\n return new code.Range(asPosition(value.start), asPosition(value.end));\r\n }\r\n function asRanges(value) {\r\n return value.map(value => asRange(value));\r\n }\r\n function asDiagnosticSeverity(value) {\r\n if (value === undefined || value === null) {\r\n return code.DiagnosticSeverity.Error;\r\n }\r\n switch (value) {\r\n case ls.DiagnosticSeverity.Error:\r\n return code.DiagnosticSeverity.Error;\r\n case ls.DiagnosticSeverity.Warning:\r\n return code.DiagnosticSeverity.Warning;\r\n case ls.DiagnosticSeverity.Information:\r\n return code.DiagnosticSeverity.Information;\r\n case ls.DiagnosticSeverity.Hint:\r\n return code.DiagnosticSeverity.Hint;\r\n }\r\n return code.DiagnosticSeverity.Error;\r\n }\r\n function asHoverContent(value) {\r\n if (Is.string(value)) {\r\n return new code.MarkdownString(value);\r\n }\r\n else if (CodeBlock.is(value)) {\r\n let result = new code.MarkdownString();\r\n return result.appendCodeblock(value.value, value.language);\r\n }\r\n else if (Array.isArray(value)) {\r\n let result = [];\r\n for (let element of value) {\r\n let item = new code.MarkdownString();\r\n if (CodeBlock.is(element)) {\r\n item.appendCodeblock(element.value, element.language);\r\n }\r\n else {\r\n item.appendMarkdown(element);\r\n }\r\n result.push(item);\r\n }\r\n return result;\r\n }\r\n else {\r\n let result;\r\n switch (value.kind) {\r\n case ls.MarkupKind.Markdown:\r\n return new code.MarkdownString(value.value);\r\n case ls.MarkupKind.PlainText:\r\n result = new code.MarkdownString();\r\n result.appendText(value.value);\r\n return result;\r\n default:\r\n result = new code.MarkdownString();\r\n result.appendText(`Unsupported Markup content received. Kind is: ${value.kind}`);\r\n return result;\r\n }\r\n }\r\n }\r\n function asDocumentation(value) {\r\n if (Is.string(value)) {\r\n return value;\r\n }\r\n else {\r\n switch (value.kind) {\r\n case ls.MarkupKind.Markdown:\r\n return new code.MarkdownString(value.value);\r\n case ls.MarkupKind.PlainText:\r\n return value.value;\r\n default:\r\n return `Unsupported Markup content received. Kind is: ${value.kind}`;\r\n }\r\n }\r\n }\r\n function asHover(hover) {\r\n if (!hover) {\r\n return undefined;\r\n }\r\n return new code.Hover(asHoverContent(hover.contents), asRange(hover.range));\r\n }\r\n function asCompletionResult(result) {\r\n if (!result) {\r\n return undefined;\r\n }\r\n if (Array.isArray(result)) {\r\n let items = result;\r\n return items.map(asCompletionItem);\r\n }\r\n let list = result;\r\n return new code.CompletionList(list.items.map(asCompletionItem), list.isIncomplete);\r\n }\r\n function asCompletionItemKind(value) {\r\n // Protocol item kind is 1 based, codes item kind is zero based.\r\n if (ls.CompletionItemKind.Text <= value && value <= ls.CompletionItemKind.TypeParameter) {\r\n return [value - 1, undefined];\r\n }\r\n return [code.CompletionItemKind.Text, value];\r\n }\r\n function asCompletionItemTag(tag) {\r\n switch (tag) {\r\n case ls.CompletionItemTag.Deprecated:\r\n return code.CompletionItemTag.Deprecated;\r\n }\r\n return undefined;\r\n }\r\n function asCompletionItemTags(tags) {\r\n if (tags === undefined || tags === null) {\r\n return [];\r\n }\r\n const result = [];\r\n for (let tag of tags) {\r\n const converted = asCompletionItemTag(tag);\r\n if (converted !== undefined) {\r\n result.push(converted);\r\n }\r\n }\r\n return result;\r\n }\r\n function asCompletionItem(item) {\r\n let tags = asCompletionItemTags(item.tags);\r\n let result = new protocolCompletionItem_1.default(item.label);\r\n if (item.detail) {\r\n result.detail = item.detail;\r\n }\r\n if (item.documentation) {\r\n result.documentation = asDocumentation(item.documentation);\r\n result.documentationFormat = Is.string(item.documentation) ? '$string' : item.documentation.kind;\r\n }\r\n if (item.filterText) {\r\n result.filterText = item.filterText;\r\n }\r\n let insertText = asCompletionInsertText(item);\r\n if (insertText) {\r\n result.insertText = insertText.text;\r\n result.range = insertText.range;\r\n result.fromEdit = insertText.fromEdit;\r\n }\r\n if (Is.number(item.kind)) {\r\n let [itemKind, original] = asCompletionItemKind(item.kind);\r\n result.kind = itemKind;\r\n if (original) {\r\n result.originalItemKind = original;\r\n }\r\n }\r\n if (item.sortText) {\r\n result.sortText = item.sortText;\r\n }\r\n if (item.additionalTextEdits) {\r\n result.additionalTextEdits = asTextEdits(item.additionalTextEdits);\r\n }\r\n if (Is.stringArray(item.commitCharacters)) {\r\n result.commitCharacters = item.commitCharacters.slice();\r\n }\r\n if (item.command) {\r\n result.command = asCommand(item.command);\r\n }\r\n if (item.deprecated === true || item.deprecated === false) {\r\n result.deprecated = item.deprecated;\r\n if (item.deprecated === true) {\r\n tags.push(code.CompletionItemTag.Deprecated);\r\n }\r\n }\r\n if (item.preselect === true || item.preselect === false) {\r\n result.preselect = item.preselect;\r\n }\r\n if (item.data !== undefined) {\r\n result.data = item.data;\r\n }\r\n if (tags.length > 0) {\r\n result.tags = tags;\r\n }\r\n return result;\r\n }\r\n function asCompletionInsertText(item) {\r\n if (item.textEdit) {\r\n if (item.insertTextFormat === ls.InsertTextFormat.Snippet) {\r\n return { text: new code.SnippetString(item.textEdit.newText), range: asRange(item.textEdit.range), fromEdit: true };\r\n }\r\n else {\r\n return { text: item.textEdit.newText, range: asRange(item.textEdit.range), fromEdit: true };\r\n }\r\n }\r\n else if (item.insertText) {\r\n if (item.insertTextFormat === ls.InsertTextFormat.Snippet) {\r\n return { text: new code.SnippetString(item.insertText), fromEdit: false };\r\n }\r\n else {\r\n return { text: item.insertText, fromEdit: false };\r\n }\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n function asTextEdit(edit) {\r\n if (!edit) {\r\n return undefined;\r\n }\r\n return new code.TextEdit(asRange(edit.range), edit.newText);\r\n }\r\n function asTextEdits(items) {\r\n if (!items) {\r\n return undefined;\r\n }\r\n return items.map(asTextEdit);\r\n }\r\n function asSignatureHelp(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n let result = new code.SignatureHelp();\r\n if (Is.number(item.activeSignature)) {\r\n result.activeSignature = item.activeSignature;\r\n }\r\n else {\r\n // activeSignature was optional in the past\r\n result.activeSignature = 0;\r\n }\r\n if (Is.number(item.activeParameter)) {\r\n result.activeParameter = item.activeParameter;\r\n }\r\n else {\r\n // activeParameter was optional in the past\r\n result.activeParameter = 0;\r\n }\r\n if (item.signatures) {\r\n result.signatures = asSignatureInformations(item.signatures);\r\n }\r\n return result;\r\n }\r\n function asSignatureInformations(items) {\r\n return items.map(asSignatureInformation);\r\n }\r\n function asSignatureInformation(item) {\r\n let result = new code.SignatureInformation(item.label);\r\n if (item.documentation) {\r\n result.documentation = asDocumentation(item.documentation);\r\n }\r\n if (item.parameters) {\r\n result.parameters = asParameterInformations(item.parameters);\r\n }\r\n return result;\r\n }\r\n function asParameterInformations(item) {\r\n return item.map(asParameterInformation);\r\n }\r\n function asParameterInformation(item) {\r\n let result = new code.ParameterInformation(item.label);\r\n if (item.documentation) {\r\n result.documentation = asDocumentation(item.documentation);\r\n }\r\n return result;\r\n }\r\n function asLocation(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n return new code.Location(_uriConverter(item.uri), asRange(item.range));\r\n }\r\n function asDeclarationResult(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n return asLocationResult(item);\r\n }\r\n function asDefinitionResult(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n return asLocationResult(item);\r\n }\r\n function asLocationLink(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n let result = {\r\n targetUri: _uriConverter(item.targetUri),\r\n targetRange: asRange(item.targetSelectionRange),\r\n originSelectionRange: asRange(item.originSelectionRange),\r\n targetSelectionRange: asRange(item.targetSelectionRange)\r\n };\r\n if (!result.targetSelectionRange) {\r\n throw new Error(`targetSelectionRange must not be undefined or null`);\r\n }\r\n return result;\r\n }\r\n function asLocationResult(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n if (Is.array(item)) {\r\n if (item.length === 0) {\r\n return [];\r\n }\r\n else if (ls.LocationLink.is(item[0])) {\r\n let links = item;\r\n return links.map((link) => asLocationLink(link));\r\n }\r\n else {\r\n let locations = item;\r\n return locations.map((location) => asLocation(location));\r\n }\r\n }\r\n else if (ls.LocationLink.is(item)) {\r\n return [asLocationLink(item)];\r\n }\r\n else {\r\n return asLocation(item);\r\n }\r\n }\r\n function asReferences(values) {\r\n if (!values) {\r\n return undefined;\r\n }\r\n return values.map(location => asLocation(location));\r\n }\r\n function asDocumentHighlights(values) {\r\n if (!values) {\r\n return undefined;\r\n }\r\n return values.map(asDocumentHighlight);\r\n }\r\n function asDocumentHighlight(item) {\r\n let result = new code.DocumentHighlight(asRange(item.range));\r\n if (Is.number(item.kind)) {\r\n result.kind = asDocumentHighlightKind(item.kind);\r\n }\r\n return result;\r\n }\r\n function asDocumentHighlightKind(item) {\r\n switch (item) {\r\n case ls.DocumentHighlightKind.Text:\r\n return code.DocumentHighlightKind.Text;\r\n case ls.DocumentHighlightKind.Read:\r\n return code.DocumentHighlightKind.Read;\r\n case ls.DocumentHighlightKind.Write:\r\n return code.DocumentHighlightKind.Write;\r\n }\r\n return code.DocumentHighlightKind.Text;\r\n }\r\n function asSymbolInformations(values, uri) {\r\n if (!values) {\r\n return undefined;\r\n }\r\n return values.map(information => asSymbolInformation(information, uri));\r\n }\r\n function asSymbolKind(item) {\r\n if (item <= ls.SymbolKind.TypeParameter) {\r\n // Symbol kind is one based in the protocol and zero based in code.\r\n return item - 1;\r\n }\r\n return code.SymbolKind.Property;\r\n }\r\n function asSymbolTag(value) {\r\n return value;\r\n }\r\n function asSymbolTags(items) {\r\n if (items === undefined || items === null) {\r\n return undefined;\r\n }\r\n return items.map(asSymbolTag);\r\n }\r\n function asSymbolInformation(item, uri) {\r\n // Symbol kind is one based in the protocol and zero based in code.\r\n let result = new code.SymbolInformation(item.name, asSymbolKind(item.kind), asRange(item.location.range), item.location.uri ? _uriConverter(item.location.uri) : uri);\r\n if (item.containerName) {\r\n result.containerName = item.containerName;\r\n }\r\n return result;\r\n }\r\n function asDocumentSymbols(values) {\r\n if (values === undefined || values === null) {\r\n return undefined;\r\n }\r\n return values.map(asDocumentSymbol);\r\n }\r\n function asDocumentSymbol(value) {\r\n let result = new code.DocumentSymbol(value.name, value.detail || '', asSymbolKind(value.kind), asRange(value.range), asRange(value.selectionRange));\r\n if (value.children !== undefined && value.children.length > 0) {\r\n let children = [];\r\n for (let child of value.children) {\r\n children.push(asDocumentSymbol(child));\r\n }\r\n result.children = children;\r\n }\r\n return result;\r\n }\r\n function asCommand(item) {\r\n let result = { title: item.title, command: item.command };\r\n if (item.arguments) {\r\n result.arguments = item.arguments;\r\n }\r\n return result;\r\n }\r\n function asCommands(items) {\r\n if (!items) {\r\n return undefined;\r\n }\r\n return items.map(asCommand);\r\n }\r\n const kindMapping = new Map();\r\n kindMapping.set(ls.CodeActionKind.Empty, code.CodeActionKind.Empty);\r\n kindMapping.set(ls.CodeActionKind.QuickFix, code.CodeActionKind.QuickFix);\r\n kindMapping.set(ls.CodeActionKind.Refactor, code.CodeActionKind.Refactor);\r\n kindMapping.set(ls.CodeActionKind.RefactorExtract, code.CodeActionKind.RefactorExtract);\r\n kindMapping.set(ls.CodeActionKind.RefactorInline, code.CodeActionKind.RefactorInline);\r\n kindMapping.set(ls.CodeActionKind.RefactorRewrite, code.CodeActionKind.RefactorRewrite);\r\n kindMapping.set(ls.CodeActionKind.Source, code.CodeActionKind.Source);\r\n kindMapping.set(ls.CodeActionKind.SourceOrganizeImports, code.CodeActionKind.SourceOrganizeImports);\r\n function asCodeActionKind(item) {\r\n if (item === undefined || item === null) {\r\n return undefined;\r\n }\r\n let result = kindMapping.get(item);\r\n if (result) {\r\n return result;\r\n }\r\n let parts = item.split('.');\r\n result = code.CodeActionKind.Empty;\r\n for (let part of parts) {\r\n result = result.append(part);\r\n }\r\n return result;\r\n }\r\n function asCodeActionKinds(items) {\r\n if (items === undefined || items === null) {\r\n return undefined;\r\n }\r\n return items.map(kind => asCodeActionKind(kind));\r\n }\r\n function asCodeAction(item) {\r\n if (item === undefined || item === null) {\r\n return undefined;\r\n }\r\n let result = new code.CodeAction(item.title);\r\n if (item.kind !== undefined) {\r\n result.kind = asCodeActionKind(item.kind);\r\n }\r\n if (item.diagnostics) {\r\n result.diagnostics = asDiagnostics(item.diagnostics);\r\n }\r\n if (item.edit) {\r\n result.edit = asWorkspaceEdit(item.edit);\r\n }\r\n if (item.command) {\r\n result.command = asCommand(item.command);\r\n }\r\n if (item.isPreferred !== undefined) {\r\n result.isPreferred = item.isPreferred;\r\n }\r\n return result;\r\n }\r\n function asCodeLens(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n let result = new protocolCodeLens_1.default(asRange(item.range));\r\n if (item.command) {\r\n result.command = asCommand(item.command);\r\n }\r\n if (item.data !== undefined && item.data !== null) {\r\n result.data = item.data;\r\n }\r\n return result;\r\n }\r\n function asCodeLenses(items) {\r\n if (!items) {\r\n return undefined;\r\n }\r\n return items.map((codeLens) => asCodeLens(codeLens));\r\n }\r\n function asWorkspaceEdit(item) {\r\n if (!item) {\r\n return undefined;\r\n }\r\n let result = new code.WorkspaceEdit();\r\n if (item.documentChanges) {\r\n item.documentChanges.forEach(change => {\r\n if (ls.CreateFile.is(change)) {\r\n result.createFile(_uriConverter(change.uri), change.options);\r\n }\r\n else if (ls.RenameFile.is(change)) {\r\n result.renameFile(_uriConverter(change.oldUri), _uriConverter(change.newUri), change.options);\r\n }\r\n else if (ls.DeleteFile.is(change)) {\r\n result.deleteFile(_uriConverter(change.uri), change.options);\r\n }\r\n else if (ls.TextDocumentEdit.is(change)) {\r\n result.set(_uriConverter(change.textDocument.uri), asTextEdits(change.edits));\r\n }\r\n else {\r\n console.error(`Unknown workspace edit change received:\\n${JSON.stringify(change, undefined, 4)}`);\r\n }\r\n });\r\n }\r\n else if (item.changes) {\r\n Object.keys(item.changes).forEach(key => {\r\n result.set(_uriConverter(key), asTextEdits(item.changes[key]));\r\n });\r\n }\r\n return result;\r\n }\r\n function asDocumentLink(item) {\r\n let range = asRange(item.range);\r\n let target = item.target ? asUri(item.target) : undefined;\r\n // target must be optional in DocumentLink\r\n let link = new protocolDocumentLink_1.default(range, target);\r\n if (item.tooltip !== undefined) {\r\n link.tooltip = item.tooltip;\r\n }\r\n if (item.data !== undefined && item.data !== null) {\r\n link.data = item.data;\r\n }\r\n return link;\r\n }\r\n function asDocumentLinks(items) {\r\n if (!items) {\r\n return undefined;\r\n }\r\n return items.map(asDocumentLink);\r\n }\r\n function asColor(color) {\r\n return new code.Color(color.red, color.green, color.blue, color.alpha);\r\n }\r\n function asColorInformation(ci) {\r\n return new code.ColorInformation(asRange(ci.range), asColor(ci.color));\r\n }\r\n function asColorInformations(colorInformation) {\r\n if (Array.isArray(colorInformation)) {\r\n return colorInformation.map(asColorInformation);\r\n }\r\n return undefined;\r\n }\r\n function asColorPresentation(cp) {\r\n let presentation = new code.ColorPresentation(cp.label);\r\n presentation.additionalTextEdits = asTextEdits(cp.additionalTextEdits);\r\n if (cp.textEdit) {\r\n presentation.textEdit = asTextEdit(cp.textEdit);\r\n }\r\n return presentation;\r\n }\r\n function asColorPresentations(colorPresentations) {\r\n if (Array.isArray(colorPresentations)) {\r\n return colorPresentations.map(asColorPresentation);\r\n }\r\n return undefined;\r\n }\r\n function asFoldingRangeKind(kind) {\r\n if (kind) {\r\n switch (kind) {\r\n case ls.FoldingRangeKind.Comment:\r\n return code.FoldingRangeKind.Comment;\r\n case ls.FoldingRangeKind.Imports:\r\n return code.FoldingRangeKind.Imports;\r\n case ls.FoldingRangeKind.Region:\r\n return code.FoldingRangeKind.Region;\r\n }\r\n }\r\n return undefined;\r\n }\r\n function asFoldingRange(r) {\r\n return new code.FoldingRange(r.startLine, r.endLine, asFoldingRangeKind(r.kind));\r\n }\r\n function asFoldingRanges(foldingRanges) {\r\n if (Array.isArray(foldingRanges)) {\r\n return foldingRanges.map(asFoldingRange);\r\n }\r\n return undefined;\r\n }\r\n function asSelectionRange(selectionRange) {\r\n return new code.SelectionRange(asRange(selectionRange.range), selectionRange.parent ? asSelectionRange(selectionRange.parent) : undefined);\r\n }\r\n function asSelectionRanges(selectionRanges) {\r\n if (!Array.isArray(selectionRanges)) {\r\n return [];\r\n }\r\n let result = [];\r\n for (let range of selectionRanges) {\r\n result.push(asSelectionRange(range));\r\n }\r\n return result;\r\n }\r\n return {\r\n asUri,\r\n asDiagnostics,\r\n asDiagnostic,\r\n asRange,\r\n asRanges,\r\n asPosition,\r\n asDiagnosticSeverity,\r\n asDiagnosticTag,\r\n asHover,\r\n asCompletionResult,\r\n asCompletionItem,\r\n asTextEdit,\r\n asTextEdits,\r\n asSignatureHelp,\r\n asSignatureInformations,\r\n asSignatureInformation,\r\n asParameterInformations,\r\n asParameterInformation,\r\n asDeclarationResult,\r\n asDefinitionResult,\r\n asLocation,\r\n asReferences,\r\n asDocumentHighlights,\r\n asDocumentHighlight,\r\n asDocumentHighlightKind,\r\n asSymbolKind,\r\n asSymbolTag,\r\n asSymbolTags,\r\n asSymbolInformations,\r\n asSymbolInformation,\r\n asDocumentSymbols,\r\n asDocumentSymbol,\r\n asCommand,\r\n asCommands,\r\n asCodeAction,\r\n asCodeActionKind,\r\n asCodeActionKinds,\r\n asCodeLens,\r\n asCodeLenses,\r\n asWorkspaceEdit,\r\n asDocumentLink,\r\n asDocumentLinks,\r\n asFoldingRangeKind,\r\n asFoldingRange,\r\n asFoldingRanges,\r\n asColor,\r\n asColorInformation,\r\n asColorInformations,\r\n asColorPresentation,\r\n asColorPresentations,\r\n asSelectionRange,\r\n asSelectionRanges\r\n };\r\n}\r\nexports.createConverter = createConverter;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst code = require(\"vscode\");\r\nclass ProtocolDocumentLink extends code.DocumentLink {\r\n constructor(range, target) {\r\n super(range, target);\r\n }\r\n}\r\nexports.default = ProtocolDocumentLink;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = Object.create(null);\r\n }\r\n return target[key];\r\n}\r\nclass SelectionRangeFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.SelectionRangeRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n let capability = ensure(ensure(capabilites, 'textDocument'), 'selectionRange');\r\n capability.dynamicRegistration = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let [id, options] = this.getRegistration(documentSelector, capabilities.selectionRangeProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideSelectionRanges: (document, positions, token) => {\r\n const client = this._client;\r\n const provideSelectionRanges = (document, positions, token) => {\r\n const requestParams = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n positions: client.code2ProtocolConverter.asPositions(positions)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, requestParams, token).then((ranges) => client.protocol2CodeConverter.asSelectionRanges(ranges), (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideSelectionRanges\r\n ? middleware.provideSelectionRanges(document, positions, token, provideSelectionRanges)\r\n : provideSelectionRanges(document, positions, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerSelectionRangeProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nexports.SelectionRangeFeature = SelectionRangeFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode = require(\"vscode\");\r\nconst client_1 = require(\"./client\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nvar protocol2code;\r\n(function (protocol2code) {\r\n function asSemanticTokens(value) {\r\n if (value === undefined || value === null) {\r\n return undefined;\r\n }\r\n return new vscode.SemanticTokens(new Uint32Array(value.data), value.resultId);\r\n }\r\n protocol2code.asSemanticTokens = asSemanticTokens;\r\n function asSemanticTokensEdit(value) {\r\n return new vscode.SemanticTokensEdit(value.start, value.deleteCount, value.data !== undefined ? new Uint32Array(value.data) : undefined);\r\n }\r\n protocol2code.asSemanticTokensEdit = asSemanticTokensEdit;\r\n function asSemanticTokensEdits(value) {\r\n if (value === undefined || value === null) {\r\n return undefined;\r\n }\r\n return new vscode.SemanticTokensEdits(value.edits.map(asSemanticTokensEdit), value.resultId);\r\n }\r\n protocol2code.asSemanticTokensEdits = asSemanticTokensEdits;\r\n function asLegend(value) {\r\n return value;\r\n }\r\n protocol2code.asLegend = asLegend;\r\n})(protocol2code || (protocol2code = {}));\r\nclass SemanticTokensFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type);\r\n }\r\n fillClientCapabilities(cap) {\r\n const capabilites = cap;\r\n let capability = ensure(ensure(capabilites, 'textDocument'), 'semanticTokens');\r\n capability.dynamicRegistration = true;\r\n capability.tokenTypes = [\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.comment,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.keyword,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.number,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.regexp,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.operator,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.namespace,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.type,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.struct,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.class,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.interface,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.enum,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.typeParameter,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.function,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.member,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.macro,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.variable,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.parameter,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.property,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenTypes.label\r\n ];\r\n capability.tokenModifiers = [\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.declaration,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.documentation,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.static,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.abstract,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.deprecated,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.async,\r\n vscode_languageserver_protocol_1.Proposed.SemanticTokenModifiers.readonly\r\n ];\r\n }\r\n initialize(cap, documentSelector) {\r\n const capabilities = cap;\r\n let [id, options] = this.getRegistration(documentSelector, capabilities.semanticTokensProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const hasEditProvider = options.documentProvider !== undefined && typeof options.documentProvider !== 'boolean' && options.documentProvider.edits === true;\r\n const documentProvider = {\r\n provideDocumentSemanticTokens: (document, token) => {\r\n const client = this._client;\r\n const middleware = client.clientOptions.middleware;\r\n const provideDocumentSemanticTokens = (document, token) => {\r\n const params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type, params, token).then((result) => {\r\n return protocol2code.asSemanticTokens(result);\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRequest.type, error);\r\n return undefined;\r\n });\r\n };\r\n return middleware.provideDocumentSemanticTokens\r\n ? middleware.provideDocumentSemanticTokens(document, token, provideDocumentSemanticTokens)\r\n : provideDocumentSemanticTokens(document, token);\r\n },\r\n provideDocumentSemanticTokensEdits: hasEditProvider\r\n ? (document, previousResultId, token) => {\r\n const client = this._client;\r\n const middleware = client.clientOptions.middleware;\r\n const provideDocumentSemanticTokensEdits = (document, previousResultId, token) => {\r\n const params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n previousResultId\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensEditsRequest.type, params, token).then((result) => {\r\n if (vscode_languageserver_protocol_1.Proposed.SemanticTokens.is(result)) {\r\n return protocol2code.asSemanticTokens(result);\r\n }\r\n else {\r\n return protocol2code.asSemanticTokensEdits(result);\r\n }\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensEditsRequest.type, error);\r\n return undefined;\r\n });\r\n };\r\n return middleware.provideDocumentSemanticTokensEdits\r\n ? middleware.provideDocumentSemanticTokensEdits(document, previousResultId, token, provideDocumentSemanticTokensEdits)\r\n : provideDocumentSemanticTokensEdits(document, previousResultId, token);\r\n }\r\n : undefined\r\n };\r\n const hasRangeProvider = options.rangeProvider === true;\r\n const rangeProvider = hasRangeProvider\r\n ? {\r\n provideDocumentRangeSemanticTokens: (document, range, token) => {\r\n const client = this._client;\r\n const middleware = client.clientOptions.middleware;\r\n const provideDocumentRangeSemanticTokens = (document, range, token) => {\r\n const params = {\r\n textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\r\n range: client.code2ProtocolConverter.asRange(range)\r\n };\r\n return client.sendRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRangeRequest.type, params, token).then((result) => {\r\n return protocol2code.asSemanticTokens(result);\r\n }, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.Proposed.SemanticTokensRangeRequest.type, error);\r\n return undefined;\r\n });\r\n };\r\n return middleware.provideDocumentRangeSemanticTokens\r\n ? middleware.provideDocumentRangeSemanticTokens(document, range, token, provideDocumentRangeSemanticTokens)\r\n : provideDocumentRangeSemanticTokens(document, range, token);\r\n }\r\n }\r\n : undefined;\r\n const disposables = [];\r\n const legend = protocol2code.asLegend(options.legend);\r\n disposables.push(vscode.languages.registerDocumentSemanticTokensProvider(options.documentSelector, documentProvider, legend));\r\n if (rangeProvider !== undefined) {\r\n disposables.push(vscode.languages.registerDocumentRangeSemanticTokensProvider(options.documentSelector, rangeProvider, legend));\r\n }\r\n return [new vscode.Disposable(() => disposables.forEach(item => item.dispose())), { document: documentProvider, range: rangeProvider }];\r\n }\r\n}\r\nexports.SemanticTokensFeature = SemanticTokensFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nconst client_1 = require(\"./client\");\r\nfunction ensure(target, key) {\r\n if (target[key] === void 0) {\r\n target[key] = {};\r\n }\r\n return target[key];\r\n}\r\nclass TypeDefinitionFeature extends client_1.TextDocumentFeature {\r\n constructor(client) {\r\n super(client, vscode_languageserver_protocol_1.TypeDefinitionRequest.type);\r\n }\r\n fillClientCapabilities(capabilites) {\r\n ensure(ensure(capabilites, 'textDocument'), 'typeDefinition').dynamicRegistration = true;\r\n let typeDefinitionSupport = ensure(ensure(capabilites, 'textDocument'), 'typeDefinition');\r\n typeDefinitionSupport.dynamicRegistration = true;\r\n typeDefinitionSupport.linkSupport = true;\r\n }\r\n initialize(capabilities, documentSelector) {\r\n let [id, options] = this.getRegistration(documentSelector, capabilities.typeDefinitionProvider);\r\n if (!id || !options) {\r\n return;\r\n }\r\n this.register(this.messages, { id: id, registerOptions: options });\r\n }\r\n registerLanguageProvider(options) {\r\n const provider = {\r\n provideTypeDefinition: (document, position, token) => {\r\n const client = this._client;\r\n const provideTypeDefinition = (document, position, token) => {\r\n return client.sendRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then(client.protocol2CodeConverter.asDefinitionResult, (error) => {\r\n client.logFailedRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, error);\r\n return Promise.resolve(null);\r\n });\r\n };\r\n const middleware = client.clientOptions.middleware;\r\n return middleware.provideTypeDefinition\r\n ? middleware.provideTypeDefinition(document, position, token, provideTypeDefinition)\r\n : provideTypeDefinition(document, position, token);\r\n }\r\n };\r\n return [vscode_1.languages.registerTypeDefinitionProvider(options.documentSelector, provider), provider];\r\n }\r\n}\r\nexports.TypeDefinitionFeature = TypeDefinitionFeature;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass Delayer {\r\n constructor(defaultDelay) {\r\n this.defaultDelay = defaultDelay;\r\n this.timeout = undefined;\r\n this.completionPromise = undefined;\r\n this.onSuccess = undefined;\r\n this.task = undefined;\r\n }\r\n trigger(task, delay = this.defaultDelay) {\r\n this.task = task;\r\n if (delay >= 0) {\r\n this.cancelTimeout();\r\n }\r\n if (!this.completionPromise) {\r\n this.completionPromise = new Promise((resolve) => {\r\n this.onSuccess = resolve;\r\n }).then(() => {\r\n this.completionPromise = undefined;\r\n this.onSuccess = undefined;\r\n var result = this.task();\r\n this.task = undefined;\r\n return result;\r\n });\r\n }\r\n if (delay >= 0 || this.timeout === void 0) {\r\n this.timeout = setTimeout(() => {\r\n this.timeout = undefined;\r\n this.onSuccess(undefined);\r\n }, delay >= 0 ? delay : this.defaultDelay);\r\n }\r\n return this.completionPromise;\r\n }\r\n forceDelivery() {\r\n if (!this.completionPromise) {\r\n return undefined;\r\n }\r\n this.cancelTimeout();\r\n let result = this.task();\r\n this.completionPromise = undefined;\r\n this.onSuccess = undefined;\r\n this.task = undefined;\r\n return result;\r\n }\r\n isTriggered() {\r\n return this.timeout !== void 0;\r\n }\r\n cancel() {\r\n this.cancelTimeout();\r\n this.completionPromise = undefined;\r\n }\r\n cancelTimeout() {\r\n if (this.timeout !== void 0) {\r\n clearTimeout(this.timeout);\r\n this.timeout = undefined;\r\n }\r\n }\r\n}\r\nexports.Delayer = Delayer;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction boolean(value) {\r\n return value === true || value === false;\r\n}\r\nexports.boolean = boolean;\r\nfunction string(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\nexports.string = string;\r\nfunction number(value) {\r\n return typeof value === 'number' || value instanceof Number;\r\n}\r\nexports.number = number;\r\nfunction error(value) {\r\n return value instanceof Error;\r\n}\r\nexports.error = error;\r\nfunction func(value) {\r\n return typeof value === 'function';\r\n}\r\nexports.func = func;\r\nfunction array(value) {\r\n return Array.isArray(value);\r\n}\r\nexports.array = array;\r\nfunction stringArray(value) {\r\n return array(value) && value.every(elem => string(elem));\r\n}\r\nexports.stringArray = stringArray;\r\nfunction typedArray(value, check) {\r\n return Array.isArray(value) && value.every(check);\r\n}\r\nexports.typedArray = typedArray;\r\nfunction thenable(value) {\r\n return value && func(value.then);\r\n}\r\nexports.thenable = thenable;\r\nfunction asPromise(value) {\r\n if (value instanceof Promise) {\r\n return value;\r\n }\r\n else if (thenable(value)) {\r\n return new Promise((resolve, reject) => {\r\n value.then((resolved) => resolve(resolved), (error) => reject(error));\r\n });\r\n }\r\n else {\r\n return Promise.resolve(value);\r\n }\r\n}\r\nexports.asPromise = asPromise;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst cp = require(\"child_process\");\r\nconst path_1 = require(\"path\");\r\nconst isWindows = (process.platform === 'win32');\r\nconst isMacintosh = (process.platform === 'darwin');\r\nconst isLinux = (process.platform === 'linux');\r\nfunction terminate(process, cwd) {\r\n if (isWindows) {\r\n try {\r\n // This we run in Atom execFileSync is available.\r\n // Ignore stderr since this is otherwise piped to parent.stderr\r\n // which might be already closed.\r\n let options = {\r\n stdio: ['pipe', 'pipe', 'ignore']\r\n };\r\n if (cwd) {\r\n options.cwd = cwd;\r\n }\r\n cp.execFileSync('taskkill', ['/T', '/F', '/PID', process.pid.toString()], options);\r\n return true;\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n }\r\n else if (isLinux || isMacintosh) {\r\n try {\r\n var cmd = path_1.join(__dirname, 'terminateProcess.sh');\r\n var result = cp.spawnSync(cmd, [process.pid.toString()]);\r\n return result.error ? false : true;\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n }\r\n else {\r\n process.kill('SIGKILL');\r\n return true;\r\n }\r\n}\r\nexports.terminate = terminate;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass ValueUUID {\r\n constructor(_value) {\r\n this._value = _value;\r\n // empty\r\n }\r\n asHex() {\r\n return this._value;\r\n }\r\n equals(other) {\r\n return this.asHex() === other.asHex();\r\n }\r\n}\r\nclass V4UUID extends ValueUUID {\r\n constructor() {\r\n super([\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n '-',\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n '-',\r\n '4',\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n '-',\r\n V4UUID._oneOf(V4UUID._timeHighBits),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n '-',\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n V4UUID._randomHex(),\r\n ].join(''));\r\n }\r\n static _oneOf(array) {\r\n return array[Math.floor(array.length * Math.random())];\r\n }\r\n static _randomHex() {\r\n return V4UUID._oneOf(V4UUID._chars);\r\n }\r\n}\r\nV4UUID._chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\r\nV4UUID._timeHighBits = ['8', '9', 'a', 'b'];\r\n/**\r\n * An empty UUID that contains only zeros.\r\n */\r\nexports.empty = new ValueUUID('00000000-0000-0000-0000-000000000000');\r\nfunction v4() {\r\n return new V4UUID();\r\n}\r\nexports.v4 = v4;\r\nconst _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\r\nfunction isUUID(value) {\r\n return _UUIDPattern.test(value);\r\n}\r\nexports.isUUID = isUUID;\r\n/**\r\n * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.\r\n * @param value A uuid string.\r\n */\r\nfunction parse(value) {\r\n if (!isUUID(value)) {\r\n throw new Error('invalid uuid');\r\n }\r\n return new ValueUUID(value);\r\n}\r\nexports.parse = parse;\r\nfunction generateUuid() {\r\n return v4().asHex();\r\n}\r\nexports.generateUuid = generateUuid;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst UUID = require(\"./utils/uuid\");\r\nconst vscode_1 = require(\"vscode\");\r\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\r\nfunction access(target, key) {\r\n if (target === void 0) {\r\n return undefined;\r\n }\r\n return target[key];\r\n}\r\nfunction arrayDiff(left, right) {\r\n return left.filter(element => right.indexOf(element) < 0);\r\n}\r\nexports.arrayDiff = arrayDiff;\r\nclass WorkspaceFoldersFeature {\r\n constructor(_client) {\r\n this._client = _client;\r\n this._listeners = new Map();\r\n }\r\n get messages() {\r\n return vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type;\r\n }\r\n fillInitializeParams(params) {\r\n let folders = vscode_1.workspace.workspaceFolders;\r\n this.initializeWithFolders(folders);\r\n if (folders === void 0) {\r\n params.workspaceFolders = null;\r\n }\r\n else {\r\n params.workspaceFolders = folders.map(folder => this.asProtocol(folder));\r\n }\r\n }\r\n initializeWithFolders(currentWorkspaceFolders) {\r\n this._initialFolders = currentWorkspaceFolders;\r\n }\r\n fillClientCapabilities(capabilities) {\r\n capabilities.workspace = capabilities.workspace || {};\r\n capabilities.workspace.workspaceFolders = true;\r\n }\r\n initialize(capabilities) {\r\n let client = this._client;\r\n client.onRequest(vscode_languageserver_protocol_1.WorkspaceFoldersRequest.type, (token) => {\r\n let workspaceFolders = () => {\r\n let folders = vscode_1.workspace.workspaceFolders;\r\n if (folders === void 0) {\r\n return null;\r\n }\r\n let result = folders.map((folder) => {\r\n return this.asProtocol(folder);\r\n });\r\n return result;\r\n };\r\n let middleware = client.clientOptions.middleware.workspace;\r\n return middleware && middleware.workspaceFolders\r\n ? middleware.workspaceFolders(token, workspaceFolders)\r\n : workspaceFolders(token);\r\n });\r\n let value = access(access(access(capabilities, 'workspace'), 'workspaceFolders'), 'changeNotifications');\r\n let id;\r\n if (typeof value === 'string') {\r\n id = value;\r\n }\r\n else if (value === true) {\r\n id = UUID.generateUuid();\r\n }\r\n if (id) {\r\n this.register(this.messages, {\r\n id: id,\r\n registerOptions: undefined\r\n });\r\n }\r\n }\r\n sendInitialEvent(currentWorkspaceFolders) {\r\n if (this._initialFolders && currentWorkspaceFolders) {\r\n const removed = arrayDiff(this._initialFolders, currentWorkspaceFolders);\r\n const added = arrayDiff(currentWorkspaceFolders, this._initialFolders);\r\n if (added.length > 0 || removed.length > 0) {\r\n this.doSendEvent(added, removed);\r\n }\r\n }\r\n else if (this._initialFolders) {\r\n this.doSendEvent([], this._initialFolders);\r\n }\r\n else if (currentWorkspaceFolders) {\r\n this.doSendEvent(currentWorkspaceFolders, []);\r\n }\r\n }\r\n doSendEvent(addedFolders, removedFolders) {\r\n let params = {\r\n event: {\r\n added: addedFolders.map(folder => this.asProtocol(folder)),\r\n removed: removedFolders.map(folder => this.asProtocol(folder))\r\n }\r\n };\r\n this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type, params);\r\n }\r\n register(_message, data) {\r\n let id = data.id;\r\n let client = this._client;\r\n let disposable = vscode_1.workspace.onDidChangeWorkspaceFolders((event) => {\r\n let didChangeWorkspaceFolders = (event) => {\r\n this.doSendEvent(event.added, event.removed);\r\n };\r\n let middleware = client.clientOptions.middleware.workspace;\r\n middleware && middleware.didChangeWorkspaceFolders\r\n ? middleware.didChangeWorkspaceFolders(event, didChangeWorkspaceFolders)\r\n : didChangeWorkspaceFolders(event);\r\n });\r\n this._listeners.set(id, disposable);\r\n this.sendInitialEvent(vscode_1.workspace.workspaceFolders);\r\n }\r\n unregister(id) {\r\n let disposable = this._listeners.get(id);\r\n if (disposable === void 0) {\r\n return;\r\n }\r\n this._listeners.delete(id);\r\n disposable.dispose();\r\n }\r\n dispose() {\r\n for (let disposable of this._listeners.values()) {\r\n disposable.dispose();\r\n }\r\n this._listeners.clear();\r\n }\r\n asProtocol(workspaceFolder) {\r\n if (workspaceFolder === void 0) {\r\n return null;\r\n }\r\n return { uri: this._client.code2ProtocolConverter.asUri(workspaceFolder.uri), name: workspaceFolder.name };\r\n }\r\n}\r\nexports.WorkspaceFoldersFeature = WorkspaceFoldersFeature;\r\n","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar t = exports.tokens = {}\nvar R = 0\n\nfunction tok (n) {\n t[n] = R++\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ntok('NUMERICIDENTIFIER')\nsrc[t.NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\ntok('NUMERICIDENTIFIERLOOSE')\nsrc[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ntok('NONNUMERICIDENTIFIER')\nsrc[t.NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ntok('MAINVERSION')\nsrc[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')'\n\ntok('MAINVERSIONLOOSE')\nsrc[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ntok('PRERELEASEIDENTIFIER')\nsrc[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\ntok('PRERELEASEIDENTIFIERLOOSE')\nsrc[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ntok('PRERELEASE')\nsrc[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'\n\ntok('PRERELEASELOOSE')\nsrc[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ntok('BUILDIDENTIFIER')\nsrc[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ntok('BUILD')\nsrc[t.BUILD] = '(?:\\\\+(' + src[t.BUILDIDENTIFIER] +\n '(?:\\\\.' + src[t.BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ntok('FULL')\ntok('FULLPLAIN')\nsrc[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +\n src[t.PRERELEASE] + '?' +\n src[t.BUILD] + '?'\n\nsrc[t.FULL] = '^' + src[t.FULLPLAIN] + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ntok('LOOSEPLAIN')\nsrc[t.LOOSEPLAIN] = '[v=\\\\s]*' + src[t.MAINVERSIONLOOSE] +\n src[t.PRERELEASELOOSE] + '?' +\n src[t.BUILD] + '?'\n\ntok('LOOSE')\nsrc[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'\n\ntok('GTLT')\nsrc[t.GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ntok('XRANGEIDENTIFIERLOOSE')\nsrc[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\ntok('XRANGEIDENTIFIER')\nsrc[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\ntok('XRANGEPLAIN')\nsrc[t.XRANGEPLAIN] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:' + src[t.PRERELEASE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGEPLAINLOOSE')\nsrc[t.XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[t.PRERELEASELOOSE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGE')\nsrc[t.XRANGE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAIN] + '$'\ntok('XRANGELOOSE')\nsrc[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ntok('COERCE')\nsrc[t.COERCE] = '(^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\ntok('COERCERTL')\nre[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ntok('LONETILDE')\nsrc[t.LONETILDE] = '(?:~>?)'\n\ntok('TILDETRIM')\nsrc[t.TILDETRIM] = '(\\\\s*)' + src[t.LONETILDE] + '\\\\s+'\nre[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\ntok('TILDE')\nsrc[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'\ntok('TILDELOOSE')\nsrc[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ntok('LONECARET')\nsrc[t.LONECARET] = '(?:\\\\^)'\n\ntok('CARETTRIM')\nsrc[t.CARETTRIM] = '(\\\\s*)' + src[t.LONECARET] + '\\\\s+'\nre[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\ntok('CARET')\nsrc[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'\ntok('CARETLOOSE')\nsrc[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ntok('COMPARATORLOOSE')\nsrc[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'\ntok('COMPARATOR')\nsrc[t.COMPARATOR] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.FULLPLAIN] + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ntok('COMPARATORTRIM')\nsrc[t.COMPARATORTRIM] = '(\\\\s*)' + src[t.GTLT] +\n '\\\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ntok('HYPHENRANGE')\nsrc[t.HYPHENRANGE] = '^\\\\s*(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\ntok('HYPHENRANGELOOSE')\nsrc[t.HYPHENRANGELOOSE] = '^\\\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\ntok('STAR')\nsrc[t.STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p + pr\n } else if (xm) {\n ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0' + pr +\n ' <' + M + '.' + (+m + 1) + '.0' + pr\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n var match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n var next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(match[2] +\n '.' + (match[3] || '0') +\n '.' + (match[4] || '0'), options)\n}\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nexports.ErrorCodes = vscode_jsonrpc_1.ErrorCodes;\r\nexports.ResponseError = vscode_jsonrpc_1.ResponseError;\r\nexports.CancellationToken = vscode_jsonrpc_1.CancellationToken;\r\nexports.CancellationTokenSource = vscode_jsonrpc_1.CancellationTokenSource;\r\nexports.Disposable = vscode_jsonrpc_1.Disposable;\r\nexports.Event = vscode_jsonrpc_1.Event;\r\nexports.Emitter = vscode_jsonrpc_1.Emitter;\r\nexports.Trace = vscode_jsonrpc_1.Trace;\r\nexports.TraceFormat = vscode_jsonrpc_1.TraceFormat;\r\nexports.SetTraceNotification = vscode_jsonrpc_1.SetTraceNotification;\r\nexports.LogTraceNotification = vscode_jsonrpc_1.LogTraceNotification;\r\nexports.RequestType = vscode_jsonrpc_1.RequestType;\r\nexports.RequestType0 = vscode_jsonrpc_1.RequestType0;\r\nexports.NotificationType = vscode_jsonrpc_1.NotificationType;\r\nexports.NotificationType0 = vscode_jsonrpc_1.NotificationType0;\r\nexports.MessageReader = vscode_jsonrpc_1.MessageReader;\r\nexports.MessageWriter = vscode_jsonrpc_1.MessageWriter;\r\nexports.ConnectionStrategy = vscode_jsonrpc_1.ConnectionStrategy;\r\nexports.StreamMessageReader = vscode_jsonrpc_1.StreamMessageReader;\r\nexports.StreamMessageWriter = vscode_jsonrpc_1.StreamMessageWriter;\r\nexports.IPCMessageReader = vscode_jsonrpc_1.IPCMessageReader;\r\nexports.IPCMessageWriter = vscode_jsonrpc_1.IPCMessageWriter;\r\nexports.createClientPipeTransport = vscode_jsonrpc_1.createClientPipeTransport;\r\nexports.createServerPipeTransport = vscode_jsonrpc_1.createServerPipeTransport;\r\nexports.generateRandomPipeName = vscode_jsonrpc_1.generateRandomPipeName;\r\nexports.createClientSocketTransport = vscode_jsonrpc_1.createClientSocketTransport;\r\nexports.createServerSocketTransport = vscode_jsonrpc_1.createServerSocketTransport;\r\nexports.ProgressType = vscode_jsonrpc_1.ProgressType;\r\n__export(require(\"vscode-languageserver-types\"));\r\n__export(require(\"./protocol\"));\r\nconst callHierarchy = require(\"./protocol.callHierarchy.proposed\");\r\nconst st = require(\"./protocol.sematicTokens.proposed\");\r\nvar Proposed;\r\n(function (Proposed) {\r\n let CallHierarchyPrepareRequest;\r\n (function (CallHierarchyPrepareRequest) {\r\n CallHierarchyPrepareRequest.method = callHierarchy.CallHierarchyPrepareRequest.method;\r\n CallHierarchyPrepareRequest.type = callHierarchy.CallHierarchyPrepareRequest.type;\r\n })(CallHierarchyPrepareRequest = Proposed.CallHierarchyPrepareRequest || (Proposed.CallHierarchyPrepareRequest = {}));\r\n let CallHierarchyIncomingCallsRequest;\r\n (function (CallHierarchyIncomingCallsRequest) {\r\n CallHierarchyIncomingCallsRequest.method = callHierarchy.CallHierarchyIncomingCallsRequest.method;\r\n CallHierarchyIncomingCallsRequest.type = callHierarchy.CallHierarchyIncomingCallsRequest.type;\r\n })(CallHierarchyIncomingCallsRequest = Proposed.CallHierarchyIncomingCallsRequest || (Proposed.CallHierarchyIncomingCallsRequest = {}));\r\n let CallHierarchyOutgoingCallsRequest;\r\n (function (CallHierarchyOutgoingCallsRequest) {\r\n CallHierarchyOutgoingCallsRequest.method = callHierarchy.CallHierarchyOutgoingCallsRequest.method;\r\n CallHierarchyOutgoingCallsRequest.type = callHierarchy.CallHierarchyOutgoingCallsRequest.type;\r\n })(CallHierarchyOutgoingCallsRequest = Proposed.CallHierarchyOutgoingCallsRequest || (Proposed.CallHierarchyOutgoingCallsRequest = {}));\r\n Proposed.SemanticTokenTypes = st.SemanticTokenTypes;\r\n Proposed.SemanticTokenModifiers = st.SemanticTokenModifiers;\r\n Proposed.SemanticTokens = st.SemanticTokens;\r\n let SemanticTokensRequest;\r\n (function (SemanticTokensRequest) {\r\n SemanticTokensRequest.method = st.SemanticTokensRequest.method;\r\n SemanticTokensRequest.type = st.SemanticTokensRequest.type;\r\n })(SemanticTokensRequest = Proposed.SemanticTokensRequest || (Proposed.SemanticTokensRequest = {}));\r\n let SemanticTokensEditsRequest;\r\n (function (SemanticTokensEditsRequest) {\r\n SemanticTokensEditsRequest.method = st.SemanticTokensEditsRequest.method;\r\n SemanticTokensEditsRequest.type = st.SemanticTokensEditsRequest.type;\r\n })(SemanticTokensEditsRequest = Proposed.SemanticTokensEditsRequest || (Proposed.SemanticTokensEditsRequest = {}));\r\n let SemanticTokensRangeRequest;\r\n (function (SemanticTokensRangeRequest) {\r\n SemanticTokensRangeRequest.method = st.SemanticTokensRangeRequest.method;\r\n SemanticTokensRangeRequest.type = st.SemanticTokensRangeRequest.type;\r\n })(SemanticTokensRangeRequest = Proposed.SemanticTokensRangeRequest || (Proposed.SemanticTokensRangeRequest = {}));\r\n})(Proposed = exports.Proposed || (exports.Proposed = {}));\r\nfunction createProtocolConnection(reader, writer, logger, strategy) {\r\n return vscode_jsonrpc_1.createMessageConnection(reader, writer, logger, strategy);\r\n}\r\nexports.createProtocolConnection = createProtocolConnection;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nclass ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 {\r\n constructor(method) {\r\n super(method);\r\n }\r\n}\r\nexports.ProtocolRequestType0 = ProtocolRequestType0;\r\nclass ProtocolRequestType extends vscode_jsonrpc_1.RequestType {\r\n constructor(method) {\r\n super(method);\r\n }\r\n}\r\nexports.ProtocolRequestType = ProtocolRequestType;\r\nclass ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType {\r\n constructor(method) {\r\n super(method);\r\n }\r\n}\r\nexports.ProtocolNotificationType = ProtocolNotificationType;\r\nclass ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 {\r\n constructor(method) {\r\n super(method);\r\n }\r\n}\r\nexports.ProtocolNotificationType0 = ProtocolNotificationType0;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) TypeFox and others. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * A request to result a `CallHierarchyItem` in a document at a given position.\r\n * Can be used as an input to a incoming or outgoing call hierarchy.\r\n *\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar CallHierarchyPrepareRequest;\r\n(function (CallHierarchyPrepareRequest) {\r\n CallHierarchyPrepareRequest.method = 'textDocument/prepareCallHierarchy';\r\n CallHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest.method);\r\n})(CallHierarchyPrepareRequest = exports.CallHierarchyPrepareRequest || (exports.CallHierarchyPrepareRequest = {}));\r\n/**\r\n * A request to resolve the incoming calls for a given `CallHierarchyItem`.\r\n *\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar CallHierarchyIncomingCallsRequest;\r\n(function (CallHierarchyIncomingCallsRequest) {\r\n CallHierarchyIncomingCallsRequest.method = 'callHierarchy/incomingCalls';\r\n CallHierarchyIncomingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest.method);\r\n})(CallHierarchyIncomingCallsRequest = exports.CallHierarchyIncomingCallsRequest || (exports.CallHierarchyIncomingCallsRequest = {}));\r\n/**\r\n * A request to resolve the outgoing calls for a given `CallHierarchyItem`.\r\n *\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar CallHierarchyOutgoingCallsRequest;\r\n(function (CallHierarchyOutgoingCallsRequest) {\r\n CallHierarchyOutgoingCallsRequest.method = 'callHierarchy/outgoingCalls';\r\n CallHierarchyOutgoingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest.method);\r\n})(CallHierarchyOutgoingCallsRequest = exports.CallHierarchyOutgoingCallsRequest || (exports.CallHierarchyOutgoingCallsRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * A request to list all color symbols found in a given text document. The request's\r\n * parameter is of type [DocumentColorParams](#DocumentColorParams) the\r\n * response is of type [ColorInformation[]](#ColorInformation) or a Thenable\r\n * that resolves to such.\r\n */\r\nvar DocumentColorRequest;\r\n(function (DocumentColorRequest) {\r\n DocumentColorRequest.method = 'textDocument/documentColor';\r\n DocumentColorRequest.type = new messages_1.ProtocolRequestType(DocumentColorRequest.method);\r\n /** @deprecated Use DocumentColorRequest.type */\r\n DocumentColorRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(DocumentColorRequest = exports.DocumentColorRequest || (exports.DocumentColorRequest = {}));\r\n/**\r\n * A request to list all presentation for a color. The request's\r\n * parameter is of type [ColorPresentationParams](#ColorPresentationParams) the\r\n * response is of type [ColorInformation[]](#ColorInformation) or a Thenable\r\n * that resolves to such.\r\n */\r\nvar ColorPresentationRequest;\r\n(function (ColorPresentationRequest) {\r\n ColorPresentationRequest.type = new messages_1.ProtocolRequestType('textDocument/colorPresentation');\r\n})(ColorPresentationRequest = exports.ColorPresentationRequest || (exports.ColorPresentationRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * The 'workspace/configuration' request is sent from the server to the client to fetch a certain\r\n * configuration setting.\r\n *\r\n * This pull model replaces the old push model were the client signaled configuration change via an\r\n * event. If the server still needs to react to configuration changes (since the server caches the\r\n * result of `workspace/configuration` requests) the server should register for an empty configuration\r\n * change event and empty the cache if such an event is received.\r\n */\r\nvar ConfigurationRequest;\r\n(function (ConfigurationRequest) {\r\n ConfigurationRequest.type = new messages_1.ProtocolRequestType('workspace/configuration');\r\n})(ConfigurationRequest = exports.ConfigurationRequest || (exports.ConfigurationRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r\nlet __noDynamicImport;\r\n/**\r\n * A request to resolve the type definition locations of a symbol at a given text\r\n * document position. The request's parameter is of type [TextDocumentPositioParams]\r\n * (#TextDocumentPositionParams) the response is of type [Declaration](#Declaration)\r\n * or a typed array of [DeclarationLink](#DeclarationLink) or a Thenable that resolves\r\n * to such.\r\n */\r\nvar DeclarationRequest;\r\n(function (DeclarationRequest) {\r\n DeclarationRequest.method = 'textDocument/declaration';\r\n DeclarationRequest.type = new messages_1.ProtocolRequestType(DeclarationRequest.method);\r\n /** @deprecated Use DeclarationRequest.type */\r\n DeclarationRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(DeclarationRequest = exports.DeclarationRequest || (exports.DeclarationRequest = {}));\r\n","\"use strict\";\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * Enum of known range kinds\r\n */\r\nvar FoldingRangeKind;\r\n(function (FoldingRangeKind) {\r\n /**\r\n * Folding range for a comment\r\n */\r\n FoldingRangeKind[\"Comment\"] = \"comment\";\r\n /**\r\n * Folding range for a imports or includes\r\n */\r\n FoldingRangeKind[\"Imports\"] = \"imports\";\r\n /**\r\n * Folding range for a region (e.g. `#region`)\r\n */\r\n FoldingRangeKind[\"Region\"] = \"region\";\r\n})(FoldingRangeKind = exports.FoldingRangeKind || (exports.FoldingRangeKind = {}));\r\n/**\r\n * A request to provide folding ranges in a document. The request's\r\n * parameter is of type [FoldingRangeParams](#FoldingRangeParams), the\r\n * response is of type [FoldingRangeList](#FoldingRangeList) or a Thenable\r\n * that resolves to such.\r\n */\r\nvar FoldingRangeRequest;\r\n(function (FoldingRangeRequest) {\r\n FoldingRangeRequest.method = 'textDocument/foldingRange';\r\n FoldingRangeRequest.type = new messages_1.ProtocolRequestType(FoldingRangeRequest.method);\r\n /** @deprecated Use FoldingRangeRequest.type */\r\n FoldingRangeRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(FoldingRangeRequest = exports.FoldingRangeRequest || (exports.FoldingRangeRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r\nlet __noDynamicImport;\r\n/**\r\n * A request to resolve the implementation locations of a symbol at a given text\r\n * document position. The request's parameter is of type [TextDocumentPositioParams]\r\n * (#TextDocumentPositionParams) the response is of type [Definition](#Definition) or a\r\n * Thenable that resolves to such.\r\n */\r\nvar ImplementationRequest;\r\n(function (ImplementationRequest) {\r\n ImplementationRequest.method = 'textDocument/implementation';\r\n ImplementationRequest.type = new messages_1.ProtocolRequestType(ImplementationRequest.method);\r\n /** @deprecated Use ImplementationRequest.type */\r\n ImplementationRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(ImplementationRequest = exports.ImplementationRequest || (exports.ImplementationRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst Is = require(\"./utils/is\");\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\nconst protocol_implementation_1 = require(\"./protocol.implementation\");\r\nexports.ImplementationRequest = protocol_implementation_1.ImplementationRequest;\r\nconst protocol_typeDefinition_1 = require(\"./protocol.typeDefinition\");\r\nexports.TypeDefinitionRequest = protocol_typeDefinition_1.TypeDefinitionRequest;\r\nconst protocol_workspaceFolders_1 = require(\"./protocol.workspaceFolders\");\r\nexports.WorkspaceFoldersRequest = protocol_workspaceFolders_1.WorkspaceFoldersRequest;\r\nexports.DidChangeWorkspaceFoldersNotification = protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification;\r\nconst protocol_configuration_1 = require(\"./protocol.configuration\");\r\nexports.ConfigurationRequest = protocol_configuration_1.ConfigurationRequest;\r\nconst protocol_colorProvider_1 = require(\"./protocol.colorProvider\");\r\nexports.DocumentColorRequest = protocol_colorProvider_1.DocumentColorRequest;\r\nexports.ColorPresentationRequest = protocol_colorProvider_1.ColorPresentationRequest;\r\nconst protocol_foldingRange_1 = require(\"./protocol.foldingRange\");\r\nexports.FoldingRangeRequest = protocol_foldingRange_1.FoldingRangeRequest;\r\nconst protocol_declaration_1 = require(\"./protocol.declaration\");\r\nexports.DeclarationRequest = protocol_declaration_1.DeclarationRequest;\r\nconst protocol_selectionRange_1 = require(\"./protocol.selectionRange\");\r\nexports.SelectionRangeRequest = protocol_selectionRange_1.SelectionRangeRequest;\r\nconst protocol_progress_1 = require(\"./protocol.progress\");\r\nexports.WorkDoneProgress = protocol_progress_1.WorkDoneProgress;\r\nexports.WorkDoneProgressCreateRequest = protocol_progress_1.WorkDoneProgressCreateRequest;\r\nexports.WorkDoneProgressCancelNotification = protocol_progress_1.WorkDoneProgressCancelNotification;\r\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r\nlet __noDynamicImport;\r\n/**\r\n * The DocumentFilter namespace provides helper functions to work with\r\n * [DocumentFilter](#DocumentFilter) literals.\r\n */\r\nvar DocumentFilter;\r\n(function (DocumentFilter) {\r\n function is(value) {\r\n const candidate = value;\r\n return Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern);\r\n }\r\n DocumentFilter.is = is;\r\n})(DocumentFilter = exports.DocumentFilter || (exports.DocumentFilter = {}));\r\n/**\r\n * The DocumentSelector namespace provides helper functions to work with\r\n * [DocumentSelector](#DocumentSelector)s.\r\n */\r\nvar DocumentSelector;\r\n(function (DocumentSelector) {\r\n function is(value) {\r\n if (!Array.isArray(value)) {\r\n return false;\r\n }\r\n for (let elem of value) {\r\n if (!Is.string(elem) && !DocumentFilter.is(elem)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n DocumentSelector.is = is;\r\n})(DocumentSelector = exports.DocumentSelector || (exports.DocumentSelector = {}));\r\n/**\r\n * The `client/registerCapability` request is sent from the server to the client to register a new capability\r\n * handler on the client side.\r\n */\r\nvar RegistrationRequest;\r\n(function (RegistrationRequest) {\r\n RegistrationRequest.type = new messages_1.ProtocolRequestType('client/registerCapability');\r\n})(RegistrationRequest = exports.RegistrationRequest || (exports.RegistrationRequest = {}));\r\n/**\r\n * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability\r\n * handler on the client side.\r\n */\r\nvar UnregistrationRequest;\r\n(function (UnregistrationRequest) {\r\n UnregistrationRequest.type = new messages_1.ProtocolRequestType('client/unregisterCapability');\r\n})(UnregistrationRequest = exports.UnregistrationRequest || (exports.UnregistrationRequest = {}));\r\nvar ResourceOperationKind;\r\n(function (ResourceOperationKind) {\r\n /**\r\n * Supports creating new files and folders.\r\n */\r\n ResourceOperationKind.Create = 'create';\r\n /**\r\n * Supports renaming existing files and folders.\r\n */\r\n ResourceOperationKind.Rename = 'rename';\r\n /**\r\n * Supports deleting existing files and folders.\r\n */\r\n ResourceOperationKind.Delete = 'delete';\r\n})(ResourceOperationKind = exports.ResourceOperationKind || (exports.ResourceOperationKind = {}));\r\nvar FailureHandlingKind;\r\n(function (FailureHandlingKind) {\r\n /**\r\n * Applying the workspace change is simply aborted if one of the changes provided\r\n * fails. All operations executed before the failing operation stay executed.\r\n */\r\n FailureHandlingKind.Abort = 'abort';\r\n /**\r\n * All operations are executed transactional. That means they either all\r\n * succeed or no changes at all are applied to the workspace.\r\n */\r\n FailureHandlingKind.Transactional = 'transactional';\r\n /**\r\n * If the workspace edit contains only textual file changes they are executed transactional.\r\n * If resource changes (create, rename or delete file) are part of the change the failure\r\n * handling startegy is abort.\r\n */\r\n FailureHandlingKind.TextOnlyTransactional = 'textOnlyTransactional';\r\n /**\r\n * The client tries to undo the operations already executed. But there is no\r\n * guarantee that this is succeeding.\r\n */\r\n FailureHandlingKind.Undo = 'undo';\r\n})(FailureHandlingKind = exports.FailureHandlingKind || (exports.FailureHandlingKind = {}));\r\n/**\r\n * The StaticRegistrationOptions namespace provides helper functions to work with\r\n * [StaticRegistrationOptions](#StaticRegistrationOptions) literals.\r\n */\r\nvar StaticRegistrationOptions;\r\n(function (StaticRegistrationOptions) {\r\n function hasId(value) {\r\n const candidate = value;\r\n return candidate && Is.string(candidate.id) && candidate.id.length > 0;\r\n }\r\n StaticRegistrationOptions.hasId = hasId;\r\n})(StaticRegistrationOptions = exports.StaticRegistrationOptions || (exports.StaticRegistrationOptions = {}));\r\n/**\r\n * The TextDocumentRegistrationOptions namespace provides helper functions to work with\r\n * [TextDocumentRegistrationOptions](#TextDocumentRegistrationOptions) literals.\r\n */\r\nvar TextDocumentRegistrationOptions;\r\n(function (TextDocumentRegistrationOptions) {\r\n function is(value) {\r\n const candidate = value;\r\n return candidate && (candidate.documentSelector === null || DocumentSelector.is(candidate.documentSelector));\r\n }\r\n TextDocumentRegistrationOptions.is = is;\r\n})(TextDocumentRegistrationOptions = exports.TextDocumentRegistrationOptions || (exports.TextDocumentRegistrationOptions = {}));\r\n/**\r\n * The WorkDoneProgressOptions namespace provides helper functions to work with\r\n * [WorkDoneProgressOptions](#WorkDoneProgressOptions) literals.\r\n */\r\nvar WorkDoneProgressOptions;\r\n(function (WorkDoneProgressOptions) {\r\n function is(value) {\r\n const candidate = value;\r\n return Is.objectLiteral(candidate) && (candidate.workDoneProgress === undefined || Is.boolean(candidate.workDoneProgress));\r\n }\r\n WorkDoneProgressOptions.is = is;\r\n function hasWorkDoneProgress(value) {\r\n const candidate = value;\r\n return candidate && Is.boolean(candidate.workDoneProgress);\r\n }\r\n WorkDoneProgressOptions.hasWorkDoneProgress = hasWorkDoneProgress;\r\n})(WorkDoneProgressOptions = exports.WorkDoneProgressOptions || (exports.WorkDoneProgressOptions = {}));\r\n/**\r\n * The initialize request is sent from the client to the server.\r\n * It is sent once as the request after starting up the server.\r\n * The requests parameter is of type [InitializeParams](#InitializeParams)\r\n * the response if of type [InitializeResult](#InitializeResult) of a Thenable that\r\n * resolves to such.\r\n */\r\nvar InitializeRequest;\r\n(function (InitializeRequest) {\r\n InitializeRequest.type = new messages_1.ProtocolRequestType('initialize');\r\n})(InitializeRequest = exports.InitializeRequest || (exports.InitializeRequest = {}));\r\n/**\r\n * Known error codes for an `InitializeError`;\r\n */\r\nvar InitializeError;\r\n(function (InitializeError) {\r\n /**\r\n * If the protocol version provided by the client can't be handled by the server.\r\n * @deprecated This initialize error got replaced by client capabilities. There is\r\n * no version handshake in version 3.0x\r\n */\r\n InitializeError.unknownProtocolVersion = 1;\r\n})(InitializeError = exports.InitializeError || (exports.InitializeError = {}));\r\n/**\r\n * The intialized notification is sent from the client to the\r\n * server after the client is fully initialized and the server\r\n * is allowed to send requests from the server to the client.\r\n */\r\nvar InitializedNotification;\r\n(function (InitializedNotification) {\r\n InitializedNotification.type = new messages_1.ProtocolNotificationType('initialized');\r\n})(InitializedNotification = exports.InitializedNotification || (exports.InitializedNotification = {}));\r\n//---- Shutdown Method ----\r\n/**\r\n * A shutdown request is sent from the client to the server.\r\n * It is sent once when the client decides to shutdown the\r\n * server. The only notification that is sent after a shutdown request\r\n * is the exit event.\r\n */\r\nvar ShutdownRequest;\r\n(function (ShutdownRequest) {\r\n ShutdownRequest.type = new messages_1.ProtocolRequestType0('shutdown');\r\n})(ShutdownRequest = exports.ShutdownRequest || (exports.ShutdownRequest = {}));\r\n//---- Exit Notification ----\r\n/**\r\n * The exit event is sent from the client to the server to\r\n * ask the server to exit its process.\r\n */\r\nvar ExitNotification;\r\n(function (ExitNotification) {\r\n ExitNotification.type = new messages_1.ProtocolNotificationType0('exit');\r\n})(ExitNotification = exports.ExitNotification || (exports.ExitNotification = {}));\r\n/**\r\n * The configuration change notification is sent from the client to the server\r\n * when the client's configuration has changed. The notification contains\r\n * the changed configuration as defined by the language client.\r\n */\r\nvar DidChangeConfigurationNotification;\r\n(function (DidChangeConfigurationNotification) {\r\n DidChangeConfigurationNotification.type = new messages_1.ProtocolNotificationType('workspace/didChangeConfiguration');\r\n})(DidChangeConfigurationNotification = exports.DidChangeConfigurationNotification || (exports.DidChangeConfigurationNotification = {}));\r\n//---- Message show and log notifications ----\r\n/**\r\n * The message type\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n /**\r\n * An error message.\r\n */\r\n MessageType.Error = 1;\r\n /**\r\n * A warning message.\r\n */\r\n MessageType.Warning = 2;\r\n /**\r\n * An information message.\r\n */\r\n MessageType.Info = 3;\r\n /**\r\n * A log message.\r\n */\r\n MessageType.Log = 4;\r\n})(MessageType = exports.MessageType || (exports.MessageType = {}));\r\n/**\r\n * The show message notification is sent from a server to a client to ask\r\n * the client to display a particular message in the user interface.\r\n */\r\nvar ShowMessageNotification;\r\n(function (ShowMessageNotification) {\r\n ShowMessageNotification.type = new messages_1.ProtocolNotificationType('window/showMessage');\r\n})(ShowMessageNotification = exports.ShowMessageNotification || (exports.ShowMessageNotification = {}));\r\n/**\r\n * The show message request is sent from the server to the client to show a message\r\n * and a set of options actions to the user.\r\n */\r\nvar ShowMessageRequest;\r\n(function (ShowMessageRequest) {\r\n ShowMessageRequest.type = new messages_1.ProtocolRequestType('window/showMessageRequest');\r\n})(ShowMessageRequest = exports.ShowMessageRequest || (exports.ShowMessageRequest = {}));\r\n/**\r\n * The log message notification is sent from the server to the client to ask\r\n * the client to log a particular message.\r\n */\r\nvar LogMessageNotification;\r\n(function (LogMessageNotification) {\r\n LogMessageNotification.type = new messages_1.ProtocolNotificationType('window/logMessage');\r\n})(LogMessageNotification = exports.LogMessageNotification || (exports.LogMessageNotification = {}));\r\n//---- Telemetry notification\r\n/**\r\n * The telemetry event notification is sent from the server to the client to ask\r\n * the client to log telemetry data.\r\n */\r\nvar TelemetryEventNotification;\r\n(function (TelemetryEventNotification) {\r\n TelemetryEventNotification.type = new messages_1.ProtocolNotificationType('telemetry/event');\r\n})(TelemetryEventNotification = exports.TelemetryEventNotification || (exports.TelemetryEventNotification = {}));\r\n/**\r\n * Defines how the host (editor) should sync\r\n * document changes to the language server.\r\n */\r\nvar TextDocumentSyncKind;\r\n(function (TextDocumentSyncKind) {\r\n /**\r\n * Documents should not be synced at all.\r\n */\r\n TextDocumentSyncKind.None = 0;\r\n /**\r\n * Documents are synced by always sending the full content\r\n * of the document.\r\n */\r\n TextDocumentSyncKind.Full = 1;\r\n /**\r\n * Documents are synced by sending the full content on open.\r\n * After that only incremental updates to the document are\r\n * send.\r\n */\r\n TextDocumentSyncKind.Incremental = 2;\r\n})(TextDocumentSyncKind = exports.TextDocumentSyncKind || (exports.TextDocumentSyncKind = {}));\r\n/**\r\n * The document open notification is sent from the client to the server to signal\r\n * newly opened text documents. The document's truth is now managed by the client\r\n * and the server must not try to read the document's truth using the document's\r\n * uri. Open in this sense means it is managed by the client. It doesn't necessarily\r\n * mean that its content is presented in an editor. An open notification must not\r\n * be sent more than once without a corresponding close notification send before.\r\n * This means open and close notification must be balanced and the max open count\r\n * is one.\r\n */\r\nvar DidOpenTextDocumentNotification;\r\n(function (DidOpenTextDocumentNotification) {\r\n DidOpenTextDocumentNotification.method = 'textDocument/didOpen';\r\n DidOpenTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification.method);\r\n})(DidOpenTextDocumentNotification = exports.DidOpenTextDocumentNotification || (exports.DidOpenTextDocumentNotification = {}));\r\n/**\r\n * The document change notification is sent from the client to the server to signal\r\n * changes to a text document.\r\n */\r\nvar DidChangeTextDocumentNotification;\r\n(function (DidChangeTextDocumentNotification) {\r\n DidChangeTextDocumentNotification.method = 'textDocument/didChange';\r\n DidChangeTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification.method);\r\n})(DidChangeTextDocumentNotification = exports.DidChangeTextDocumentNotification || (exports.DidChangeTextDocumentNotification = {}));\r\n/**\r\n * The document close notification is sent from the client to the server when\r\n * the document got closed in the client. The document's truth now exists where\r\n * the document's uri points to (e.g. if the document's uri is a file uri the\r\n * truth now exists on disk). As with the open notification the close notification\r\n * is about managing the document's content. Receiving a close notification\r\n * doesn't mean that the document was open in an editor before. A close\r\n * notification requires a previous open notification to be sent.\r\n */\r\nvar DidCloseTextDocumentNotification;\r\n(function (DidCloseTextDocumentNotification) {\r\n DidCloseTextDocumentNotification.method = 'textDocument/didClose';\r\n DidCloseTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification.method);\r\n})(DidCloseTextDocumentNotification = exports.DidCloseTextDocumentNotification || (exports.DidCloseTextDocumentNotification = {}));\r\n/**\r\n * The document save notification is sent from the client to the server when\r\n * the document got saved in the client.\r\n */\r\nvar DidSaveTextDocumentNotification;\r\n(function (DidSaveTextDocumentNotification) {\r\n DidSaveTextDocumentNotification.method = 'textDocument/didSave';\r\n DidSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification.method);\r\n})(DidSaveTextDocumentNotification = exports.DidSaveTextDocumentNotification || (exports.DidSaveTextDocumentNotification = {}));\r\n/**\r\n * Represents reasons why a text document is saved.\r\n */\r\nvar TextDocumentSaveReason;\r\n(function (TextDocumentSaveReason) {\r\n /**\r\n * Manually triggered, e.g. by the user pressing save, by starting debugging,\r\n * or by an API call.\r\n */\r\n TextDocumentSaveReason.Manual = 1;\r\n /**\r\n * Automatic after a delay.\r\n */\r\n TextDocumentSaveReason.AfterDelay = 2;\r\n /**\r\n * When the editor lost focus.\r\n */\r\n TextDocumentSaveReason.FocusOut = 3;\r\n})(TextDocumentSaveReason = exports.TextDocumentSaveReason || (exports.TextDocumentSaveReason = {}));\r\n/**\r\n * A document will save notification is sent from the client to the server before\r\n * the document is actually saved.\r\n */\r\nvar WillSaveTextDocumentNotification;\r\n(function (WillSaveTextDocumentNotification) {\r\n WillSaveTextDocumentNotification.method = 'textDocument/willSave';\r\n WillSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification.method);\r\n})(WillSaveTextDocumentNotification = exports.WillSaveTextDocumentNotification || (exports.WillSaveTextDocumentNotification = {}));\r\n/**\r\n * A document will save request is sent from the client to the server before\r\n * the document is actually saved. The request can return an array of TextEdits\r\n * which will be applied to the text document before it is saved. Please note that\r\n * clients might drop results if computing the text edits took too long or if a\r\n * server constantly fails on this request. This is done to keep the save fast and\r\n * reliable.\r\n */\r\nvar WillSaveTextDocumentWaitUntilRequest;\r\n(function (WillSaveTextDocumentWaitUntilRequest) {\r\n WillSaveTextDocumentWaitUntilRequest.method = 'textDocument/willSaveWaitUntil';\r\n WillSaveTextDocumentWaitUntilRequest.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest.method);\r\n})(WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentWaitUntilRequest || (exports.WillSaveTextDocumentWaitUntilRequest = {}));\r\n/**\r\n * The watched files notification is sent from the client to the server when\r\n * the client detects changes to file watched by the language client.\r\n */\r\nvar DidChangeWatchedFilesNotification;\r\n(function (DidChangeWatchedFilesNotification) {\r\n DidChangeWatchedFilesNotification.type = new messages_1.ProtocolNotificationType('workspace/didChangeWatchedFiles');\r\n})(DidChangeWatchedFilesNotification = exports.DidChangeWatchedFilesNotification || (exports.DidChangeWatchedFilesNotification = {}));\r\n/**\r\n * The file event type\r\n */\r\nvar FileChangeType;\r\n(function (FileChangeType) {\r\n /**\r\n * The file got created.\r\n */\r\n FileChangeType.Created = 1;\r\n /**\r\n * The file got changed.\r\n */\r\n FileChangeType.Changed = 2;\r\n /**\r\n * The file got deleted.\r\n */\r\n FileChangeType.Deleted = 3;\r\n})(FileChangeType = exports.FileChangeType || (exports.FileChangeType = {}));\r\nvar WatchKind;\r\n(function (WatchKind) {\r\n /**\r\n * Interested in create events.\r\n */\r\n WatchKind.Create = 1;\r\n /**\r\n * Interested in change events\r\n */\r\n WatchKind.Change = 2;\r\n /**\r\n * Interested in delete events\r\n */\r\n WatchKind.Delete = 4;\r\n})(WatchKind = exports.WatchKind || (exports.WatchKind = {}));\r\n/**\r\n * Diagnostics notification are sent from the server to the client to signal\r\n * results of validation runs.\r\n */\r\nvar PublishDiagnosticsNotification;\r\n(function (PublishDiagnosticsNotification) {\r\n PublishDiagnosticsNotification.type = new messages_1.ProtocolNotificationType('textDocument/publishDiagnostics');\r\n})(PublishDiagnosticsNotification = exports.PublishDiagnosticsNotification || (exports.PublishDiagnosticsNotification = {}));\r\n/**\r\n * How a completion was triggered\r\n */\r\nvar CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n /**\r\n * Completion was triggered by typing an identifier (24x7 code\r\n * complete), manual invocation (e.g Ctrl+Space) or via API.\r\n */\r\n CompletionTriggerKind.Invoked = 1;\r\n /**\r\n * Completion was triggered by a trigger character specified by\r\n * the `triggerCharacters` properties of the `CompletionRegistrationOptions`.\r\n */\r\n CompletionTriggerKind.TriggerCharacter = 2;\r\n /**\r\n * Completion was re-triggered as current completion list is incomplete\r\n */\r\n CompletionTriggerKind.TriggerForIncompleteCompletions = 3;\r\n})(CompletionTriggerKind = exports.CompletionTriggerKind || (exports.CompletionTriggerKind = {}));\r\n/**\r\n * Request to request completion at a given text document position. The request's\r\n * parameter is of type [TextDocumentPosition](#TextDocumentPosition) the response\r\n * is of type [CompletionItem[]](#CompletionItem) or [CompletionList](#CompletionList)\r\n * or a Thenable that resolves to such.\r\n *\r\n * The request can delay the computation of the [`detail`](#CompletionItem.detail)\r\n * and [`documentation`](#CompletionItem.documentation) properties to the `completionItem/resolve`\r\n * request. However, properties that are needed for the initial sorting and filtering, like `sortText`,\r\n * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.\r\n */\r\nvar CompletionRequest;\r\n(function (CompletionRequest) {\r\n CompletionRequest.method = 'textDocument/completion';\r\n CompletionRequest.type = new messages_1.ProtocolRequestType(CompletionRequest.method);\r\n /** @deprecated Use CompletionRequest.type */\r\n CompletionRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(CompletionRequest = exports.CompletionRequest || (exports.CompletionRequest = {}));\r\n/**\r\n * Request to resolve additional information for a given completion item.The request's\r\n * parameter is of type [CompletionItem](#CompletionItem) the response\r\n * is of type [CompletionItem](#CompletionItem) or a Thenable that resolves to such.\r\n */\r\nvar CompletionResolveRequest;\r\n(function (CompletionResolveRequest) {\r\n CompletionResolveRequest.method = 'completionItem/resolve';\r\n CompletionResolveRequest.type = new messages_1.ProtocolRequestType(CompletionResolveRequest.method);\r\n})(CompletionResolveRequest = exports.CompletionResolveRequest || (exports.CompletionResolveRequest = {}));\r\n/**\r\n * Request to request hover information at a given text document position. The request's\r\n * parameter is of type [TextDocumentPosition](#TextDocumentPosition) the response is of\r\n * type [Hover](#Hover) or a Thenable that resolves to such.\r\n */\r\nvar HoverRequest;\r\n(function (HoverRequest) {\r\n HoverRequest.method = 'textDocument/hover';\r\n HoverRequest.type = new messages_1.ProtocolRequestType(HoverRequest.method);\r\n})(HoverRequest = exports.HoverRequest || (exports.HoverRequest = {}));\r\n/**\r\n * How a signature help was triggered.\r\n *\r\n * @since 3.15.0\r\n */\r\nvar SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n /**\r\n * Signature help was invoked manually by the user or by a command.\r\n */\r\n SignatureHelpTriggerKind.Invoked = 1;\r\n /**\r\n * Signature help was triggered by a trigger character.\r\n */\r\n SignatureHelpTriggerKind.TriggerCharacter = 2;\r\n /**\r\n * Signature help was triggered by the cursor moving or by the document content changing.\r\n */\r\n SignatureHelpTriggerKind.ContentChange = 3;\r\n})(SignatureHelpTriggerKind = exports.SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = {}));\r\nvar SignatureHelpRequest;\r\n(function (SignatureHelpRequest) {\r\n SignatureHelpRequest.method = 'textDocument/signatureHelp';\r\n SignatureHelpRequest.type = new messages_1.ProtocolRequestType(SignatureHelpRequest.method);\r\n})(SignatureHelpRequest = exports.SignatureHelpRequest || (exports.SignatureHelpRequest = {}));\r\n/**\r\n * A request to resolve the definition location of a symbol at a given text\r\n * document position. The request's parameter is of type [TextDocumentPosition]\r\n * (#TextDocumentPosition) the response is of either type [Definition](#Definition)\r\n * or a typed array of [DefinitionLink](#DefinitionLink) or a Thenable that resolves\r\n * to such.\r\n */\r\nvar DefinitionRequest;\r\n(function (DefinitionRequest) {\r\n DefinitionRequest.method = 'textDocument/definition';\r\n DefinitionRequest.type = new messages_1.ProtocolRequestType(DefinitionRequest.method);\r\n /** @deprecated Use DefinitionRequest.type */\r\n DefinitionRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(DefinitionRequest = exports.DefinitionRequest || (exports.DefinitionRequest = {}));\r\n/**\r\n * A request to resolve project-wide references for the symbol denoted\r\n * by the given text document position. The request's parameter is of\r\n * type [ReferenceParams](#ReferenceParams) the response is of type\r\n * [Location[]](#Location) or a Thenable that resolves to such.\r\n */\r\nvar ReferencesRequest;\r\n(function (ReferencesRequest) {\r\n ReferencesRequest.method = 'textDocument/references';\r\n ReferencesRequest.type = new messages_1.ProtocolRequestType(ReferencesRequest.method);\r\n /** @deprecated Use ReferencesRequest.type */\r\n ReferencesRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(ReferencesRequest = exports.ReferencesRequest || (exports.ReferencesRequest = {}));\r\n/**\r\n * Request to resolve a [DocumentHighlight](#DocumentHighlight) for a given\r\n * text document position. The request's parameter is of type [TextDocumentPosition]\r\n * (#TextDocumentPosition) the request response is of type [DocumentHighlight[]]\r\n * (#DocumentHighlight) or a Thenable that resolves to such.\r\n */\r\nvar DocumentHighlightRequest;\r\n(function (DocumentHighlightRequest) {\r\n DocumentHighlightRequest.method = 'textDocument/documentHighlight';\r\n DocumentHighlightRequest.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest.method);\r\n /** @deprecated Use DocumentHighlightRequest.type */\r\n DocumentHighlightRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(DocumentHighlightRequest = exports.DocumentHighlightRequest || (exports.DocumentHighlightRequest = {}));\r\n/**\r\n * A request to list all symbols found in a given text document. The request's\r\n * parameter is of type [TextDocumentIdentifier](#TextDocumentIdentifier) the\r\n * response is of type [SymbolInformation[]](#SymbolInformation) or a Thenable\r\n * that resolves to such.\r\n */\r\nvar DocumentSymbolRequest;\r\n(function (DocumentSymbolRequest) {\r\n DocumentSymbolRequest.method = 'textDocument/documentSymbol';\r\n DocumentSymbolRequest.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest.method);\r\n /** @deprecated Use DocumentSymbolRequest.type */\r\n DocumentSymbolRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(DocumentSymbolRequest = exports.DocumentSymbolRequest || (exports.DocumentSymbolRequest = {}));\r\n/**\r\n * A request to provide commands for the given text document and range.\r\n */\r\nvar CodeActionRequest;\r\n(function (CodeActionRequest) {\r\n CodeActionRequest.method = 'textDocument/codeAction';\r\n CodeActionRequest.type = new messages_1.ProtocolRequestType(CodeActionRequest.method);\r\n /** @deprecated Use CodeActionRequest.type */\r\n CodeActionRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(CodeActionRequest = exports.CodeActionRequest || (exports.CodeActionRequest = {}));\r\n/**\r\n * A request to list project-wide symbols matching the query string given\r\n * by the [WorkspaceSymbolParams](#WorkspaceSymbolParams). The response is\r\n * of type [SymbolInformation[]](#SymbolInformation) or a Thenable that\r\n * resolves to such.\r\n */\r\nvar WorkspaceSymbolRequest;\r\n(function (WorkspaceSymbolRequest) {\r\n WorkspaceSymbolRequest.method = 'workspace/symbol';\r\n WorkspaceSymbolRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest.method);\r\n /** @deprecated Use WorkspaceSymbolRequest.type */\r\n WorkspaceSymbolRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(WorkspaceSymbolRequest = exports.WorkspaceSymbolRequest || (exports.WorkspaceSymbolRequest = {}));\r\n/**\r\n * A request to provide code lens for the given text document.\r\n */\r\nvar CodeLensRequest;\r\n(function (CodeLensRequest) {\r\n CodeLensRequest.type = new messages_1.ProtocolRequestType('textDocument/codeLens');\r\n /** @deprecated Use CodeLensRequest.type */\r\n CodeLensRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(CodeLensRequest = exports.CodeLensRequest || (exports.CodeLensRequest = {}));\r\n/**\r\n * A request to resolve a command for a given code lens.\r\n */\r\nvar CodeLensResolveRequest;\r\n(function (CodeLensResolveRequest) {\r\n CodeLensResolveRequest.type = new messages_1.ProtocolRequestType('codeLens/resolve');\r\n})(CodeLensResolveRequest = exports.CodeLensResolveRequest || (exports.CodeLensResolveRequest = {}));\r\n/**\r\n * A request to provide document links\r\n */\r\nvar DocumentLinkRequest;\r\n(function (DocumentLinkRequest) {\r\n DocumentLinkRequest.method = 'textDocument/documentLink';\r\n DocumentLinkRequest.type = new messages_1.ProtocolRequestType(DocumentLinkRequest.method);\r\n /** @deprecated Use DocumentLinkRequest.type */\r\n DocumentLinkRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(DocumentLinkRequest = exports.DocumentLinkRequest || (exports.DocumentLinkRequest = {}));\r\n/**\r\n * Request to resolve additional information for a given document link. The request's\r\n * parameter is of type [DocumentLink](#DocumentLink) the response\r\n * is of type [DocumentLink](#DocumentLink) or a Thenable that resolves to such.\r\n */\r\nvar DocumentLinkResolveRequest;\r\n(function (DocumentLinkResolveRequest) {\r\n DocumentLinkResolveRequest.type = new messages_1.ProtocolRequestType('documentLink/resolve');\r\n})(DocumentLinkResolveRequest = exports.DocumentLinkResolveRequest || (exports.DocumentLinkResolveRequest = {}));\r\n/**\r\n * A request to to format a whole document.\r\n */\r\nvar DocumentFormattingRequest;\r\n(function (DocumentFormattingRequest) {\r\n DocumentFormattingRequest.method = 'textDocument/formatting';\r\n DocumentFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest.method);\r\n})(DocumentFormattingRequest = exports.DocumentFormattingRequest || (exports.DocumentFormattingRequest = {}));\r\n/**\r\n * A request to to format a range in a document.\r\n */\r\nvar DocumentRangeFormattingRequest;\r\n(function (DocumentRangeFormattingRequest) {\r\n DocumentRangeFormattingRequest.method = 'textDocument/rangeFormatting';\r\n DocumentRangeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest.method);\r\n})(DocumentRangeFormattingRequest = exports.DocumentRangeFormattingRequest || (exports.DocumentRangeFormattingRequest = {}));\r\n/**\r\n * A request to format a document on type.\r\n */\r\nvar DocumentOnTypeFormattingRequest;\r\n(function (DocumentOnTypeFormattingRequest) {\r\n DocumentOnTypeFormattingRequest.method = 'textDocument/onTypeFormatting';\r\n DocumentOnTypeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest.method);\r\n})(DocumentOnTypeFormattingRequest = exports.DocumentOnTypeFormattingRequest || (exports.DocumentOnTypeFormattingRequest = {}));\r\n/**\r\n * A request to rename a symbol.\r\n */\r\nvar RenameRequest;\r\n(function (RenameRequest) {\r\n RenameRequest.method = 'textDocument/rename';\r\n RenameRequest.type = new messages_1.ProtocolRequestType(RenameRequest.method);\r\n})(RenameRequest = exports.RenameRequest || (exports.RenameRequest = {}));\r\n/**\r\n * A request to test and perform the setup necessary for a rename.\r\n */\r\nvar PrepareRenameRequest;\r\n(function (PrepareRenameRequest) {\r\n PrepareRenameRequest.method = 'textDocument/prepareRename';\r\n PrepareRenameRequest.type = new messages_1.ProtocolRequestType(PrepareRenameRequest.method);\r\n})(PrepareRenameRequest = exports.PrepareRenameRequest || (exports.PrepareRenameRequest = {}));\r\n/**\r\n * A request send from the client to the server to execute a command. The request might return\r\n * a workspace edit which the client will apply to the workspace.\r\n */\r\nvar ExecuteCommandRequest;\r\n(function (ExecuteCommandRequest) {\r\n ExecuteCommandRequest.type = new messages_1.ProtocolRequestType('workspace/executeCommand');\r\n})(ExecuteCommandRequest = exports.ExecuteCommandRequest || (exports.ExecuteCommandRequest = {}));\r\n/**\r\n * A request sent from the server to the client to modified certain resources.\r\n */\r\nvar ApplyWorkspaceEditRequest;\r\n(function (ApplyWorkspaceEditRequest) {\r\n ApplyWorkspaceEditRequest.type = new messages_1.ProtocolRequestType('workspace/applyEdit');\r\n})(ApplyWorkspaceEditRequest = exports.ApplyWorkspaceEditRequest || (exports.ApplyWorkspaceEditRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\nvar WorkDoneProgress;\r\n(function (WorkDoneProgress) {\r\n WorkDoneProgress.type = new vscode_jsonrpc_1.ProgressType();\r\n})(WorkDoneProgress = exports.WorkDoneProgress || (exports.WorkDoneProgress = {}));\r\n/**\r\n * The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress\r\n * reporting from the server.\r\n */\r\nvar WorkDoneProgressCreateRequest;\r\n(function (WorkDoneProgressCreateRequest) {\r\n WorkDoneProgressCreateRequest.type = new messages_1.ProtocolRequestType('window/workDoneProgress/create');\r\n})(WorkDoneProgressCreateRequest = exports.WorkDoneProgressCreateRequest || (exports.WorkDoneProgressCreateRequest = {}));\r\n/**\r\n * The `window/workDoneProgress/cancel` notification is sent from the client to the server to cancel a progress\r\n * initiated on the server side.\r\n */\r\nvar WorkDoneProgressCancelNotification;\r\n(function (WorkDoneProgressCancelNotification) {\r\n WorkDoneProgressCancelNotification.type = new messages_1.ProtocolNotificationType('window/workDoneProgress/cancel');\r\n})(WorkDoneProgressCancelNotification = exports.WorkDoneProgressCancelNotification || (exports.WorkDoneProgressCancelNotification = {}));\r\n","\"use strict\";\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * A request to provide selection ranges in a document. The request's\r\n * parameter is of type [SelectionRangeParams](#SelectionRangeParams), the\r\n * response is of type [SelectionRange[]](#SelectionRange[]) or a Thenable\r\n * that resolves to such.\r\n */\r\nvar SelectionRangeRequest;\r\n(function (SelectionRangeRequest) {\r\n SelectionRangeRequest.method = 'textDocument/selectionRange';\r\n SelectionRangeRequest.type = new messages_1.ProtocolRequestType(SelectionRangeRequest.method);\r\n /** @deprecated Use SelectionRangeRequest.type */\r\n SelectionRangeRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(SelectionRangeRequest = exports.SelectionRangeRequest || (exports.SelectionRangeRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * A set of predefined token types. This set is not fixed\r\n * an clients can specify additional token types via the\r\n * corresponding client capabilities.\r\n *\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar SemanticTokenTypes;\r\n(function (SemanticTokenTypes) {\r\n SemanticTokenTypes[\"comment\"] = \"comment\";\r\n SemanticTokenTypes[\"keyword\"] = \"keyword\";\r\n SemanticTokenTypes[\"string\"] = \"string\";\r\n SemanticTokenTypes[\"number\"] = \"number\";\r\n SemanticTokenTypes[\"regexp\"] = \"regexp\";\r\n SemanticTokenTypes[\"operator\"] = \"operator\";\r\n SemanticTokenTypes[\"namespace\"] = \"namespace\";\r\n SemanticTokenTypes[\"type\"] = \"type\";\r\n SemanticTokenTypes[\"struct\"] = \"struct\";\r\n SemanticTokenTypes[\"class\"] = \"class\";\r\n SemanticTokenTypes[\"interface\"] = \"interface\";\r\n SemanticTokenTypes[\"enum\"] = \"enum\";\r\n SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\r\n SemanticTokenTypes[\"function\"] = \"function\";\r\n SemanticTokenTypes[\"member\"] = \"member\";\r\n SemanticTokenTypes[\"property\"] = \"property\";\r\n SemanticTokenTypes[\"macro\"] = \"macro\";\r\n SemanticTokenTypes[\"variable\"] = \"variable\";\r\n SemanticTokenTypes[\"parameter\"] = \"parameter\";\r\n SemanticTokenTypes[\"label\"] = \"label\";\r\n})(SemanticTokenTypes = exports.SemanticTokenTypes || (exports.SemanticTokenTypes = {}));\r\n/**\r\n * A set of predefined token modifiers. This set is not fixed\r\n * an clients can specify additional token types via the\r\n * corresponding client capabilities.\r\n *\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar SemanticTokenModifiers;\r\n(function (SemanticTokenModifiers) {\r\n SemanticTokenModifiers[\"documentation\"] = \"documentation\";\r\n SemanticTokenModifiers[\"declaration\"] = \"declaration\";\r\n SemanticTokenModifiers[\"definition\"] = \"definition\";\r\n SemanticTokenModifiers[\"reference\"] = \"reference\";\r\n SemanticTokenModifiers[\"static\"] = \"static\";\r\n SemanticTokenModifiers[\"abstract\"] = \"abstract\";\r\n SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\r\n SemanticTokenModifiers[\"async\"] = \"async\";\r\n SemanticTokenModifiers[\"volatile\"] = \"volatile\";\r\n SemanticTokenModifiers[\"readonly\"] = \"readonly\";\r\n})(SemanticTokenModifiers = exports.SemanticTokenModifiers || (exports.SemanticTokenModifiers = {}));\r\n/**\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar SemanticTokens;\r\n(function (SemanticTokens) {\r\n function is(value) {\r\n const candidate = value;\r\n return candidate !== undefined && (candidate.resultId === undefined || typeof candidate.resultId === 'string') &&\r\n Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\r\n }\r\n SemanticTokens.is = is;\r\n})(SemanticTokens = exports.SemanticTokens || (exports.SemanticTokens = {}));\r\n/**\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar SemanticTokensRequest;\r\n(function (SemanticTokensRequest) {\r\n SemanticTokensRequest.method = 'textDocument/semanticTokens';\r\n SemanticTokensRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRequest.method);\r\n})(SemanticTokensRequest = exports.SemanticTokensRequest || (exports.SemanticTokensRequest = {}));\r\n/**\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar SemanticTokensEditsRequest;\r\n(function (SemanticTokensEditsRequest) {\r\n SemanticTokensEditsRequest.method = 'textDocument/semanticTokens/edits';\r\n SemanticTokensEditsRequest.type = new messages_1.ProtocolRequestType(SemanticTokensEditsRequest.method);\r\n})(SemanticTokensEditsRequest = exports.SemanticTokensEditsRequest || (exports.SemanticTokensEditsRequest = {}));\r\n/**\r\n * @since 3.16.0 - Proposed state\r\n */\r\nvar SemanticTokensRangeRequest;\r\n(function (SemanticTokensRangeRequest) {\r\n SemanticTokensRangeRequest.method = 'textDocument/semanticTokens/range';\r\n SemanticTokensRangeRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest.method);\r\n})(SemanticTokensRangeRequest = exports.SemanticTokensRangeRequest || (exports.SemanticTokensRangeRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\r\nconst messages_1 = require(\"./messages\");\r\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r\nlet __noDynamicImport;\r\n/**\r\n * A request to resolve the type definition locations of a symbol at a given text\r\n * document position. The request's parameter is of type [TextDocumentPositioParams]\r\n * (#TextDocumentPositionParams) the response is of type [Definition](#Definition) or a\r\n * Thenable that resolves to such.\r\n */\r\nvar TypeDefinitionRequest;\r\n(function (TypeDefinitionRequest) {\r\n TypeDefinitionRequest.method = 'textDocument/typeDefinition';\r\n TypeDefinitionRequest.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest.method);\r\n /** @deprecated Use TypeDefinitionRequest.type */\r\n TypeDefinitionRequest.resultType = new vscode_jsonrpc_1.ProgressType();\r\n})(TypeDefinitionRequest = exports.TypeDefinitionRequest || (exports.TypeDefinitionRequest = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst messages_1 = require(\"./messages\");\r\n/**\r\n * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.\r\n */\r\nvar WorkspaceFoldersRequest;\r\n(function (WorkspaceFoldersRequest) {\r\n WorkspaceFoldersRequest.type = new messages_1.ProtocolRequestType0('workspace/workspaceFolders');\r\n})(WorkspaceFoldersRequest = exports.WorkspaceFoldersRequest || (exports.WorkspaceFoldersRequest = {}));\r\n/**\r\n * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace\r\n * folder configuration changes.\r\n */\r\nvar DidChangeWorkspaceFoldersNotification;\r\n(function (DidChangeWorkspaceFoldersNotification) {\r\n DidChangeWorkspaceFoldersNotification.type = new messages_1.ProtocolNotificationType('workspace/didChangeWorkspaceFolders');\r\n})(DidChangeWorkspaceFoldersNotification = exports.DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = {}));\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction boolean(value) {\r\n return value === true || value === false;\r\n}\r\nexports.boolean = boolean;\r\nfunction string(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n}\r\nexports.string = string;\r\nfunction number(value) {\r\n return typeof value === 'number' || value instanceof Number;\r\n}\r\nexports.number = number;\r\nfunction error(value) {\r\n return value instanceof Error;\r\n}\r\nexports.error = error;\r\nfunction func(value) {\r\n return typeof value === 'function';\r\n}\r\nexports.func = func;\r\nfunction array(value) {\r\n return Array.isArray(value);\r\n}\r\nexports.array = array;\r\nfunction stringArray(value) {\r\n return array(value) && value.every(elem => string(elem));\r\n}\r\nexports.stringArray = stringArray;\r\nfunction typedArray(value, check) {\r\n return Array.isArray(value) && value.every(check);\r\n}\r\nexports.typedArray = typedArray;\r\nfunction objectLiteral(value) {\r\n // Strictly speaking class instances pass this check as well. Since the LSP\r\n // doesn't use classes we ignore this for now. If we do we need to add something\r\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\r\n return value !== null && typeof value === 'object';\r\n}\r\nexports.objectLiteral = objectLiteral;\r\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\n/**\r\n * The Position namespace provides helper functions to work with\r\n * [Position](#Position) literals.\r\n */\r\nexport var Position;\r\n(function (Position) {\r\n /**\r\n * Creates a new Position literal from the given line and character.\r\n * @param line The position's line.\r\n * @param character The position's character.\r\n */\r\n function create(line, character) {\r\n return { line: line, character: character };\r\n }\r\n Position.create = create;\r\n /**\r\n * Checks whether the given liternal conforms to the [Position](#Position) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(candidate) && Is.number(candidate.line) && Is.number(candidate.character);\r\n }\r\n Position.is = is;\r\n})(Position || (Position = {}));\r\n/**\r\n * The Range namespace provides helper functions to work with\r\n * [Range](#Range) literals.\r\n */\r\nexport var Range;\r\n(function (Range) {\r\n function create(one, two, three, four) {\r\n if (Is.number(one) && Is.number(two) && Is.number(three) && Is.number(four)) {\r\n return { start: Position.create(one, two), end: Position.create(three, four) };\r\n }\r\n else if (Position.is(one) && Position.is(two)) {\r\n return { start: one, end: two };\r\n }\r\n else {\r\n throw new Error(\"Range#create called with invalid arguments[\" + one + \", \" + two + \", \" + three + \", \" + four + \"]\");\r\n }\r\n }\r\n Range.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Range](#Range) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\r\n }\r\n Range.is = is;\r\n})(Range || (Range = {}));\r\n/**\r\n * The Location namespace provides helper functions to work with\r\n * [Location](#Location) literals.\r\n */\r\nexport var Location;\r\n(function (Location) {\r\n /**\r\n * Creates a Location literal.\r\n * @param uri The location's uri.\r\n * @param range The location's range.\r\n */\r\n function create(uri, range) {\r\n return { uri: uri, range: range };\r\n }\r\n Location.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Location](#Location) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\r\n }\r\n Location.is = is;\r\n})(Location || (Location = {}));\r\n/**\r\n * The LocationLink namespace provides helper functions to work with\r\n * [LocationLink](#LocationLink) literals.\r\n */\r\nexport var LocationLink;\r\n(function (LocationLink) {\r\n /**\r\n * Creates a LocationLink literal.\r\n * @param targetUri The definition's uri.\r\n * @param targetRange The full range of the definition.\r\n * @param targetSelectionRange The span of the symbol definition at the target.\r\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\r\n */\r\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\r\n return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\r\n }\r\n LocationLink.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\r\n && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange))\r\n && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\r\n }\r\n LocationLink.is = is;\r\n})(LocationLink || (LocationLink = {}));\r\n/**\r\n * The Color namespace provides helper functions to work with\r\n * [Color](#Color) literals.\r\n */\r\nexport var Color;\r\n(function (Color) {\r\n /**\r\n * Creates a new Color literal.\r\n */\r\n function create(red, green, blue, alpha) {\r\n return {\r\n red: red,\r\n green: green,\r\n blue: blue,\r\n alpha: alpha,\r\n };\r\n }\r\n Color.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Color](#Color) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.number(candidate.red)\r\n && Is.number(candidate.green)\r\n && Is.number(candidate.blue)\r\n && Is.number(candidate.alpha);\r\n }\r\n Color.is = is;\r\n})(Color || (Color = {}));\r\n/**\r\n * The ColorInformation namespace provides helper functions to work with\r\n * [ColorInformation](#ColorInformation) literals.\r\n */\r\nexport var ColorInformation;\r\n(function (ColorInformation) {\r\n /**\r\n * Creates a new ColorInformation literal.\r\n */\r\n function create(range, color) {\r\n return {\r\n range: range,\r\n color: color,\r\n };\r\n }\r\n ColorInformation.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Range.is(candidate.range) && Color.is(candidate.color);\r\n }\r\n ColorInformation.is = is;\r\n})(ColorInformation || (ColorInformation = {}));\r\n/**\r\n * The Color namespace provides helper functions to work with\r\n * [ColorPresentation](#ColorPresentation) literals.\r\n */\r\nexport var ColorPresentation;\r\n(function (ColorPresentation) {\r\n /**\r\n * Creates a new ColorInformation literal.\r\n */\r\n function create(label, textEdit, additionalTextEdits) {\r\n return {\r\n label: label,\r\n textEdit: textEdit,\r\n additionalTextEdits: additionalTextEdits,\r\n };\r\n }\r\n ColorPresentation.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.string(candidate.label)\r\n && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\r\n && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\r\n }\r\n ColorPresentation.is = is;\r\n})(ColorPresentation || (ColorPresentation = {}));\r\n/**\r\n * Enum of known range kinds\r\n */\r\nexport var FoldingRangeKind;\r\n(function (FoldingRangeKind) {\r\n /**\r\n * Folding range for a comment\r\n */\r\n FoldingRangeKind[\"Comment\"] = \"comment\";\r\n /**\r\n * Folding range for a imports or includes\r\n */\r\n FoldingRangeKind[\"Imports\"] = \"imports\";\r\n /**\r\n * Folding range for a region (e.g. `#region`)\r\n */\r\n FoldingRangeKind[\"Region\"] = \"region\";\r\n})(FoldingRangeKind || (FoldingRangeKind = {}));\r\n/**\r\n * The folding range namespace provides helper functions to work with\r\n * [FoldingRange](#FoldingRange) literals.\r\n */\r\nexport var FoldingRange;\r\n(function (FoldingRange) {\r\n /**\r\n * Creates a new FoldingRange literal.\r\n */\r\n function create(startLine, endLine, startCharacter, endCharacter, kind) {\r\n var result = {\r\n startLine: startLine,\r\n endLine: endLine\r\n };\r\n if (Is.defined(startCharacter)) {\r\n result.startCharacter = startCharacter;\r\n }\r\n if (Is.defined(endCharacter)) {\r\n result.endCharacter = endCharacter;\r\n }\r\n if (Is.defined(kind)) {\r\n result.kind = kind;\r\n }\r\n return result;\r\n }\r\n FoldingRange.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.number(candidate.startLine) && Is.number(candidate.startLine)\r\n && (Is.undefined(candidate.startCharacter) || Is.number(candidate.startCharacter))\r\n && (Is.undefined(candidate.endCharacter) || Is.number(candidate.endCharacter))\r\n && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\r\n }\r\n FoldingRange.is = is;\r\n})(FoldingRange || (FoldingRange = {}));\r\n/**\r\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\r\n * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals.\r\n */\r\nexport var DiagnosticRelatedInformation;\r\n(function (DiagnosticRelatedInformation) {\r\n /**\r\n * Creates a new DiagnosticRelatedInformation literal.\r\n */\r\n function create(location, message) {\r\n return {\r\n location: location,\r\n message: message\r\n };\r\n }\r\n DiagnosticRelatedInformation.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\r\n }\r\n DiagnosticRelatedInformation.is = is;\r\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\r\n/**\r\n * The diagnostic's severity.\r\n */\r\nexport var DiagnosticSeverity;\r\n(function (DiagnosticSeverity) {\r\n /**\r\n * Reports an error.\r\n */\r\n DiagnosticSeverity.Error = 1;\r\n /**\r\n * Reports a warning.\r\n */\r\n DiagnosticSeverity.Warning = 2;\r\n /**\r\n * Reports an information.\r\n */\r\n DiagnosticSeverity.Information = 3;\r\n /**\r\n * Reports a hint.\r\n */\r\n DiagnosticSeverity.Hint = 4;\r\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\r\n/**\r\n * The diagnostic tags.\r\n *\r\n * @since 3.15.0\r\n */\r\nexport var DiagnosticTag;\r\n(function (DiagnosticTag) {\r\n /**\r\n * Unused or unnecessary code.\r\n *\r\n * Clients are allowed to render diagnostics with this tag faded out instead of having\r\n * an error squiggle.\r\n */\r\n DiagnosticTag.Unnecessary = 1;\r\n /**\r\n * Deprecated or obsolete code.\r\n *\r\n * Clients are allowed to rendered diagnostics with this tag strike through.\r\n */\r\n DiagnosticTag.Deprecated = 2;\r\n})(DiagnosticTag || (DiagnosticTag = {}));\r\n/**\r\n * The Diagnostic namespace provides helper functions to work with\r\n * [Diagnostic](#Diagnostic) literals.\r\n */\r\nexport var Diagnostic;\r\n(function (Diagnostic) {\r\n /**\r\n * Creates a new Diagnostic literal.\r\n */\r\n function create(range, message, severity, code, source, relatedInformation) {\r\n var result = { range: range, message: message };\r\n if (Is.defined(severity)) {\r\n result.severity = severity;\r\n }\r\n if (Is.defined(code)) {\r\n result.code = code;\r\n }\r\n if (Is.defined(source)) {\r\n result.source = source;\r\n }\r\n if (Is.defined(relatedInformation)) {\r\n result.relatedInformation = relatedInformation;\r\n }\r\n return result;\r\n }\r\n Diagnostic.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate)\r\n && Range.is(candidate.range)\r\n && Is.string(candidate.message)\r\n && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\r\n && (Is.number(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\r\n && (Is.string(candidate.source) || Is.undefined(candidate.source))\r\n && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\r\n }\r\n Diagnostic.is = is;\r\n})(Diagnostic || (Diagnostic = {}));\r\n/**\r\n * The Command namespace provides helper functions to work with\r\n * [Command](#Command) literals.\r\n */\r\nexport var Command;\r\n(function (Command) {\r\n /**\r\n * Creates a new Command literal.\r\n */\r\n function create(title, command) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n var result = { title: title, command: command };\r\n if (Is.defined(args) && args.length > 0) {\r\n result.arguments = args;\r\n }\r\n return result;\r\n }\r\n Command.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Command](#Command) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\r\n }\r\n Command.is = is;\r\n})(Command || (Command = {}));\r\n/**\r\n * The TextEdit namespace provides helper function to create replace,\r\n * insert and delete edits more easily.\r\n */\r\nexport var TextEdit;\r\n(function (TextEdit) {\r\n /**\r\n * Creates a replace text edit.\r\n * @param range The range of text to be replaced.\r\n * @param newText The new text.\r\n */\r\n function replace(range, newText) {\r\n return { range: range, newText: newText };\r\n }\r\n TextEdit.replace = replace;\r\n /**\r\n * Creates a insert text edit.\r\n * @param position The position to insert the text at.\r\n * @param newText The text to be inserted.\r\n */\r\n function insert(position, newText) {\r\n return { range: { start: position, end: position }, newText: newText };\r\n }\r\n TextEdit.insert = insert;\r\n /**\r\n * Creates a delete text edit.\r\n * @param range The range of text to be deleted.\r\n */\r\n function del(range) {\r\n return { range: range, newText: '' };\r\n }\r\n TextEdit.del = del;\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(candidate)\r\n && Is.string(candidate.newText)\r\n && Range.is(candidate.range);\r\n }\r\n TextEdit.is = is;\r\n})(TextEdit || (TextEdit = {}));\r\n/**\r\n * The TextDocumentEdit namespace provides helper function to create\r\n * an edit that manipulates a text document.\r\n */\r\nexport var TextDocumentEdit;\r\n(function (TextDocumentEdit) {\r\n /**\r\n * Creates a new `TextDocumentEdit`\r\n */\r\n function create(textDocument, edits) {\r\n return { textDocument: textDocument, edits: edits };\r\n }\r\n TextDocumentEdit.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate)\r\n && VersionedTextDocumentIdentifier.is(candidate.textDocument)\r\n && Array.isArray(candidate.edits);\r\n }\r\n TextDocumentEdit.is = is;\r\n})(TextDocumentEdit || (TextDocumentEdit = {}));\r\nexport var CreateFile;\r\n(function (CreateFile) {\r\n function create(uri, options) {\r\n var result = {\r\n kind: 'create',\r\n uri: uri\r\n };\r\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\r\n result.options = options;\r\n }\r\n return result;\r\n }\r\n CreateFile.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) &&\r\n (candidate.options === void 0 ||\r\n ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))));\r\n }\r\n CreateFile.is = is;\r\n})(CreateFile || (CreateFile = {}));\r\nexport var RenameFile;\r\n(function (RenameFile) {\r\n function create(oldUri, newUri, options) {\r\n var result = {\r\n kind: 'rename',\r\n oldUri: oldUri,\r\n newUri: newUri\r\n };\r\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\r\n result.options = options;\r\n }\r\n return result;\r\n }\r\n RenameFile.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) &&\r\n (candidate.options === void 0 ||\r\n ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))));\r\n }\r\n RenameFile.is = is;\r\n})(RenameFile || (RenameFile = {}));\r\nexport var DeleteFile;\r\n(function (DeleteFile) {\r\n function create(uri, options) {\r\n var result = {\r\n kind: 'delete',\r\n uri: uri\r\n };\r\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\r\n result.options = options;\r\n }\r\n return result;\r\n }\r\n DeleteFile.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) &&\r\n (candidate.options === void 0 ||\r\n ((candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))));\r\n }\r\n DeleteFile.is = is;\r\n})(DeleteFile || (DeleteFile = {}));\r\nexport var WorkspaceEdit;\r\n(function (WorkspaceEdit) {\r\n function is(value) {\r\n var candidate = value;\r\n return candidate &&\r\n (candidate.changes !== void 0 || candidate.documentChanges !== void 0) &&\r\n (candidate.documentChanges === void 0 || candidate.documentChanges.every(function (change) {\r\n if (Is.string(change.kind)) {\r\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\r\n }\r\n else {\r\n return TextDocumentEdit.is(change);\r\n }\r\n }));\r\n }\r\n WorkspaceEdit.is = is;\r\n})(WorkspaceEdit || (WorkspaceEdit = {}));\r\nvar TextEditChangeImpl = /** @class */ (function () {\r\n function TextEditChangeImpl(edits) {\r\n this.edits = edits;\r\n }\r\n TextEditChangeImpl.prototype.insert = function (position, newText) {\r\n this.edits.push(TextEdit.insert(position, newText));\r\n };\r\n TextEditChangeImpl.prototype.replace = function (range, newText) {\r\n this.edits.push(TextEdit.replace(range, newText));\r\n };\r\n TextEditChangeImpl.prototype.delete = function (range) {\r\n this.edits.push(TextEdit.del(range));\r\n };\r\n TextEditChangeImpl.prototype.add = function (edit) {\r\n this.edits.push(edit);\r\n };\r\n TextEditChangeImpl.prototype.all = function () {\r\n return this.edits;\r\n };\r\n TextEditChangeImpl.prototype.clear = function () {\r\n this.edits.splice(0, this.edits.length);\r\n };\r\n return TextEditChangeImpl;\r\n}());\r\n/**\r\n * A workspace change helps constructing changes to a workspace.\r\n */\r\nvar WorkspaceChange = /** @class */ (function () {\r\n function WorkspaceChange(workspaceEdit) {\r\n var _this = this;\r\n this._textEditChanges = Object.create(null);\r\n if (workspaceEdit) {\r\n this._workspaceEdit = workspaceEdit;\r\n if (workspaceEdit.documentChanges) {\r\n workspaceEdit.documentChanges.forEach(function (change) {\r\n if (TextDocumentEdit.is(change)) {\r\n var textEditChange = new TextEditChangeImpl(change.edits);\r\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\r\n }\r\n });\r\n }\r\n else if (workspaceEdit.changes) {\r\n Object.keys(workspaceEdit.changes).forEach(function (key) {\r\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\r\n _this._textEditChanges[key] = textEditChange;\r\n });\r\n }\r\n }\r\n }\r\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\r\n /**\r\n * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal\r\n * use to be returned from a workspace edit operation like rename.\r\n */\r\n get: function () {\r\n return this._workspaceEdit;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WorkspaceChange.prototype.getTextEditChange = function (key) {\r\n if (VersionedTextDocumentIdentifier.is(key)) {\r\n if (!this._workspaceEdit) {\r\n this._workspaceEdit = {\r\n documentChanges: []\r\n };\r\n }\r\n if (!this._workspaceEdit.documentChanges) {\r\n throw new Error('Workspace edit is not configured for document changes.');\r\n }\r\n var textDocument = key;\r\n var result = this._textEditChanges[textDocument.uri];\r\n if (!result) {\r\n var edits = [];\r\n var textDocumentEdit = {\r\n textDocument: textDocument,\r\n edits: edits\r\n };\r\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\r\n result = new TextEditChangeImpl(edits);\r\n this._textEditChanges[textDocument.uri] = result;\r\n }\r\n return result;\r\n }\r\n else {\r\n if (!this._workspaceEdit) {\r\n this._workspaceEdit = {\r\n changes: Object.create(null)\r\n };\r\n }\r\n if (!this._workspaceEdit.changes) {\r\n throw new Error('Workspace edit is not configured for normal text edit changes.');\r\n }\r\n var result = this._textEditChanges[key];\r\n if (!result) {\r\n var edits = [];\r\n this._workspaceEdit.changes[key] = edits;\r\n result = new TextEditChangeImpl(edits);\r\n this._textEditChanges[key] = result;\r\n }\r\n return result;\r\n }\r\n };\r\n WorkspaceChange.prototype.createFile = function (uri, options) {\r\n this.checkDocumentChanges();\r\n this._workspaceEdit.documentChanges.push(CreateFile.create(uri, options));\r\n };\r\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, options) {\r\n this.checkDocumentChanges();\r\n this._workspaceEdit.documentChanges.push(RenameFile.create(oldUri, newUri, options));\r\n };\r\n WorkspaceChange.prototype.deleteFile = function (uri, options) {\r\n this.checkDocumentChanges();\r\n this._workspaceEdit.documentChanges.push(DeleteFile.create(uri, options));\r\n };\r\n WorkspaceChange.prototype.checkDocumentChanges = function () {\r\n if (!this._workspaceEdit || !this._workspaceEdit.documentChanges) {\r\n throw new Error('Workspace edit is not configured for document changes.');\r\n }\r\n };\r\n return WorkspaceChange;\r\n}());\r\nexport { WorkspaceChange };\r\n/**\r\n * The TextDocumentIdentifier namespace provides helper functions to work with\r\n * [TextDocumentIdentifier](#TextDocumentIdentifier) literals.\r\n */\r\nexport var TextDocumentIdentifier;\r\n(function (TextDocumentIdentifier) {\r\n /**\r\n * Creates a new TextDocumentIdentifier literal.\r\n * @param uri The document's uri.\r\n */\r\n function create(uri) {\r\n return { uri: uri };\r\n }\r\n TextDocumentIdentifier.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri);\r\n }\r\n TextDocumentIdentifier.is = is;\r\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\r\n/**\r\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\r\n * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals.\r\n */\r\nexport var VersionedTextDocumentIdentifier;\r\n(function (VersionedTextDocumentIdentifier) {\r\n /**\r\n * Creates a new VersionedTextDocumentIdentifier literal.\r\n * @param uri The document's uri.\r\n * @param uri The document's text.\r\n */\r\n function create(uri, version) {\r\n return { uri: uri, version: version };\r\n }\r\n VersionedTextDocumentIdentifier.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.number(candidate.version));\r\n }\r\n VersionedTextDocumentIdentifier.is = is;\r\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\r\n/**\r\n * The TextDocumentItem namespace provides helper functions to work with\r\n * [TextDocumentItem](#TextDocumentItem) literals.\r\n */\r\nexport var TextDocumentItem;\r\n(function (TextDocumentItem) {\r\n /**\r\n * Creates a new TextDocumentItem literal.\r\n * @param uri The document's uri.\r\n * @param languageId The document's language identifier.\r\n * @param version The document's version number.\r\n * @param text The document's text.\r\n */\r\n function create(uri, languageId, version, text) {\r\n return { uri: uri, languageId: languageId, version: version, text: text };\r\n }\r\n TextDocumentItem.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.number(candidate.version) && Is.string(candidate.text);\r\n }\r\n TextDocumentItem.is = is;\r\n})(TextDocumentItem || (TextDocumentItem = {}));\r\n/**\r\n * Describes the content type that a client supports in various\r\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\r\n *\r\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\r\n * are reserved for internal usage.\r\n */\r\nexport var MarkupKind;\r\n(function (MarkupKind) {\r\n /**\r\n * Plain text is supported as a content format\r\n */\r\n MarkupKind.PlainText = 'plaintext';\r\n /**\r\n * Markdown is supported as a content format\r\n */\r\n MarkupKind.Markdown = 'markdown';\r\n})(MarkupKind || (MarkupKind = {}));\r\n(function (MarkupKind) {\r\n /**\r\n * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\r\n }\r\n MarkupKind.is = is;\r\n})(MarkupKind || (MarkupKind = {}));\r\nexport var MarkupContent;\r\n(function (MarkupContent) {\r\n /**\r\n * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\r\n }\r\n MarkupContent.is = is;\r\n})(MarkupContent || (MarkupContent = {}));\r\n/**\r\n * The kind of a completion entry.\r\n */\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind.Text = 1;\r\n CompletionItemKind.Method = 2;\r\n CompletionItemKind.Function = 3;\r\n CompletionItemKind.Constructor = 4;\r\n CompletionItemKind.Field = 5;\r\n CompletionItemKind.Variable = 6;\r\n CompletionItemKind.Class = 7;\r\n CompletionItemKind.Interface = 8;\r\n CompletionItemKind.Module = 9;\r\n CompletionItemKind.Property = 10;\r\n CompletionItemKind.Unit = 11;\r\n CompletionItemKind.Value = 12;\r\n CompletionItemKind.Enum = 13;\r\n CompletionItemKind.Keyword = 14;\r\n CompletionItemKind.Snippet = 15;\r\n CompletionItemKind.Color = 16;\r\n CompletionItemKind.File = 17;\r\n CompletionItemKind.Reference = 18;\r\n CompletionItemKind.Folder = 19;\r\n CompletionItemKind.EnumMember = 20;\r\n CompletionItemKind.Constant = 21;\r\n CompletionItemKind.Struct = 22;\r\n CompletionItemKind.Event = 23;\r\n CompletionItemKind.Operator = 24;\r\n CompletionItemKind.TypeParameter = 25;\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\n/**\r\n * Defines whether the insert text in a completion item should be interpreted as\r\n * plain text or a snippet.\r\n */\r\nexport var InsertTextFormat;\r\n(function (InsertTextFormat) {\r\n /**\r\n * The primary text to be inserted is treated as a plain string.\r\n */\r\n InsertTextFormat.PlainText = 1;\r\n /**\r\n * The primary text to be inserted is treated as a snippet.\r\n *\r\n * A snippet can define tab stops and placeholders with `$1`, `$2`\r\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\r\n * the end of the snippet. Placeholders with equal identifiers are linked,\r\n * that is typing in one will update others too.\r\n *\r\n * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md\r\n */\r\n InsertTextFormat.Snippet = 2;\r\n})(InsertTextFormat || (InsertTextFormat = {}));\r\n/**\r\n * Completion item tags are extra annotations that tweak the rendering of a completion\r\n * item.\r\n *\r\n * @since 3.15.0\r\n */\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n /**\r\n * Render a completion as obsolete, usually using a strike-out.\r\n */\r\n CompletionItemTag.Deprecated = 1;\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * The CompletionItem namespace provides functions to deal with\r\n * completion items.\r\n */\r\nexport var CompletionItem;\r\n(function (CompletionItem) {\r\n /**\r\n * Create a completion item and seed it with a label.\r\n * @param label The completion item's label\r\n */\r\n function create(label) {\r\n return { label: label };\r\n }\r\n CompletionItem.create = create;\r\n})(CompletionItem || (CompletionItem = {}));\r\n/**\r\n * The CompletionList namespace provides functions to deal with\r\n * completion lists.\r\n */\r\nexport var CompletionList;\r\n(function (CompletionList) {\r\n /**\r\n * Creates a new completion list.\r\n *\r\n * @param items The completion items.\r\n * @param isIncomplete The list is not complete.\r\n */\r\n function create(items, isIncomplete) {\r\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\r\n }\r\n CompletionList.create = create;\r\n})(CompletionList || (CompletionList = {}));\r\nexport var MarkedString;\r\n(function (MarkedString) {\r\n /**\r\n * Creates a marked string from plain text.\r\n *\r\n * @param plainText The plain text.\r\n */\r\n function fromPlainText(plainText) {\r\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\r\n }\r\n MarkedString.fromPlainText = fromPlainText;\r\n /**\r\n * Checks whether the given value conforms to the [MarkedString](#MarkedString) type.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\r\n }\r\n MarkedString.is = is;\r\n})(MarkedString || (MarkedString = {}));\r\nexport var Hover;\r\n(function (Hover) {\r\n /**\r\n * Checks whether the given value conforms to the [Hover](#Hover) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\r\n MarkedString.is(candidate.contents) ||\r\n Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\r\n }\r\n Hover.is = is;\r\n})(Hover || (Hover = {}));\r\n/**\r\n * The ParameterInformation namespace provides helper functions to work with\r\n * [ParameterInformation](#ParameterInformation) literals.\r\n */\r\nexport var ParameterInformation;\r\n(function (ParameterInformation) {\r\n /**\r\n * Creates a new parameter information literal.\r\n *\r\n * @param label A label string.\r\n * @param documentation A doc string.\r\n */\r\n function create(label, documentation) {\r\n return documentation ? { label: label, documentation: documentation } : { label: label };\r\n }\r\n ParameterInformation.create = create;\r\n})(ParameterInformation || (ParameterInformation = {}));\r\n/**\r\n * The SignatureInformation namespace provides helper functions to work with\r\n * [SignatureInformation](#SignatureInformation) literals.\r\n */\r\nexport var SignatureInformation;\r\n(function (SignatureInformation) {\r\n function create(label, documentation) {\r\n var parameters = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n parameters[_i - 2] = arguments[_i];\r\n }\r\n var result = { label: label };\r\n if (Is.defined(documentation)) {\r\n result.documentation = documentation;\r\n }\r\n if (Is.defined(parameters)) {\r\n result.parameters = parameters;\r\n }\r\n else {\r\n result.parameters = [];\r\n }\r\n return result;\r\n }\r\n SignatureInformation.create = create;\r\n})(SignatureInformation || (SignatureInformation = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind.Text = 1;\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind.Read = 2;\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind.Write = 3;\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * DocumentHighlight namespace to provide helper functions to work with\r\n * [DocumentHighlight](#DocumentHighlight) literals.\r\n */\r\nexport var DocumentHighlight;\r\n(function (DocumentHighlight) {\r\n /**\r\n * Create a DocumentHighlight object.\r\n * @param range The range the highlight applies to.\r\n */\r\n function create(range, kind) {\r\n var result = { range: range };\r\n if (Is.number(kind)) {\r\n result.kind = kind;\r\n }\r\n return result;\r\n }\r\n DocumentHighlight.create = create;\r\n})(DocumentHighlight || (DocumentHighlight = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind.File = 1;\r\n SymbolKind.Module = 2;\r\n SymbolKind.Namespace = 3;\r\n SymbolKind.Package = 4;\r\n SymbolKind.Class = 5;\r\n SymbolKind.Method = 6;\r\n SymbolKind.Property = 7;\r\n SymbolKind.Field = 8;\r\n SymbolKind.Constructor = 9;\r\n SymbolKind.Enum = 10;\r\n SymbolKind.Interface = 11;\r\n SymbolKind.Function = 12;\r\n SymbolKind.Variable = 13;\r\n SymbolKind.Constant = 14;\r\n SymbolKind.String = 15;\r\n SymbolKind.Number = 16;\r\n SymbolKind.Boolean = 17;\r\n SymbolKind.Array = 18;\r\n SymbolKind.Object = 19;\r\n SymbolKind.Key = 20;\r\n SymbolKind.Null = 21;\r\n SymbolKind.EnumMember = 22;\r\n SymbolKind.Struct = 23;\r\n SymbolKind.Event = 24;\r\n SymbolKind.Operator = 25;\r\n SymbolKind.TypeParameter = 26;\r\n})(SymbolKind || (SymbolKind = {}));\r\n/**\r\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\r\n * @since 3.15\r\n */\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n /**\r\n * Render a symbol as obsolete, usually using a strike-out.\r\n */\r\n SymbolTag.Deprecated = 1;\r\n})(SymbolTag || (SymbolTag = {}));\r\nexport var SymbolInformation;\r\n(function (SymbolInformation) {\r\n /**\r\n * Creates a new symbol information literal.\r\n *\r\n * @param name The name of the symbol.\r\n * @param kind The kind of the symbol.\r\n * @param range The range of the location of the symbol.\r\n * @param uri The resource of the location of symbol, defaults to the current document.\r\n * @param containerName The name of the symbol containing the symbol.\r\n */\r\n function create(name, kind, range, uri, containerName) {\r\n var result = {\r\n name: name,\r\n kind: kind,\r\n location: { uri: uri, range: range }\r\n };\r\n if (containerName) {\r\n result.containerName = containerName;\r\n }\r\n return result;\r\n }\r\n SymbolInformation.create = create;\r\n})(SymbolInformation || (SymbolInformation = {}));\r\nexport var DocumentSymbol;\r\n(function (DocumentSymbol) {\r\n /**\r\n * Creates a new symbol information literal.\r\n *\r\n * @param name The name of the symbol.\r\n * @param detail The detail of the symbol.\r\n * @param kind The kind of the symbol.\r\n * @param range The range of the symbol.\r\n * @param selectionRange The selectionRange of the symbol.\r\n * @param children Children of the symbol.\r\n */\r\n function create(name, detail, kind, range, selectionRange, children) {\r\n var result = {\r\n name: name,\r\n detail: detail,\r\n kind: kind,\r\n range: range,\r\n selectionRange: selectionRange\r\n };\r\n if (children !== void 0) {\r\n result.children = children;\r\n }\r\n return result;\r\n }\r\n DocumentSymbol.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return candidate &&\r\n Is.string(candidate.name) && Is.number(candidate.kind) &&\r\n Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\r\n (candidate.detail === void 0 || Is.string(candidate.detail)) &&\r\n (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) &&\r\n (candidate.children === void 0 || Array.isArray(candidate.children));\r\n }\r\n DocumentSymbol.is = is;\r\n})(DocumentSymbol || (DocumentSymbol = {}));\r\n/**\r\n * A set of predefined code action kinds\r\n */\r\nexport var CodeActionKind;\r\n(function (CodeActionKind) {\r\n /**\r\n * Empty kind.\r\n */\r\n CodeActionKind.Empty = '';\r\n /**\r\n * Base kind for quickfix actions: 'quickfix'\r\n */\r\n CodeActionKind.QuickFix = 'quickfix';\r\n /**\r\n * Base kind for refactoring actions: 'refactor'\r\n */\r\n CodeActionKind.Refactor = 'refactor';\r\n /**\r\n * Base kind for refactoring extraction actions: 'refactor.extract'\r\n *\r\n * Example extract actions:\r\n *\r\n * - Extract method\r\n * - Extract function\r\n * - Extract variable\r\n * - Extract interface from class\r\n * - ...\r\n */\r\n CodeActionKind.RefactorExtract = 'refactor.extract';\r\n /**\r\n * Base kind for refactoring inline actions: 'refactor.inline'\r\n *\r\n * Example inline actions:\r\n *\r\n * - Inline function\r\n * - Inline variable\r\n * - Inline constant\r\n * - ...\r\n */\r\n CodeActionKind.RefactorInline = 'refactor.inline';\r\n /**\r\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\r\n *\r\n * Example rewrite actions:\r\n *\r\n * - Convert JavaScript function to class\r\n * - Add or remove parameter\r\n * - Encapsulate field\r\n * - Make method static\r\n * - Move method to base class\r\n * - ...\r\n */\r\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\r\n /**\r\n * Base kind for source actions: `source`\r\n *\r\n * Source code actions apply to the entire file.\r\n */\r\n CodeActionKind.Source = 'source';\r\n /**\r\n * Base kind for an organize imports source action: `source.organizeImports`\r\n */\r\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\r\n /**\r\n * Base kind for auto-fix source actions: `source.fixAll`.\r\n *\r\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\r\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\r\n *\r\n * @since 3.15.0\r\n */\r\n CodeActionKind.SourceFixAll = 'source.fixAll';\r\n})(CodeActionKind || (CodeActionKind = {}));\r\n/**\r\n * The CodeActionContext namespace provides helper functions to work with\r\n * [CodeActionContext](#CodeActionContext) literals.\r\n */\r\nexport var CodeActionContext;\r\n(function (CodeActionContext) {\r\n /**\r\n * Creates a new CodeActionContext literal.\r\n */\r\n function create(diagnostics, only) {\r\n var result = { diagnostics: diagnostics };\r\n if (only !== void 0 && only !== null) {\r\n result.only = only;\r\n }\r\n return result;\r\n }\r\n CodeActionContext.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));\r\n }\r\n CodeActionContext.is = is;\r\n})(CodeActionContext || (CodeActionContext = {}));\r\nexport var CodeAction;\r\n(function (CodeAction) {\r\n function create(title, commandOrEdit, kind) {\r\n var result = { title: title };\r\n if (Command.is(commandOrEdit)) {\r\n result.command = commandOrEdit;\r\n }\r\n else {\r\n result.edit = commandOrEdit;\r\n }\r\n if (kind !== void 0) {\r\n result.kind = kind;\r\n }\r\n return result;\r\n }\r\n CodeAction.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && Is.string(candidate.title) &&\r\n (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\r\n (candidate.kind === void 0 || Is.string(candidate.kind)) &&\r\n (candidate.edit !== void 0 || candidate.command !== void 0) &&\r\n (candidate.command === void 0 || Command.is(candidate.command)) &&\r\n (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) &&\r\n (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\r\n }\r\n CodeAction.is = is;\r\n})(CodeAction || (CodeAction = {}));\r\n/**\r\n * The CodeLens namespace provides helper functions to work with\r\n * [CodeLens](#CodeLens) literals.\r\n */\r\nexport var CodeLens;\r\n(function (CodeLens) {\r\n /**\r\n * Creates a new CodeLens literal.\r\n */\r\n function create(range, data) {\r\n var result = { range: range };\r\n if (Is.defined(data)) {\r\n result.data = data;\r\n }\r\n return result;\r\n }\r\n CodeLens.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\r\n }\r\n CodeLens.is = is;\r\n})(CodeLens || (CodeLens = {}));\r\n/**\r\n * The FormattingOptions namespace provides helper functions to work with\r\n * [FormattingOptions](#FormattingOptions) literals.\r\n */\r\nexport var FormattingOptions;\r\n(function (FormattingOptions) {\r\n /**\r\n * Creates a new FormattingOptions literal.\r\n */\r\n function create(tabSize, insertSpaces) {\r\n return { tabSize: tabSize, insertSpaces: insertSpaces };\r\n }\r\n FormattingOptions.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.number(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\r\n }\r\n FormattingOptions.is = is;\r\n})(FormattingOptions || (FormattingOptions = {}));\r\n/**\r\n * The DocumentLink namespace provides helper functions to work with\r\n * [DocumentLink](#DocumentLink) literals.\r\n */\r\nexport var DocumentLink;\r\n(function (DocumentLink) {\r\n /**\r\n * Creates a new DocumentLink literal.\r\n */\r\n function create(range, target, data) {\r\n return { range: range, target: target, data: data };\r\n }\r\n DocumentLink.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\r\n }\r\n DocumentLink.is = is;\r\n})(DocumentLink || (DocumentLink = {}));\r\n/**\r\n * The SelectionRange namespace provides helper function to work with\r\n * SelectionRange literals.\r\n */\r\nexport var SelectionRange;\r\n(function (SelectionRange) {\r\n /**\r\n * Creates a new SelectionRange\r\n * @param range the range.\r\n * @param parent an optional parent.\r\n */\r\n function create(range, parent) {\r\n return { range: range, parent: parent };\r\n }\r\n SelectionRange.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate !== undefined && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\r\n }\r\n SelectionRange.is = is;\r\n})(SelectionRange || (SelectionRange = {}));\r\nexport var EOL = ['\\n', '\\r\\n', '\\r'];\r\n/**\r\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\r\n */\r\nexport var TextDocument;\r\n(function (TextDocument) {\r\n /**\r\n * Creates a new ITextDocument literal from the given uri and content.\r\n * @param uri The document's uri.\r\n * @param languageId The document's language Id.\r\n * @param content The document's content.\r\n */\r\n function create(uri, languageId, version, content) {\r\n return new FullTextDocument(uri, languageId, version, content);\r\n }\r\n TextDocument.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.number(candidate.lineCount)\r\n && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\r\n }\r\n TextDocument.is = is;\r\n function applyEdits(document, edits) {\r\n var text = document.getText();\r\n var sortedEdits = mergeSort(edits, function (a, b) {\r\n var diff = a.range.start.line - b.range.start.line;\r\n if (diff === 0) {\r\n return a.range.start.character - b.range.start.character;\r\n }\r\n return diff;\r\n });\r\n var lastModifiedOffset = text.length;\r\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\r\n var e = sortedEdits[i];\r\n var startOffset = document.offsetAt(e.range.start);\r\n var endOffset = document.offsetAt(e.range.end);\r\n if (endOffset <= lastModifiedOffset) {\r\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\r\n }\r\n else {\r\n throw new Error('Overlapping edit');\r\n }\r\n lastModifiedOffset = startOffset;\r\n }\r\n return text;\r\n }\r\n TextDocument.applyEdits = applyEdits;\r\n function mergeSort(data, compare) {\r\n if (data.length <= 1) {\r\n // sorted\r\n return data;\r\n }\r\n var p = (data.length / 2) | 0;\r\n var left = data.slice(0, p);\r\n var right = data.slice(p);\r\n mergeSort(left, compare);\r\n mergeSort(right, compare);\r\n var leftIdx = 0;\r\n var rightIdx = 0;\r\n var i = 0;\r\n while (leftIdx < left.length && rightIdx < right.length) {\r\n var ret = compare(left[leftIdx], right[rightIdx]);\r\n if (ret <= 0) {\r\n // smaller_equal -> take left to preserve order\r\n data[i++] = left[leftIdx++];\r\n }\r\n else {\r\n // greater -> take right\r\n data[i++] = right[rightIdx++];\r\n }\r\n }\r\n while (leftIdx < left.length) {\r\n data[i++] = left[leftIdx++];\r\n }\r\n while (rightIdx < right.length) {\r\n data[i++] = right[rightIdx++];\r\n }\r\n return data;\r\n }\r\n})(TextDocument || (TextDocument = {}));\r\nvar FullTextDocument = /** @class */ (function () {\r\n function FullTextDocument(uri, languageId, version, content) {\r\n this._uri = uri;\r\n this._languageId = languageId;\r\n this._version = version;\r\n this._content = content;\r\n this._lineOffsets = undefined;\r\n }\r\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\r\n get: function () {\r\n return this._uri;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\r\n get: function () {\r\n return this._languageId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\r\n get: function () {\r\n return this._version;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FullTextDocument.prototype.getText = function (range) {\r\n if (range) {\r\n var start = this.offsetAt(range.start);\r\n var end = this.offsetAt(range.end);\r\n return this._content.substring(start, end);\r\n }\r\n return this._content;\r\n };\r\n FullTextDocument.prototype.update = function (event, version) {\r\n this._content = event.text;\r\n this._version = version;\r\n this._lineOffsets = undefined;\r\n };\r\n FullTextDocument.prototype.getLineOffsets = function () {\r\n if (this._lineOffsets === undefined) {\r\n var lineOffsets = [];\r\n var text = this._content;\r\n var isLineStart = true;\r\n for (var i = 0; i < text.length; i++) {\r\n if (isLineStart) {\r\n lineOffsets.push(i);\r\n isLineStart = false;\r\n }\r\n var ch = text.charAt(i);\r\n isLineStart = (ch === '\\r' || ch === '\\n');\r\n if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\r\n i++;\r\n }\r\n }\r\n if (isLineStart && text.length > 0) {\r\n lineOffsets.push(text.length);\r\n }\r\n this._lineOffsets = lineOffsets;\r\n }\r\n return this._lineOffsets;\r\n };\r\n FullTextDocument.prototype.positionAt = function (offset) {\r\n offset = Math.max(Math.min(offset, this._content.length), 0);\r\n var lineOffsets = this.getLineOffsets();\r\n var low = 0, high = lineOffsets.length;\r\n if (high === 0) {\r\n return Position.create(0, offset);\r\n }\r\n while (low < high) {\r\n var mid = Math.floor((low + high) / 2);\r\n if (lineOffsets[mid] > offset) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n // low is the least x for which the line offset is larger than the current offset\r\n // or array.length if no line offset is larger than the current offset\r\n var line = low - 1;\r\n return Position.create(line, offset - lineOffsets[line]);\r\n };\r\n FullTextDocument.prototype.offsetAt = function (position) {\r\n var lineOffsets = this.getLineOffsets();\r\n if (position.line >= lineOffsets.length) {\r\n return this._content.length;\r\n }\r\n else if (position.line < 0) {\r\n return 0;\r\n }\r\n var lineOffset = lineOffsets[position.line];\r\n var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\r\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\r\n };\r\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\r\n get: function () {\r\n return this.getLineOffsets().length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FullTextDocument;\r\n}());\r\nvar Is;\r\n(function (Is) {\r\n var toString = Object.prototype.toString;\r\n function defined(value) {\r\n return typeof value !== 'undefined';\r\n }\r\n Is.defined = defined;\r\n function undefined(value) {\r\n return typeof value === 'undefined';\r\n }\r\n Is.undefined = undefined;\r\n function boolean(value) {\r\n return value === true || value === false;\r\n }\r\n Is.boolean = boolean;\r\n function string(value) {\r\n return toString.call(value) === '[object String]';\r\n }\r\n Is.string = string;\r\n function number(value) {\r\n return toString.call(value) === '[object Number]';\r\n }\r\n Is.number = number;\r\n function func(value) {\r\n return toString.call(value) === '[object Function]';\r\n }\r\n Is.func = func;\r\n function objectLiteral(value) {\r\n // Strictly speaking class instances pass this check as well. Since the LSP\r\n // doesn't use classes we ignore this for now. If we do we need to add something\r\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\r\n return value !== null && typeof value === 'object';\r\n }\r\n Is.objectLiteral = objectLiteral;\r\n function typedArray(value, check) {\r\n return Array.isArray(value) && value.every(check);\r\n }\r\n Is.typedArray = typedArray;\r\n})(Is || (Is = {}));\r\n","module.exports = require(\"child_process\");;","module.exports = require(\"crypto\");;","module.exports = require(\"fs\");;","module.exports = require(\"net\");;","module.exports = require(\"os\");;","module.exports = require(\"path\");;","module.exports = require(\"vscode\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./src/extension.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/vscode-extension/language-configuration.json b/vscode-extension/language-configuration.json new file mode 100644 index 000000000..8f162a0c4 --- /dev/null +++ b/vscode-extension/language-configuration.json @@ -0,0 +1,30 @@ +{ + "comments": { + // symbol used for single line comment. Remove this entry if your language does not support line comments + "lineComment": "//", + // symbols used for start and end a block comment. Remove this entry if your language does not support block comments + "blockComment": [ "/*", "*/" ] + }, + // symbols used as brackets + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + // symbols that are auto closed when typing + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ], + // symbols that can be used to surround a selection + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ] +} \ No newline at end of file diff --git a/vscode-extension/package-lock.json b/vscode-extension/package-lock.json new file mode 100644 index 000000000..64f99e791 --- /dev/null +++ b/vscode-extension/package-lock.json @@ -0,0 +1,1389 @@ +{ + "name": "bolt", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/eslint": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.4.tgz", + "integrity": "sha512-YCY4kzHMsHoyKspQH+nwSe+70Kep7Vjt2X+dZe5Vs2vkRudqtoFoUIv1RlJmZB8Hbp7McneupoZij4PadxsK5Q==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.45", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==", + "dev": true + }, + "@types/vscode": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.51.0.tgz", + "integrity": "sha512-C/jZ35OT5k/rsJyAK8mS1kM++vMcm89oSWegkzxRCvHllIq0cToZAkIDs6eCY4SKrvik3nrhELizyLcM0onbQA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/info": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.1.0.tgz", + "integrity": "sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.1.0.tgz", + "integrity": "sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==", + "dev": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", + "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-back": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", + "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "command-line-usage": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", + "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", + "dev": true, + "requires": { + "array-back": "^4.0.1", + "chalk": "^2.4.2", + "table-layout": "^1.0.1", + "typical": "^5.2.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.596", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.596.tgz", + "integrity": "sha512-nLO2Wd2yU42eSoNJVQKNf89CcEGqeFZd++QsnN2XIgje1s/19AgctfjLIbPORlvcCO8sYjLwX4iUgDdusOY8Sg==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "loader-runner": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.1.0.tgz", + "integrity": "sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-releases": { + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table-layout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", + "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "dev": true, + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz", + "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==", + "dev": true, + "requires": { + "jest-worker": "^26.6.1", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.8" + }, + "dependencies": { + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-loader": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.11.tgz", + "integrity": "sha512-06X+mWA2JXoXJHYAesUUL4mHFYhnmyoCdQVMXofXF552Lzd4wNwSGg7unJpttqUP7ziaruM8d7u8LUB6I1sgzA==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "typescript": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", + "dev": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "vscode-jsonrpc": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", + "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" + }, + "vscode-languageclient": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", + "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", + "requires": { + "semver": "^6.3.0", + "vscode-languageserver-protocol": "^3.15.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", + "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", + "requires": { + "vscode-jsonrpc": "^5.0.1", + "vscode-languageserver-types": "3.15.1" + } + }, + "vscode-languageserver-types": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" + }, + "watchpack": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.1.tgz", + "integrity": "sha512-vO8AKGX22ZRo6PiOFM9dC0re8IcKh8Kd/aH2zeqUc6w4/jBGlTy2P7fTC6ekT0NjVeGjgU2dGC5rNstKkeLEQg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.4.0.tgz", + "integrity": "sha512-udpYTyqz8toTTdaOsL2QKPLeZLt2IEm9qY7yTXuFEQhKu5bk0yQD9BtAdVQksmz4jFbbWOiWmm3NHarO0zr/ng==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.45", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.3.1", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "pkg-dir": "^4.2.0", + "schema-utils": "^3.0.0", + "tapable": "^2.0.0", + "terser-webpack-plugin": "^5.0.3", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "dependencies": { + "enhanced-resolve": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz", + "integrity": "sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.0.0" + } + }, + "tapable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.1.1.tgz", + "integrity": "sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz", + "integrity": "sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==", + "dev": true, + "requires": { + "@webpack-cli/info": "^1.1.0", + "@webpack-cli/serve": "^1.1.0", + "colorette": "^1.2.1", + "command-line-usage": "^6.1.0", + "commander": "^6.2.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "leven": "^3.1.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrapjs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz", + "integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==", + "dev": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/vscode-extension/package.json b/vscode-extension/package.json new file mode 100644 index 000000000..5243a6c6c --- /dev/null +++ b/vscode-extension/package.json @@ -0,0 +1,75 @@ +{ + "name": "bolt", + "displayName": "The Bolt Programming Language", + "description": "Adds support for the Bolt programming language", + "version": "0.0.1", + "engines": { + "vscode": "^1.51.0" + }, + "categories": [ + "Programming Languages" + ], + "publisher": "samvv", + "main": "./dist/extension", + "activationEvents": [ + "onLanguage:bolt" + ], + "contributes": { + "languages": [ + { + "id": "bolt", + "aliases": [ + "Bolt", + "bolt" + ], + "extensions": [ + ".bolt" + ], + "configuration": "./language-configuration.json" + } + ], + "grammars": [ + { + "language": "bolt", + "scopeName": "source.bolt", + "path": "./syntaxes/bolt.tmLanguage.json" + } + ], + "configuration": [ + { + "title": "Language Server", + "properties": { + "bolt.pathToLanguageServer": { + "type": [ + "string", + "null" + ], + "default": null, + "description": "You can set this to point to a custom binary that will be spawned instead of the built-in language server." + }, + "bolt.watchLanguageServer": { + "type": "boolean", + "default": false, + "description": "Set to `true` to automatically restart the lanuage server whenever the binary was changed on the file system." + } + } + } + ] + }, + "scripts": { + "vscode:prepublish": "npm run compile", + "compile": "webpack --mode production", + "watch": "webpack --mode development --watch" + }, + "dependencies": { + "vscode-languageclient": "^6.1.3" + }, + "devDependencies": { + "@types/node": "^14.14.7", + "@types/vscode": "^1.51.0", + "ts-loader": "^8.0.11", + "typescript": "^4.0.5", + "webpack": "^5.4.0", + "webpack-cli": "^4.2.0" + } +} diff --git a/vscode-extension/src/extension.ts b/vscode-extension/src/extension.ts new file mode 100644 index 000000000..c155f3a1b --- /dev/null +++ b/vscode-extension/src/extension.ts @@ -0,0 +1,79 @@ +import * as net from "net" +import * as path from 'path'; +import { workspace, ExtensionContext } from 'vscode'; + +import { + LanguageClient, + LanguageClientOptions, + ServerOptions, + StreamInfo, + TransportKind +} from 'vscode-languageclient'; + +let client: LanguageClient; + +function spawnLanguageClient(context: ExtensionContext) { + + if (client) { + return; + } + + const config = workspace.getConfiguration('bolt'); + + const watchLanguageServer = config.get('watchLanguageServer') as boolean; + + let pathToLanguageServer = config.get('pathToLanguageServer') as string | null; + + if (pathToLanguageServer === null) { + pathToLanguageServer = context.asAbsolutePath(path.join('bin', 'langserver.js')); + } + + let serverOptions: ServerOptions; + + const languageServerPort = process.env['VSCODE_BOLT_LANGUAGE_SERVER_PORT'] + + if (languageServerPort !== undefined) { + const port = Number(languageServerPort) + if (isNaN(port)) { + return; + } + serverOptions = () => { + const socket = net.connect(port) + return Promise.resolve({ reader: socket, writer: socket }); + } + } else { + serverOptions = { module: pathToLanguageServer, transport: TransportKind.ipc } + }; + + // Options to control the language client + let clientOptions: LanguageClientOptions = { + // Register the server for plain text documents + documentSelector: [{ scheme: 'file', language: 'bolt' }], + synchronize: { + // Notify the server about file changes to '.clientrc files contained in the workspace + fileEvents: workspace.createFileSystemWatcher('**/*.bolt') + } + }; + + // Create the language client and start the client. + client = new LanguageClient( + 'bolt-client', + 'Bolt Language Server', + serverOptions, + clientOptions + ); + + // Start the client. This will also launch the server + client.start(); +} + +export function activate(context: ExtensionContext) { + spawnLanguageClient(context); +} + +export function deactivate(): Thenable | undefined { + if (!client) { + return undefined; + } + return client.stop(); +} \ No newline at end of file diff --git a/vscode-extension/syntaxes/bolt.tmLanguage.json b/vscode-extension/syntaxes/bolt.tmLanguage.json new file mode 100644 index 000000000..e5d0e3b21 --- /dev/null +++ b/vscode-extension/syntaxes/bolt.tmLanguage.json @@ -0,0 +1,60 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "Bolt", + "patterns": [ + { + "include": "#keywords" + }, + { + "include": "#strings" + }, + { + "include": "#constants" + }, + { + "name": "storage.type.bolt", + "match": "\\b(int|bool|String)\\b" + } + ], + "repository": { + "keywords": { + "patterns": [{ + "name": "keyword.control.bolt", + "match": "\\b(let|fn|pub|struct|if|impl|trait|while|for|return|loop)\\b" + }, { + "name": "keyword.operator.bolt", + "match": "(==+|[-+*/%^&!<>]+)" + }, { + "name": "keyword.operator.assignment.bolt", + "match": "[-+*/%^&!<>]*=" + }] + }, + "constants": { + "patterns": [{ + "name": "constant.numeric.bolt", + "match": "\\b[0-9][0-9]*\\b" + }, { + "name": "constant.character.bolt", + "match": "'.'" + }, { + "name": "constant.character.escape.bolt", + "match": "'\\\\.'" + }, { + "name": "constant.language.boolean.bolt", + "match": "\\b(true|false)\\b" + }] + }, + "strings": { + "name": "string.quoted.double.bolt", + "begin": "\"", + "end": "\"", + "patterns": [ + { + "name": "constant.character.escape.bolt", + "match": "\\\\." + } + ] + } + }, + "scopeName": "source.bolt" +} diff --git a/vscode-extension/tsconfig.json b/vscode-extension/tsconfig.json new file mode 100644 index 000000000..9b27fa7b2 --- /dev/null +++ b/vscode-extension/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2019", + "lib": ["ES2019"], + "noEmit": true, + "sourceMap": true + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules", + ".vscode-test" + ] +} diff --git a/vscode-extension/webpack.config.js b/vscode-extension/webpack.config.js new file mode 100644 index 000000000..e0b78c78f --- /dev/null +++ b/vscode-extension/webpack.config.js @@ -0,0 +1,42 @@ +//@ts-check + +'use strict'; + +const path = require('path'); + +/**@type {import('webpack').Configuration}*/ +const config = { + target: 'node', + entry: './src/extension.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2', + devtoolModuleFilenameTemplate: '../[resource-path]' + }, + devtool: 'source-map', + externals: { + vscode: 'commonjs vscode' + }, + resolve: { + extensions: ['.ts', '.js'] + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true + } + } + ] + } + ] + } +}; + +module.exports = config; \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..23f7d0ddc --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,21 @@ +#!/usr/bin/env node + +const path = require('path'); +const glob = require('glob'); + +function getAllPackages() { + return glob.sync('**/package.json', { + ignore: ['node_modules', '.*'], + cwd: __dirname, + }); +} + +const webpackConfig = []; + +for (const packageJsonPath of getAllPackages()) { + const webpackConfigPath = path.resolve(path.dirname(packageJsonPath), 'webpack.config.js'); + webpackConfig.push(require(webpackConfigPath)); +} + +module.exports = webpackConfig; +