89 Commits

Author SHA1 Message Date
Kolja Lampe
c00cc0c450 Add test commands 2019-12-04 19:55:48 +01:00
Kolja Lampe
22838b669c Updated changelog 2019-11-30 01:27:50 +01:00
Kolja Lampe
3e2e52a1a1 Prepare 0.7.3 2019-11-30 01:13:56 +01:00
Kolja Lampe
9ded76fc98 Update libs 2019-11-24 01:38:59 +01:00
Kolja Lampe
28788e723c Fix import causing wrong highlighting 2019-11-11 00:36:39 +01:00
Razzeee
1481344d97 Update dependencies (#49)
Update dependencies
2019-11-06 01:02:20 +01:00
Kolja Lampe
49dd002815 Update dependencies 2019-11-06 00:59:03 +01:00
Kolja Lampe
d657e01d24 Prepare 0.7.2 2019-10-28 02:17:10 +01:00
Kolja Lampe
ce68939204 Change name to just Elm and remove mentions of language server from client 2019-10-27 02:49:22 +01:00
Kolja Lampe
505f1b4bd6 Update elm.json schema for 0.19.1 2019-10-25 20:50:20 +02:00
Kolja Lampe
be39020307 Prepare 0.7.1 2019-10-21 17:38:03 +02:00
Kolja Lampe
90106b5429 Fix build problems 2019-10-20 23:15:07 +02:00
Kolja Lampe
2a82d2aaa9 Update vscodeignore 2019-10-20 02:36:58 +02:00
Kolja Lampe
547222bd4a Prepare 0.7.0 2019-10-20 02:09:52 +02:00
Razzeee
48530aacc5 Reword readme (#36)
Reword readme
2019-10-19 18:48:16 +02:00
Kolja Lampe
fffd9aa852 Reword readme 2019-10-19 18:47:06 +02:00
Razzeee
0538b06b69 Use github action as CI (#35)
Use github action as CI
2019-10-18 01:36:53 +02:00
Kolja Lampe
6e2ab9242b Use github action as CI 2019-10-18 01:34:19 +02:00
Kolja Lampe
621c51969c Update packages 2019-10-17 16:49:27 +02:00
Razzeee
08e122aa2f Improve elm.json schema (#33)
Improve elm.json schema
2019-10-16 09:34:34 +02:00
Kolja Lampe
4b89864b9e Improve elm.json schema 2019-10-15 23:27:36 +02:00
Razzeee
f973dc56d2 Fix '"' breaking syntax highlighting (#31)
Fix '"' breaking syntax highlighting
2019-10-15 11:16:44 +02:00
Kolja Lampe
0e068f1154 Fix '"' breaking syntax highlighting 2019-10-03 15:03:28 +02:00
Kolja Lampe
f848fb6565 Update dependencies 2019-09-28 16:51:38 +02:00
Razzeee
e649306dc9 Create LICENSE 2019-09-15 22:51:05 +02:00
Kolja Lampe
4a7dd0a4aa Fix wrong command 2019-09-05 22:33:10 +02:00
Kolja Lampe
1f3a862be8 Update pipeline 2019-09-05 22:31:48 +02:00
Kolja Lampe
a05bbae522 Prepare 0.6.0 2019-09-05 22:20:21 +02:00
Kolja Lampe
fea0ab6a14 Add release instructions 2019-09-05 19:08:42 +02:00
Kolja Lampe
70c4ed3e90 Enable middleware for reference code lenses 2019-09-01 22:30:35 +02:00
Kolja Lampe
169702c3f7 Update dependencies 2019-09-01 17:16:06 +02:00
Kolja Lampe
05a458c422 Add more words to dictionary 2019-09-01 17:10:54 +02:00
Kolja Lampe
2b680f4737 Version 0.5.2 2019-08-30 20:18:31 +02:00
Kolja Lampe
09f6e49a22 Copy wasm even on watch builds 2019-08-27 22:24:33 +02:00
Kolja Lampe
d4f4f9cb2f Version 0.5.1 2019-08-27 18:26:08 +02:00
Kolja Lampe
182401a51c Require requests correctly 2019-08-27 17:31:47 +02:00
Kolja Lampe
436d332881 Remove wrong instruction for vscode:prepublish 2019-08-26 23:27:05 +02:00
Kolja Lampe
cfb4824875 Version 0.5.0 2019-08-26 23:25:24 +02:00
Razzeee
5c030613fa Merge pull request #25 from elm-tooling/change-path-settings
Change path defaults
2019-08-26 22:57:39 +02:00
Kolja Lampe
9de9c4b7d1 Change path defaults 2019-08-25 00:01:07 +02:00
Razzeee
5d25b9f8d8 Merge pull request #24 from elm-tooling/add-setting-for-elm-analyse
Add setting to configure when elm-analyse runs
2019-08-24 00:33:22 +02:00
Kolja Lampe
a1fa8fd187 Add setting to configure when elm-analyse runshttps://github.com/elm-tooling/elm-language-server/pull/139 2019-08-24 00:32:26 +02:00
Kolja Lampe
c43263f814 Use jest instead of mocha 2019-08-21 16:58:15 +02:00
Razzeee
14d7408c63 Don't rely on elm.json for initialization (#21)
Don't rely on elm.json for initialization
2019-08-20 22:36:06 +02:00
Kolja Lampe
514fe3070c Move mocha types to client project 2019-08-19 10:54:52 +02:00
Kolja Lampe
384ef29fd1 Don't rely on elm.json for initialization 2019-08-19 01:26:59 +02:00
Kolja Lampe
4bf35e411d Add profiler config in launch.json 2019-08-18 15:16:37 +02:00
Kolja Lampe
850d0b8917 Change package icon 2019-08-14 09:49:09 +02:00
Kolja Lampe
dde5f2435b Don't use deprecated synchronize setting 2019-08-11 03:14:32 +02:00
Kolja Lampe
5448fc114e Pass config to language server 2019-08-11 02:47:45 +02:00
Kolja Lampe
e2247e3185 Add prettier config for client 2019-08-11 02:06:37 +02:00
Kolja Lampe
8a6f6aca93 Update way to determine if powershell is used 2019-08-09 21:42:20 +02:00
Razzeee
9750c6869d Add commands for installing and browsing Elm packages (#19)
Add commands for installing and browsing Elm packages
2019-08-08 12:11:27 +02:00
Krzysztof Cieslak
fc5f32293d Fix plugin activation 2019-08-06 12:20:17 +02:00
Krzysztof Cieslak
3a6d948fc5 Cancel installation for <esc> 2019-08-06 12:20:06 +02:00
Krzysztof Cieslak
7519790071 Change isPowershell implementation 2019-08-06 12:05:39 +02:00
Krzysztof Cieslak
d9410422cc Add commands for installing and browsing Elm packages 2019-08-05 19:01:52 +02:00
Kolja Lampe
338f7c8548 Bump to 0.4.2 2019-08-01 00:30:00 +02:00
Razzeee
721286ed50 Create ISSUE_TEMPLATE.md 2019-07-26 13:17:44 +02:00
Kolja Lampe
1632a0dd38 Bump server version and prepare release 2019-07-20 09:24:43 +02:00
Kolja Lampe
4db9c9d65d 0.4.0 2019-07-19 11:11:38 +02:00
Kolja Lampe
cb87d56bee Prepare 0.4.0 2019-07-19 11:05:15 +02:00
Kolja Lampe
1ee0523c79 Don't reveal output channel automatically 2019-07-17 23:59:17 +02:00
Kolja Lampe
1bf56562d3 Moved log string to server 2019-07-14 02:07:14 +02:00
Kolja Lampe
78b503a964 Update packages 2019-07-13 12:22:08 +02:00
Kolja Lampe
5cb14fe9e6 Don't show folder for top level workspace 2019-07-10 00:42:37 +02:00
Kolja Lampe
74df68ee38 Update server 2019-07-10 00:30:30 +02:00
Kolja Lampe
88e02cd4e9 Append the subproject to our output channels 2019-07-10 00:30:23 +02:00
Kolja Lampe
d04d2ee68b Update client dependencies 2019-07-04 23:47:38 +02:00
Razzeee
c5f77c5bfb Update README.md 2019-06-27 17:19:53 +02:00
Kolja Lampe
765e0bffe8 Update server 2019-06-27 16:50:53 +02:00
Kolja Lampe
4d6e149a53 0.3.0 2019-06-27 00:13:15 +02:00
Kolja Lampe
2ab9f7c4ee Update server 2019-06-27 00:12:27 +02:00
Kolja Lampe
2917aea2a7 Improve wording 2019-06-27 00:09:43 +02:00
Andy
47f1f89154 Readme: Update git clone command
- Use ssh because submodule is using ssh, too
- Use "recursive" to check out submodules (otherwise it can end in and endless loop)
2019-06-26 16:44:23 +02:00
Andy
5d71d65531 Readme: Chapter Contributing / Debugging 2019-06-26 13:54:24 +02:00
Andy
b2c95225ef Readme: Install instructions improved
- Link to marketplace
- Language server is part of plugin
2019-06-26 13:30:21 +02:00
Andy
08e1f5404e Readme: Combine install commands 2019-06-26 13:27:46 +02:00
Kolja Lampe
f011fc645d Add a gif and update server 2019-06-25 23:19:42 +02:00
Kolja Lampe
584de2cb71 Update packages 2019-06-25 01:03:16 +02:00
Razzeee
d20d3a47fb Pickup all elm workspaces (#4)
Pickup all elm workspaces
2019-06-24 15:15:04 +02:00
Kolja Lampe
b385406d1b Pickup all elm workspaces 2019-06-21 21:52:09 +02:00
Kolja Lampe
18ab1ae826 Improve schema definition 2019-06-21 21:46:51 +02:00
Kolja Lampe
b36c1aa9c1 Fix typos 2019-06-21 17:16:09 +02:00
Kolja Lampe
d979fa548e 0.2.3 2019-06-20 01:27:50 +02:00
Kolja Lampe
dde90f53fd Update server 2019-06-20 01:27:24 +02:00
Kolja Lampe
ff6f39e671 Update server version 2019-06-15 01:46:55 +02:00
Razzeee
36970ee13c Update README.md 2019-06-11 01:01:21 +02:00
Kolja Lampe
0bcadbae5f Mention elm version 2019-06-09 19:41:28 +02:00
24 changed files with 2069 additions and 1550 deletions

33
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,33 @@
<!--- Provide a general summary of the issue in the Title above -->
## Expected Behavior
<!--- If you're describing a bug, tell us what should happen -->
<!--- If you're suggesting a change/improvement, tell us how it should work -->
## Current Behavior
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
## Possible Solution
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
<!--- or ideas how to implement the addition or change -->
## Steps to Reproduce (for bugs)
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Context
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Your Environment
<!--- Include as many relevant details about the environment you experienced the bug in -->
* Version used:
* Editor name and version (e.g. VSCode 1.36.1):
* Environment name and version (e.g. node.js 5.4):
* Operating System and version:

27
.github/workflows/compile.yaml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: Compile
on: [push]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
node-version: [12]
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Setup node ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm ci and compile
run: |
npm ci
npm run compile
env:
CI: true

2
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "server"]
path = server
url = git@github.com:elm-tooling/elm-language-server.git
url = https://github.com/elm-tooling/elm-language-server.git

3
.vscode/launch.json vendored
View File

@@ -10,7 +10,8 @@
"args": [
// Needs to be set to your vscode path, for arch this works
"/usr/lib/code",
"--extensionDevelopmentPath=${workspaceRoot}"
"--extensionDevelopmentPath=${workspaceRoot}",
"code --inspect-extensions=9993"
],
"sourceMaps": true,
"outFiles": ["${workspaceRoot}/client/out/**/*.js"],

View File

@@ -2,5 +2,12 @@
"editor.insertSpaces": false,
"tslint.enable": true,
"typescript.tsc.autoDetect": "off",
"typescript.preferences.quoteStyle": "single"
"typescript.preferences.quoteStyle": "single",
"editor.tabSize": 2,
"cSpell.words": [
"Jsons",
"execa",
"globby",
"promisify"
]
}

View File

@@ -1,3 +1,5 @@
.github/**
server/.github/**
.vscode/**
**/*.ts
**/*.map

View File

@@ -1,5 +1,114 @@
# Change Log
## 0.1.0
## 0.7.3
- Fix a case of wrong highlighting
- Update the language server
- Improved completions for type annotations, functions, import and module statements
- Fixed a bug where files without imports would not index the virtual imports
## 0.7.2
- Update `elm.json` schema to allow `0.19.1` as a version
- Renamed extension from `ElmLS` to `Elm`
- Updated the language server
- Add more feedback on init for common errors
- Make sure a file without permissions doesn't crash the server
- `-v` to print version was not working
## 0.7.1
- Updated the language server
- Remove completions committing when space is pressed
## 0.7.0
- Made elm.json schema completions better and more helpful
- Fixed '"' breaking syntax highlighting
- Updated the language server
- Completions should be much nicer to use now
- Improved performance for codeLenses
- Do not crash when the elm compiler generates invalid json
- Fix codeLens bug showing wrong count for types
- Print version with `-v` or `--version`
## 0.6.0
- Reference code lenses are now clickable, try it!
- Updated the language server
- Add elm make code actions for more compiler errors
- Various improvements to folding
- Process files on init in parallel
- Fixed some problems with references not being correct
- Fallback to old configuration flow when clients don't support the new one
- Get rid of crypto deprecation warnings
- Updated tree-sitter syntax parsing
- Add glsl parsing
- Nest if/then/else expressions
- Let and in now correctly nest
- Change when block_comments are set, should now be better for annotations
- End functions/case as early as possible, so they don't include whitespace
## 0.5.2
- Updated the language server
- Fixed case where elm-format might have stripped the last line from you files
## 0.5.1
- Fixed missing dependency on startup
- Updated the language server
- Fix problem on init on windows systems
## 0.5.0
- Added commands for installing and browsing Elm packages
- Change extension icon
- Updated the language server
- Updated and clarified the readme in multiple ways, also added sublime text instructions
- Reworked settings and detection of `elm`, `elm-test` and `elm-format`
- Server figures out the elm version automatically
- Correctly detect cursors on or after the last character of a token
- elm.json detection is now handled by the server, the setting is deprecated
- Handle elm libraries better, we failed to load the correct deps before this
- You can configure when to run elm-analyse via the setting `elmAnalyseTrigger` ("change" | "save" | "never")
- Some cleanups for cases where the elm compiler does not respond with a json
## 0.4.2
- Updated the language server
- Fixed document changes causing high cpu load
- Included a fix for a memory out of bounds error that could occur
- Removed `runtime` option, that is now unneeded due to us using wasm
- Use normal file path rather than file:// protocol when reading a file
## 0.4.1
- Revert determination of used elm compiler version, as it was causing file open to go unnoticed
## 0.4.0
- Updated the language server
- Use WASM version of tree-sitter and updated tree-sitter - This mean multiple parsing improvements
- Added completions for methods defined in a let scope
- Added completions from case branches
- Added code actions for some rename suggestions from elm make
- Removed the ability to run elm-test for now, as it was problematic
- Determine the used elm version, so that we're ready for 0.19.1
- Cleaned up the symbols that we show in the outline or when searching
- Fixed multiple problems with multi workspace useage
- Fixed type references including (..) on search or rename
- Fixed elm make not reporting the correct path in some edgecases
- Don't reveal the output channel on each log
- Better names for output channels in multi workspace projects
## 0.3.0
- Initial release

7
HOW_TO_RELEASE.md Normal file
View File

@@ -0,0 +1,7 @@
- Update the changelog in `CHANGELOG.md`
- Increase the version in `package.json`
- Run `npm install`
- Run `npm run compile`
- Push the code to github and wait for the CI
- Run `vsce publish`
- Tag the new version on github

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Kolja Lampe
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.

View File

@@ -1,30 +1,30 @@
# elm-vscode-ls
# Elm Plugin for Visual Studio Code (VSCode)
This vscode extension is in development and might be lacking features you know working from `vscode-elm`.
Supports elm 0.19
You will need to install `elm`, `elm-test` and `elm-format`, to get all diagnostics. If your setup fails to find the global installations of those, you can use the settings panel is VSCode to set the paths to the executables manually.
## Install
```shell
npm install -g elm
npm install -g elm-test
npm install -g elm-format
```
1. Install VSCode from [here](https://code.visualstudio.com/)
2. Follow [this link](https://marketplace.visualstudio.com/items?itemName=Elmtooling.elm-ls-vscode) to install the plugin
3. Make sure you have nodejs and therefor npm installed from [here](https://nodejs.org/)
4. Install elm-test and elm-format by running `npm install -g elm-test elm-format` from the terminal or commandline
## Features
## Highlighted Features
| Feature | Description |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Diagnostics | Provided via `elm make` and `elm-analyse` |
| Formatting | Provided via `elm-format` and post-processed to only return a diff of changes. This way it should not be as intrusive as running `elm-format` normal |
| codeLenses | Currently only shows if a type alias, custom type or function is exposed from that module |
| completions | Show completions for the current file and snippets |
| definitions | Enables you to jump to the definition of a type alias, module, custom type or function |
| documentSymbols | Identifies all symbols in a document. |
| folding | Let's you fold the code on certain elm constructs |
| hover | Shows type annotations and documentation for a type alias, module, custom type or function |
| references | Lists all references to a type alias, module, custom type or function |
| rename | Enables you to rename a type alias, module, custom type or function |
| workspaceSymbols | Identifies all symbols in the current workspace |
- Errors and helpful tips will be shown whenever you save a file (Control + S)
- Format on save (Control + S)
- Suggests completions and snippets (Control + Space)
## Additional Features
- Lists all references to a type alias, module, custom type or function (Alt + Shift + F12)
- Jump to the definition of a type alias, module, custom type or function
- Shows type annotations and documentation on hover for type alia, module, custom type or function
- Rename a type alias, module, custom type or function (F2)
- Browse file by symbols (Control + Shift + O)
- Browse workspace by symbols (Control + Shift + R)
- Codelenses show how many times you calling a function and if it's exposed or not
- Code folding
## Extension Settings
@@ -34,3 +34,28 @@ This extension contributes the following settings:
- `elmLS.elmPath`: The path to your elm executable.
- `elmLS.elmFormatPath`: The path to your elm-format executable.
- `elmLS.elmTestPath`: The path to your elm-test executable.
- `elmLS.elmAnalyseTrigger`: When do you want the extension to run elm-analyse? Might need a restart to take effect.
## FAQ
- What's the relation to the language server?
- This [vscode extension](https://marketplace.visualstudio.com/items?itemName=Elmtooling.elm-ls-vscode) is including the [elm-language-server](https://github.com/elm-tooling/elm-language-server) which enables most of the used features.
- Why do I need to install `elm`, `elm-test` and `elm-format`?
- You will need to install `elm` and `elm-test` to get all diagnostics and `elm-format` for formatting. If your setup fails to find the global installations of those, you can use the settings panel in VSCode to set the paths to the executable manually. Alternatively you can also just install these to your local npm `package.json`.
- Can I use an `elm-analyse` config?
- Yes, you can, please check [here](https://github.com/elm-tooling/elm-language-server#elm-analyse-configuration) for more details.
## Contributing / Debugging
```shell
git clone --recursive git@github.com:elm-tooling/elm-language-client-vscode.git
cd elm-language-client-vscode
npm install
```
Open VSCode with this project (`code .`) and press `F5` to start debugging the plugin.

View File

@@ -1,71 +0,0 @@
jobs:
- job: Windows
pool:
name: Hosted VS2017
demands: npm
steps:
- task: NodeTool@0
displayName: 'Use Node 8.x'
inputs:
versionSpec: 8.x
- task: Npm@1
displayName: 'Install dependencies'
inputs:
verbose: false
- task: Npm@1
displayName: 'Compile sources'
inputs:
command: custom
verbose: false
customCommand: 'run compile'
- script: 'node node_modules/vscode/bin/test'
displayName: 'Run tests'
- job: macOS
pool:
name: Hosted macOS
demands: npm
steps:
- task: NodeTool@0
displayName: 'Use Node 8.x'
inputs:
versionSpec: 8.x
- task: Npm@1
displayName: 'Install dependencies'
inputs:
verbose: false
- task: Npm@1
displayName: 'Compile sources'
inputs:
command: custom
verbose: false
customCommand: 'run compile'
- script: 'node node_modules/vscode/bin/test'
displayName: 'Run tests'
- job: Linux
pool:
name: Hosted Ubuntu 1604
demands: npm
steps:
- task: NodeTool@0
displayName: 'Use Node 8.x'
inputs:
versionSpec: 8.x
- task: Npm@1
displayName: 'Install dependencies'
inputs:
verbose: false
- task: Npm@1
displayName: 'Compile sources'
inputs:
command: custom
verbose: false
customCommand: 'run compile'
- script: |
set -e
/usr/bin/Xvfb :10 -ac >> /tmp/Xvfb.out 2>&1 &
disown -ar
displayName: 'Start xvfb'
- script: 'node node_modules/vscode/bin/test'
displayName: 'Run tests'
env:
DISPLAY: :10

1
client/.prettierrc.yaml Normal file
View File

@@ -0,0 +1 @@
trailingComma: "all"

590
client/package-lock.json generated
View File

@@ -4,75 +4,63 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/caseless": {
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
"integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==",
"dev": true
},
"@types/node": {
"version": "12.7.8",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz",
"integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==",
"dev": true
},
"@types/request": {
"version": "2.48.3",
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.3.tgz",
"integrity": "sha512-3Wo2jNYwqgXcIz/rrq18AdOZUQB8cQ34CXZo+LUwPJNpvRAL86+Kc2wwI8mqpz9Cr1V+enIox5v+WZhy/p3h8w==",
"dev": true,
"requires": {
"@types/caseless": "*",
"@types/node": "*",
"@types/tough-cookie": "*",
"form-data": "^2.5.0"
}
},
"@types/tough-cookie": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz",
"integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==",
"dev": true
},
"@types/vscode": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.40.0.tgz",
"integrity": "sha512-5kEIxL3qVRkwhlMerxO7XuMffa+0LBl+iG2TcRa0NsdoeSFLkt/9hJ02jsi/Kvc6y8OVF2N2P2IHP5S4lWf/5w==",
"dev": true
},
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
"dev": true,
"requires": {
"es6-promisify": "^5.0.0"
}
},
"ajv": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"dev": true,
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
"tweetnacl": "^0.14.3"
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -83,60 +71,21 @@
"concat-map": "0.0.1"
}
},
"browser-stdout": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
"integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
"dev": true
},
"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
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
"integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
"dev": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"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
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -152,26 +101,10 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
"integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
"dev": true
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"es6-promise": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
"integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
"dev": true
},
"es6-promisify": {
@@ -183,46 +116,10 @@
"es6-promise": "^4.0.3"
}
},
"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
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
"dev": true
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
@@ -236,19 +133,10 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -259,40 +147,6 @@
"path-is-absolute": "^1.0.0"
}
},
"growl": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
"integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
"dev": true
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"dev": true,
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"has-flag": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
"dev": true
},
"he": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
"dev": true
},
"http-proxy-agent": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
@@ -303,24 +157,13 @@
"debug": "3.1.0"
}
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
"dev": true,
"requires": {
"agent-base": "^4.1.0",
"agent-base": "^4.3.0",
"debug": "^3.1.0"
}
},
@@ -335,59 +178,11 @@
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"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
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"mime-db": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
@@ -412,67 +207,12 @@
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"mocha": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz",
"integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==",
"dev": true,
"requires": {
"browser-stdout": "1.3.0",
"commander": "2.11.0",
"debug": "3.1.0",
"diff": "3.3.1",
"escape-string-regexp": "1.0.5",
"glob": "7.1.2",
"growl": "1.10.3",
"he": "1.1.1",
"mkdirp": "0.5.1",
"supports-color": "4.4.0"
},
"dependencies": {
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"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"
}
}
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -488,213 +228,26 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
"psl": {
"version": "1.1.31",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
"integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
"dev": true
},
"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
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"querystringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
"integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
"dev": true
},
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
"glob": "^7.1.3"
}
},
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"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
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"typescript": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz",
"integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==",
"dev": true
},
"source-map-support": {
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"supports-color": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
"dev": true,
"requires": {
"has-flag": "^2.0.0"
}
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
}
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
},
"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==",
"dev": true,
"requires": {
"punycode": "^2.1.0"
}
},
"url-parse": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
"integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
"dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"dev": true
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"vscode": {
"version": "1.1.34",
"resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.34.tgz",
"integrity": "sha512-GuT3tCT2N5Qp26VG4C+iGmWMgg/MuqtY5G5TSOT3U/X6pgjM9LFulJEeqpyf6gdzpI4VyU3ZN/lWPo54UFPuQg==",
"dev": true,
"requires": {
"glob": "^7.1.2",
"mocha": "^4.0.1",
"request": "^2.88.0",
"semver": "^5.4.1",
"source-map-support": "^0.5.0",
"url-parse": "^1.4.4",
"vscode-test": "^0.4.1"
}
},
"vscode-jsonrpc": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz",
@@ -724,13 +277,14 @@
"integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A=="
},
"vscode-test": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.1.tgz",
"integrity": "sha512-uIi/07uG/gmCbD9Y9bFpNzmk4el82xiclijEdL426A3jOFfvwdqgfmtuWYfxEGo0w6JY9EqVDTGQCXwuInXVTQ==",
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.2.3.tgz",
"integrity": "sha512-mKRTNso33NaUULiPBFg6zRjyntjcCpIgkrogyPQuKlvoQREQR8jLKN5UD4L5rkTSD+oBhcKtaLR2/g34FexURw==",
"dev": true,
"requires": {
"http-proxy-agent": "^2.1.0",
"https-proxy-agent": "^2.2.1"
"https-proxy-agent": "^2.2.4",
"rimraf": "^2.6.3"
}
},
"wrappy": {

View File

@@ -1,6 +1,6 @@
{
"name": "elm-language-client-vscode",
"description": "VSCode client for the elm language server",
"description": "VSCode client for Elm",
"author": "Kolja Lampe",
"publisher": "elmTooling",
"license": "MIT",
@@ -10,16 +10,18 @@
"url": "https://github.com/elmtooling/elm-language-client-vscode"
},
"engines": {
"vscode": "^1.30.0"
"vscode": "^1.37.0"
},
"scripts": {
"update-vscode": "vscode-install",
"postinstall": "vscode-install"
"compile": "tsc -p ./"
},
"dependencies": {
"vscode-languageclient": "^5.2.1"
},
"devDependencies": {
"vscode": "^1.1.34"
"@types/request": "^2.48.3",
"@types/vscode": "^1.40.0",
"vscode-test": "^1.2.3",
"typescript": "3.7.2"
}
}

152
client/src/elmPackage.ts Normal file
View File

@@ -0,0 +1,152 @@
import * as vscode from "vscode";
import * as utils from "./utils";
import request = require("request");
let packageTerminal: vscode.Terminal;
interface IElmPackageQuickPickItem extends vscode.QuickPickItem {
info: any;
}
function transformToPackageQuickPickItems(
packages: any[],
): IElmPackageQuickPickItem[] {
return Object.keys(packages).map((item: any) => {
return { label: item, description: item, info: packages[item] };
});
}
function transformToPackageVersionQuickPickItems(
selectedPackage: IElmPackageQuickPickItem,
): vscode.QuickPickItem[] {
return selectedPackage.info.map((version: any) => {
return { label: version, description: null };
});
}
function transformToQuickPickItems(packages: any[]): vscode.QuickPickItem[] {
return Object.keys(packages).map((item: any) => {
return { label: item, description: "", info: packages[item] };
});
}
function getJSON(): Thenable<any[]> {
return new Promise((resolve, reject) => {
request(
"https://package.elm-lang.org/all-packages",
(err: any, _: any, body: any) => {
if (err) {
reject(err);
} else {
let json;
try {
json = JSON.parse(body);
} catch (e) {
reject(e);
}
resolve(json);
}
},
);
});
}
function getInstallPackageCommand(packageToInstall: string): string {
const config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration(
"elmLS",
);
let t: string = config.get("elmPath") as string;
t = t || "elm";
return t + " install " + packageToInstall;
}
function installPackageInTerminal(packageToInstall: string) {
try {
const installPackageCommand = getInstallPackageCommand(packageToInstall);
if (packageTerminal !== undefined) {
packageTerminal.dispose();
}
packageTerminal = vscode.window.createTerminal("Elm Package Install");
const [
installPackageLaunchCommand,
clearCommand,
] = utils.getTerminalLaunchCommands(installPackageCommand);
packageTerminal.sendText(clearCommand, true);
packageTerminal.sendText(installPackageLaunchCommand, true);
packageTerminal.show(false);
} catch (error) {
vscode.window.showErrorMessage(
"Cannot start Elm Package install. " + error,
);
}
}
function browsePackage(): Thenable<void> {
const quickPickPackageOptions: vscode.QuickPickOptions = {
matchOnDescription: true,
placeHolder: "Choose a package",
};
const quickPickVersionOptions: vscode.QuickPickOptions = {
matchOnDescription: false,
placeHolder: "Choose a version, or press <esc> to browse the latest",
};
return getJSON()
.then(transformToPackageQuickPickItems)
.then(packages =>
vscode.window.showQuickPick(packages, quickPickPackageOptions),
)
.then(selectedPackage => {
if (selectedPackage === undefined) {
return; // no package
}
return vscode.window
.showQuickPick(
transformToPackageVersionQuickPickItems(selectedPackage),
quickPickVersionOptions,
)
.then(selectedVersion => {
const uri = selectedVersion
? vscode.Uri.parse(
"https://package.elm-lang.org/packages/" +
selectedPackage.label +
"/" +
selectedVersion.label,
)
: vscode.Uri.parse(
"https://package.elm-lang.org/packages/" +
selectedPackage.label +
"/latest",
);
vscode.commands.executeCommand("vscode.open", uri);
})
.then(() => undefined);
});
}
function runInstall(): Thenable<void> {
const quickPickOptions: vscode.QuickPickOptions = {
matchOnDescription: true,
placeHolder: "Choose a package, or press <esc> to cancel",
};
return getJSON()
.then(transformToQuickPickItems)
.then(items => vscode.window.showQuickPick(items, quickPickOptions))
.then(value => {
if (value === undefined) {
return; // no package
}
const packageName = value ? value.label : "";
return installPackageInTerminal(packageName);
});
}
export function activatePackage(): vscode.Disposable[] {
return [
vscode.commands.registerCommand("elm.install", runInstall),
vscode.commands.registerCommand("elm.browsePackage", browsePackage),
];
}

View File

@@ -1,145 +1,205 @@
"use strict";
import * as path from "path";
import {
CancellationToken,
CodeLens,
commands,
ExtensionContext,
Location,
OutputChannel,
RelativePattern,
Position,
ProviderResult,
Range,
TextDocument,
Uri,
window as Window,
workspace,
workspace as Workspace,
WorkspaceFolder,
} from "vscode";
import {
LanguageClient,
LanguageClientOptions,
ServerOptions,
Middleware,
ResolveCodeLensSignature,
RevealOutputChannelOn,
TransportKind,
} from "vscode-languageclient";
let languageClient: LanguageClient;
const elmJsonGlob = "**/elm.json";
import * as Package from "./elmPackage";
export async function activate(context: ExtensionContext) {
// We get activated if there is one or more elm.json file in the workspace
// Start one server for each workspace with at least one elm.json
// and watch Elm files in those directories.
export type ElmAnalyseTrigger = "change" | "save" | "never";
const elmJsons = await workspace.findFiles(elmJsonGlob, "**/node_modules/**");
// Todo do this smarter
if (elmJsons) {
const workspaceFolder = workspace.getWorkspaceFolder(elmJsons[0]);
const elmJsonFolder = getElmJsonFolder(elmJsons[0]);
if (workspaceFolder) {
startClient(context, elmJsonFolder);
}
}
const watcher = workspace.createFileSystemWatcher(
elmJsonGlob,
false,
true,
false,
);
watcher.onDidCreate(uri => {
const workspaceFolder = workspace.getWorkspaceFolder(uri);
const elmJsonFolder = getElmJsonFolder(uri);
if (workspaceFolder) {
startClient(context, elmJsonFolder);
}
});
watcher.onDidDelete(uri => {
const workspaceFolder = workspace.getWorkspaceFolder(uri);
const elmJsonFolder = getElmJsonFolder(uri);
if (workspaceFolder) {
stopClient(elmJsonFolder);
}
});
}
function getElmJsonFolder(uri: Uri): Uri {
return Uri.parse(uri.toString().replace("elm.json", ""));
}
async function stopClient(workspaceUri: Uri) {
const client = clients.get(workspaceUri.fsPath);
if (client) {
const pattern = new RelativePattern(workspaceUri.fsPath, elmJsonGlob);
const files = await workspace.findFiles(pattern, "**/node_modules/**");
if (files.length === 0) {
languageClient.info("Found the client shutting it down.");
client.stop();
clients.delete(workspaceUri.fsPath);
} else {
languageClient.info(
"There are still elm.json files in this workspace, not stopping the client.",
);
}
} else {
languageClient.info("Could not find the client that we want to shutdown.");
}
export interface IClientSettings {
elmFormatPath: string;
elmPath: string;
elmTestPath: string;
trace: { server: string };
elmAnalyseTrigger: ElmAnalyseTrigger;
}
const clients: Map<string, LanguageClient> = new Map();
function startClient(context: ExtensionContext, elmWorkspace: Uri) {
if (clients.has(elmWorkspace.fsPath)) {
// Client was already started for this directory
return;
let elmCommandsRegistered: boolean = false;
let sortedWorkspaceFolders: string[] | undefined;
function getSortedWorkspaceFolders(): string[] {
if (sortedWorkspaceFolders === void 0) {
sortedWorkspaceFolders = Workspace.workspaceFolders
? Workspace.workspaceFolders
.map(folder => {
let result = folder.uri.toString();
if (result.charAt(result.length - 1) !== "/") {
result = result + "/";
}
return result;
})
.sort((a, b) => {
return a.length - b.length;
})
: [];
}
return sortedWorkspaceFolders;
}
Workspace.onDidChangeWorkspaceFolders(
() => (sortedWorkspaceFolders = undefined),
);
const serverModule = context.asAbsolutePath(
path.join("server", "out", "index.js"),
);
// The debug options for the server
// --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging
const debugOptions = {
execArgv: ["--nolazy", `--inspect=${6010 + clients.size}`],
};
function getOuterMostWorkspaceFolder(folder: WorkspaceFolder): WorkspaceFolder {
const sorted = getSortedWorkspaceFolders();
for (const element of sorted) {
let uri = folder.uri.toString();
if (uri.charAt(uri.length - 1) !== "/") {
uri = uri + "/";
}
if (uri.startsWith(element)) {
return Workspace.getWorkspaceFolder(Uri.parse(element))!;
}
}
return folder;
}
// If the extension is launched in debug mode then the debug server options are used
// Otherwise the run options are used
const serverOptions: ServerOptions = {
debug: {
module: serverModule,
options: debugOptions,
transport: TransportKind.ipc,
export async function activate(context: ExtensionContext) {
const module = context.asAbsolutePath(path.join("server", "out", "index.js"));
function didOpenTextDocument(document: TextDocument) {
// We are only interested in everything elm, no handling for untitled files for now
if (document.languageId !== "elm") {
return;
}
const config = Workspace.getConfiguration().get<IClientSettings>("elmLS");
const uri = document.uri;
let folder = Workspace.getWorkspaceFolder(uri);
// Files outside a folder can't be handled. This might depend on the language.
// Single file languages like JSON might handle files outside the workspace folders.
if (!folder) {
return;
}
// If we have nested workspace folders we only start a server on the outer most workspace folder.
folder = getOuterMostWorkspaceFolder(folder);
if (!clients.has(folder.uri.toString())) {
const relativeWorkspace = folder.name;
const outputChannel: OutputChannel = Window.createOutputChannel(
relativeWorkspace.length > 1 ? `Elm (${relativeWorkspace})` : "Elm",
);
const debugOptions = {
execArgv: ["--nolazy", `--inspect=${6010 + clients.size}`],
};
const serverOptions = {
debug: {
module,
options: debugOptions,
transport: TransportKind.ipc,
},
run: { module, transport: TransportKind.ipc },
};
const clientOptions: LanguageClientOptions = {
diagnosticCollectionName: "Elm",
documentSelector: [
{
language: "elm",
pattern: `${folder.uri.fsPath}/**/*`,
scheme: "file",
},
],
initializationOptions: config
? {
elmAnalyseTrigger: config.elmAnalyseTrigger,
elmFormatPath: config.elmFormatPath,
elmPath: config.elmPath,
elmTestPath: config.elmTestPath,
trace: {
server: config.trace.server,
},
}
: {},
middleware: new CodeLensResolver(),
outputChannel,
revealOutputChannelOn: RevealOutputChannelOn.Never,
workspaceFolder: folder,
};
const client = new LanguageClient(
"elmLS",
"Elm",
serverOptions,
clientOptions,
);
client.start();
clients.set(folder.uri.toString(), client);
}
if (elmCommandsRegistered) {
registerElmCommand("elmLS.runTests", context);
registerElmCommand("elmLS.runTestsCurrentFile", context);
elmCommandsRegistered = true;
}
}
Workspace.onDidOpenTextDocument(didOpenTextDocument);
Workspace.textDocuments.forEach(didOpenTextDocument);
Workspace.onDidChangeWorkspaceFolders(event => {
for (const folder of event.removed) {
const client = clients.get(folder.uri.toString());
if (client) {
clients.delete(folder.uri.toString());
client.stop();
}
}
});
const packageDisposables = Package.activatePackage();
packageDisposables.forEach(d => context.subscriptions.push(d));
}
async function registerElmCommand(command: string, context: ExtensionContext) {
const editorCmd = commands.registerTextEditorCommand(
command,
(editor, edit) => {
const cmd = {
arguments: [
{
file: editor.document.uri.toString(),
pos: editor.selections[0].active,
},
],
command,
};
// Get the current file and workspace folder.
const uri = editor.document.uri;
const folder = Workspace.getWorkspaceFolder(uri);
// If there is a client registered for this workspace, use that client.
if (folder !== undefined && clients.has(folder.uri.toString())) {
const client = clients.get(folder.uri.toString());
if (client !== undefined) {
client.sendRequest("workspace/executeCommand", cmd).then(_ => {
return true;
});
}
}
},
run: { module: serverModule, transport: TransportKind.ipc },
};
const outputChannel: OutputChannel = Window.createOutputChannel("elmLS");
// Options to control the language client
const clientOptions: LanguageClientOptions = {
diagnosticCollectionName: "elmLS",
// Register the server for Elm documents in the directory
documentSelector: [
{
pattern: "**/*.elm",
scheme: "file",
},
],
initializationOptions: { elmWorkspace: elmWorkspace.toString() },
outputChannel,
// Notify the server about file changes to 'elm.json'
synchronize: {
fileEvents: workspace.createFileSystemWatcher(
path.join(elmWorkspace.fsPath, elmJsonGlob),
),
},
};
// Create the language client and start the client.
languageClient = new LanguageClient(
"elmLS",
"Elm Language Server",
serverOptions,
clientOptions,
);
// Start the client. This will also launch the server
languageClient.start();
languageClient.info(`Starting language server for ${elmWorkspace.fsPath}`);
clients.set(elmWorkspace.fsPath, languageClient);
context.subscriptions.push(editorCmd);
}
export function deactivate(): Thenable<void> | undefined {
@@ -149,3 +209,66 @@ export function deactivate(): Thenable<void> | undefined {
}
return Promise.all(promises).then(() => undefined);
}
export class CodeLensResolver implements Middleware {
public resolveCodeLens(
codeLens: CodeLens,
token: CancellationToken,
next: ResolveCodeLensSignature,
): ProviderResult<CodeLens> {
const resolvedCodeLens = next(codeLens, token);
const resolveFunc = (codeLensToFix: CodeLens): CodeLens => {
if (
codeLensToFix &&
codeLensToFix.command &&
codeLensToFix.command.command === "editor.action.showReferences" &&
codeLensToFix.command.arguments
) {
const oldArgs = codeLensToFix.command.arguments;
// Our JSON objects don't get handled correctly by
// VS Code's built in editor.action.showReferences
// command so we need to convert them into the
// appropriate types to send them as command
// arguments.
codeLensToFix.command.arguments = [
Uri.parse(oldArgs[0].uri),
new Position(
oldArgs[0].range.start.line,
oldArgs[0].range.start.character,
),
oldArgs[0].references.map(
(position: {
uri: string;
range: {
start: { line: number; character: number };
end: { line: number; character: number };
};
}) => {
return new Location(
Uri.parse(position.uri),
new Range(
position.range.start.line,
position.range.start.character,
position.range.end.line,
position.range.end.character,
),
);
},
),
];
}
return codeLensToFix;
};
if ((resolvedCodeLens as Thenable<CodeLens>).then) {
return (resolvedCodeLens as Thenable<CodeLens>).then(resolveFunc);
} else if (resolvedCodeLens as CodeLens) {
return resolveFunc(resolvedCodeLens as CodeLens);
}
return resolvedCodeLens;
}
}

View File

@@ -1,15 +0,0 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
"use strict";
import * as testRunner from "vscode/lib/testrunner";
testRunner.configure({
timeout: 100000,
ui: "bdd",
useColors: true,
});
module.exports = testRunner;

19
client/src/utils.ts Normal file
View File

@@ -0,0 +1,19 @@
import * as vscode from "vscode";
export const isWindows = process.platform === "win32";
function isPowershell() {
return vscode.env.shell.search(/(powershell|pwsh)/i) !== -1;
}
export function getTerminalLaunchCommands(command: string): [string, string] {
if (isWindows) {
if (isPowershell()) {
return [`cmd /c ${command}`, "clear"];
} else {
return [`${command}`, "cls"];
}
} else {
return [command, "clear"];
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

530
package-lock.json generated
View File

@@ -1,22 +1,22 @@
{
"name": "elm-ls-vscode",
"version": "0.2.2",
"version": "0.7.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"version": "7.5.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
"integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
"dev": true,
"requires": {
"@babel/highlight": "^7.0.0"
}
},
"@babel/highlight": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
"integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
@@ -24,16 +24,87 @@
"js-tokens": "^4.0.0"
}
},
"@types/mocha": {
"version": "5.2.7",
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==",
"@jest/types": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
"integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^1.1.1",
"@types/yargs": "^13.0.0"
}
},
"@types/istanbul-lib-coverage": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
"integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
"dev": true
},
"@types/istanbul-lib-report": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
"integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "*"
}
},
"@types/istanbul-reports": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
"integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "*",
"@types/istanbul-lib-report": "*"
}
},
"@types/jest": {
"version": "24.0.23",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.23.tgz",
"integrity": "sha512-L7MBvwfNpe7yVPTXLn32df/EK+AMBFAFvZrRuArGs7npEWnlziUXK+5GMIUTI4NIuwok3XibsjXCs5HxviYXjg==",
"dev": true,
"requires": {
"jest-diff": "^24.3.0"
}
},
"@types/node": {
"version": "12.0.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz",
"integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==",
"version": "12.12.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.12.tgz",
"integrity": "sha512-MGuvYJrPU0HUwqF7LqvIj50RZUX23Z+m583KBygKYUZLlZ88n6w28XRNJRJgsHukLEnLz6w6SvxZoLgbr5wLqQ==",
"dev": true
},
"@types/yargs": {
"version": "13.0.3",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
"integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
"dev": true,
"requires": {
"@types/yargs-parser": "*"
}
},
"@types/yargs-parser": {
"version": "13.1.0",
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
"integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
"dev": true
},
"ajv": {
"version": "6.10.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
"integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"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
},
"ansi-styles": {
@@ -54,12 +125,48 @@
"sprintf-js": "~1.0.2"
}
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "^0.14.3"
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -76,6 +183,11 @@
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -102,10 +214,18 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"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
},
"concat-map": {
@@ -114,12 +234,45 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"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="
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
"dev": true
},
"diff-sequences": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz",
"integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==",
"dev": true
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -143,27 +296,70 @@
"dev": true
},
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"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
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"version": "7.1.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
"integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -174,12 +370,36 @@
"path-is-absolute": "^1.0.0"
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"immutable": {
"version": "3.8.2",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
@@ -197,17 +417,45 @@
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"jest-diff": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz",
"integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
"diff-sequences": "^24.9.0",
"jest-get-type": "^24.9.0",
"pretty-format": "^24.9.0"
}
},
"jest-docblock": {
"version": "21.2.0",
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz",
"integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==",
"dev": true
},
"jest-get-type": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
"integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
"dev": true
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -224,12 +472,56 @@
"esprima": "^4.0.0"
}
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"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=="
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"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
},
"mime-db": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
},
"mime-types": {
"version": "2.1.24",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
"requires": {
"mime-db": "1.40.0"
}
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -254,6 +546,11 @@
"minimist": "0.0.8"
}
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -275,25 +572,100 @@
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"prettier": {
"version": "1.18.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
"integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"dev": true
},
"pretty-format": {
"version": "24.9.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
"integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
"dev": true,
"requires": {
"@jest/types": "^24.9.0",
"ansi-regex": "^4.0.0",
"ansi-styles": "^3.2.0",
"react-is": "^16.8.4"
}
},
"psl": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
"integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag=="
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"react-is": {
"version": "16.12.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz",
"integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==",
"dev": true
},
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"resolve": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
"integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
"integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
}
},
"safe-buffer": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"semver": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
"sprintf-js": {
@@ -302,6 +674,22 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -311,6 +699,22 @@
"has-flag": "^3.0.0"
}
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
}
},
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
@@ -318,16 +722,16 @@
"dev": true
},
"tslint": {
"version": "5.17.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.17.0.tgz",
"integrity": "sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w==",
"version": "5.20.1",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz",
"integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"builtin-modules": "^1.1.1",
"chalk": "^2.3.0",
"commander": "^2.12.1",
"diff": "^3.2.0",
"diff": "^4.0.1",
"glob": "^7.1.1",
"js-yaml": "^3.13.1",
"minimatch": "^3.0.4",
@@ -373,12 +777,48 @@
"tslib": "^1.8.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"typescript": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.1.tgz",
"integrity": "sha512-64HkdiRv1yYZsSe4xC1WVgamNigVYjlssIoaH2HcZF0+ijsk5YK2g0G34w9wJkze8+5ow4STd22AynfO6ZYYLw==",
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz",
"integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==",
"dev": true
},
"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==",
"requires": {
"punycode": "^2.1.0"
}
},
"uuid": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
"integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",

View File

@@ -1,12 +1,12 @@
{
"name": "elm-ls-vscode",
"displayName": "ElmLS",
"description": "VSCode plugin using the elm-language-server",
"displayName": "Elm",
"description": "Improving your Elm experience since 2019",
"publisher": "elmTooling",
"icon": "images/elm.png",
"author": "Kolja Lampe",
"license": "MIT",
"version": "0.2.2",
"version": "0.7.3",
"repository": {
"type": "git",
"url": "https://github.com/elm-tooling/elm-language-client-vscode"
@@ -23,6 +23,7 @@
"vscode": "^1.30.0"
},
"activationEvents": [
"onLanguage:elm",
"workspaceContains:**/elm.json"
],
"main": "./client/out/extension",
@@ -67,9 +68,31 @@
"path": "./syntaxes/elm.json"
}
],
"commands": [
{
"command": "elm.install",
"title": "Install Package",
"category": "Elm"
},
{
"command": "elm.browsePackage",
"title": "Browse Package",
"category": "Elm"
},
{
"command": "elmLS.runTestsCurrentFile",
"title": "Run tests for this file",
"category": "Elm"
},
{
"command": "elmLS.runTests",
"title": "Run all tests",
"category": "Elm"
}
],
"configuration": {
"type": "object",
"title": "ElmLS",
"title": "Elm",
"properties": {
"elmLS.trace.server": {
"scope": "window",
@@ -85,41 +108,56 @@
"elmLS.elmPath": {
"scope": "window",
"type": "string",
"default": "elm",
"description": "The path to your elm executeable."
"default": "",
"description": "The path to your elm executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder."
},
"elmLS.elmFormatPath": {
"scope": "window",
"type": "string",
"default": "elm-format",
"description": "The path to your elm-format executeable."
"default": "",
"description": "The path to your elm-format executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder."
},
"elmLS.elmTestPath": {
"scope": "window",
"type": "string",
"default": "elm-test",
"description": "The path to your elm-test executeable."
"default": "",
"description": "The path to your elm-test executable. Should be empty by default, in that case it will assume the name and try to first get it from a local npm installation or a global one. If you set it manually it will not try to load from the npm folder."
},
"elmLS.elmAnalyseTrigger": {
"scope": "window",
"type": "string",
"enum": [
"change",
"save",
"never"
],
"default": "change",
"description": "When do you want the extension to run elm-analyse? Might need a restart to take effect."
}
}
}
},
"scripts": {
"vscode:prepublish": "cd client && npm run update-vscode && cd .. && npm run compile",
"compile": "tsc -b",
"watch": "tsc -b -w",
"vscode:prepublish": "npm run compile",
"compile": "cd client && npm run compile && cd ../server && npm run compile && cd .. && tsc -b",
"watch": "npm run copy-wasm && tsc -b -w",
"copy-wasm": "cd server && npm run copy-wasm",
"postinstall": "cd client && npm install && cd ../server && npm install && cd ..",
"test": "sh ./scripts/e2e.sh",
"lint": "tslint -p tsconfig.json",
"tslint-check": "tslint-config-prettier-check ./tslint.json"
},
"dependencies": {
"request": "2.88.0"
},
"devDependencies": {
"@types/mocha": "^5.2.7",
"@types/node": "^12.0.7",
"prettier": "^1.18.2",
"tslint": "^5.17.0",
"@types/jest": "^24.0.23",
"@types/node": "^12.12.12",
"prettier": "^1.19.1",
"tslint": "^5.20.1",
"tslint-config-prettier": "^1.18.0",
"tslint-plugin-prettier": "^2.0.1",
"tslint-sonarts": "^1.9.0",
"typescript": "3.5.1"
"typescript": "3.7.2"
}
}

View File

@@ -5,24 +5,42 @@
"exactDependency": {
"description": "Dependencies are specified by [author name]/[package name]: [exact version].",
"type": "object",
"additionalProperties": {
"type": "string"
"patternProperties": {
"^.+/.+$": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
}
},
"additionalProperties": false,
"propertyNames": {
"pattern": "^.+/.+$"
}
},
"rangeDependency": {
"description": "Dependencies are specified by [author name]/[package name]: [exact version or range]. Range versions look like: [1.0.0 <= v < 2.0.0].",
"type": "object",
"additionalProperties": {
"type": "string"
"patternProperties": {
"^.+/.+$": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$|^\\d+\\.\\d+\\.\\d+\\s*(<=|=|<)\\s*v\\s*(<=|=|<)\\s*\\d+\\.\\d+\\.\\d+$"
}
},
"additionalProperties": false,
"propertyNames": {
"pattern": "^.+/.+$"
}
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"packageSpecificProperties": {
"type": "object",
"properties": {
"name": {
"description": "The name of your package.",
"description": "The name of a GitHub repo like 'elm-lang/core' or 'rtfeldman/elm-css'.",
"type": "string",
"minLength": 1
"minLength": 3
},
"license": {
"description": "An OSI approved license for your package.",
@@ -130,33 +148,33 @@
]
},
"summary": {
"description": "A helpful summary of your package, less than 80 characters",
"description": "A short summary that will appear on package.elm-lang.org that describes what the package is for. Must be under 80 characters.",
"type": "string",
"minLength": 1,
"maxLength": 79
},
"version": {
"description": "Your package's version in semantic versioning format.",
"type": "string",
"pattern": "\\d+\\.\\d+\\.\\d+"
"description": "All packages start at '1.0.0' and from there, Elm automatically enforces semantic versioning by comparing API changes.",
"$ref": "#/definitions/version"
},
"elm-version": {
"description": "The version of elm your package is targeting",
"description": "The range of Elm compilers that work with your package. Right now '0.19.0 <= v < 0.20.0' is always what you want for this.",
"type": "string"
},
"exposed-modules": {
"description": "All modules that your project will make available to end users.",
"type": "array",
"items": {
"type": "string"
"description": "A list of modules that will be exposed to people using your package. The order you list them will be the order they appear on package.elm-lang.org.",
"type": ["array", "string", "object"],
"additionalProperties": { "type": "array" },
"propertyNames": {
"pattern": "^[A-Z].*$"
}
},
"dependencies": {
"description": "A list of elm dependencies that your package needs for in production.",
"description": "A list of packages that you depend upon. In each application, there can only be one version of each package, so wide ranges are great. Fewer dependencies is even better though!",
"$ref": "#/definitions/rangeDependency"
},
"test-dependencies": {
"description": "A list of elm dependencies that your package uses only for testing.",
"description": "Dependencies that are only used in the 'tests/' directory by 'elm-test'. Values from these packages will not appear in any final build artifacts.",
"$ref": "#/definitions/rangeDependency"
}
},
@@ -175,20 +193,20 @@
"type": "object",
"properties": {
"source-directories": {
"description": "A list of directories that will be used to build your project.",
"description": "A list of directories where Elm code lives. Most projects just use 'src' for everything.",
"type": "array",
"items": {
"type": "string"
}
},
"elm-version": {
"description": "The version of elm your project is targeting",
"description": "The exact version of Elm this builds with. Should be '0.19.1' for most people!",
"type": "string",
"pattern": "\\d+\\.\\d+\\.\\d+",
"enum": ["0.19.0"]
"$ref": "#/definitions/version",
"enum": ["0.19.0", "0.19.1"]
},
"dependencies": {
"description": "A list of elm dependencies that your project needs for in production.",
"description": "All the packages you depend upon. We use exact versions, so your elm.json file doubles as a 'lock file' that ensures reliable builds. \n \n You can use modules from any 'direct' dependency in your code. Some 'direct' dependencies have their own dependencies that folks typically do not care about. These are the 'indirect' dependencies. They are listed explicitly so that (1) builds are reproducible and (2) you can easily review the quantity and quality of dependencies.",
"type": "object",
"properties": {
"direct": {
@@ -201,7 +219,7 @@
"required": ["direct", "indirect"]
},
"test-dependencies": {
"description": "A list of elm dependencies that your project uses only for testing.",
"description": "All the packages that you use in 'tests/' with 'elm-test' but not in the application you actually want to ship. This also uses exact versions to make tests more reliable.",
"type": "object",
"properties": {
"direct": {
@@ -224,7 +242,7 @@
},
"properties": {
"type": {
"description": "Specifies if your project will be a package or an application",
"description": "Either 'application' or 'package'. All the other fields are based on this choice.",
"type": "string",
"enum": ["application", "package"]
}

2
server

Submodule server updated: 346ea455a4...6ce009b897

File diff suppressed because it is too large Load Diff