36 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
19 changed files with 1290 additions and 1003 deletions

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

View File

@@ -5,6 +5,9 @@
"typescript.preferences.quoteStyle": "single",
"editor.tabSize": 2,
"cSpell.words": [
"execa"
"Jsons",
"execa",
"globby",
"promisify"
]
}

View File

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

View File

@@ -1,5 +1,71 @@
# Change Log
## 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

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,32 +1,30 @@
# ElmLS
![Showcase](images/elm-ls.gif)
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.
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`.
```shell
npm install -g elm elm-test elm-format
```
## Features
# Elm Plugin for Visual Studio Code (VSCode)
Supports elm 0.19
| Feature | Description |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Diagnostics | Provided via `elm make`, `elm-test` 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 |
## Install
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
## Highlighted Features
- 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
@@ -38,6 +36,20 @@ This extension contributes the following settings:
- `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

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

View File

@@ -11,15 +11,15 @@
"dev": true
},
"@types/node": {
"version": "12.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.1.tgz",
"integrity": "sha512-aK9jxMypeSrhiYofWWBf/T7O+KwaiAHzM4sveCdWPn71lzUSMimRnKzhXDKfKwV1kWoBo2P1aGgaIYGLf9/ljw==",
"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.2",
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.2.tgz",
"integrity": "sha512-gP+PSFXAXMrd5PcD7SqHeUjdGshAI8vKQ3+AvpQr3ht9iQea+59LOKvKITcQI+Lg+1EIkDP6AFSBUJPWG8GDyA==",
"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": "*",
@@ -35,9 +35,9 @@
"dev": true
},
"@types/vscode": {
"version": "1.37.0",
"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.37.0.tgz",
"integrity": "sha512-PRfeuqYuzk3vjf+puzxltIUWC+AhEGYpFX29/37w30DQSQnpf5AgMVf7GDBAdmTbWTBou+EMFz/Ne6XCM/KxzQ==",
"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": {
@@ -117,9 +117,9 @@
}
},
"form-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.0.tgz",
"integrity": "sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA==",
"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",
@@ -134,9 +134,9 @@
"dev": true
},
"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",
@@ -158,9 +158,9 @@
}
},
"https-proxy-agent": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz",
"integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==",
"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.3.0",
@@ -229,9 +229,9 @@
"dev": true
},
"rimraf": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
@@ -242,6 +242,12 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
},
"typescript": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz",
"integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==",
"dev": true
},
"vscode-jsonrpc": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz",
@@ -271,13 +277,13 @@
"integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A=="
},
"vscode-test": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.2.0.tgz",
"integrity": "sha512-aowqgc8gZe0eflzVUXsBjBrlsJ8eC35kfgfSEeHu9PKA1vQKm/3rVK43TlbxGue8hKtZBElNAJ5QuYklR/vLJA==",
"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"
}
},

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",
@@ -12,12 +12,16 @@
"engines": {
"vscode": "^1.37.0"
},
"scripts": {
"compile": "tsc -p ./"
},
"dependencies": {
"vscode-languageclient": "^5.2.1"
},
"devDependencies": {
"@types/request": "^2.48.2",
"@types/vscode": "^1.37.0",
"vscode-test": "^1.2.0"
"@types/request": "^2.48.3",
"@types/vscode": "^1.40.0",
"vscode-test": "^1.2.3",
"typescript": "3.7.2"
}
}

View File

@@ -54,9 +54,9 @@ function getJSON(): Thenable<any[]> {
function getInstallPackageCommand(packageToInstall: string): string {
const config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration(
"ElmLS",
"elmLS",
);
let t: string = config.get("elmLS.elmPath") as string;
let t: string = config.get("elmPath") as string;
t = t || "elm";
return t + " install " + packageToInstall;

View File

@@ -1,7 +1,14 @@
import * as path from "path";
import {
CancellationToken,
CodeLens,
commands,
ExtensionContext,
Location,
OutputChannel,
Position,
ProviderResult,
Range,
TextDocument,
Uri,
window as Window,
@@ -12,6 +19,8 @@ import {
import {
LanguageClient,
LanguageClientOptions,
Middleware,
ResolveCodeLensSignature,
RevealOutputChannelOn,
TransportKind,
} from "vscode-languageclient";
@@ -29,6 +38,7 @@ export interface IClientSettings {
}
const clients: Map<string, LanguageClient> = new Map();
let elmCommandsRegistered: boolean = false;
let sortedWorkspaceFolders: string[] | undefined;
@@ -92,7 +102,7 @@ export async function activate(context: ExtensionContext) {
if (!clients.has(folder.uri.toString())) {
const relativeWorkspace = folder.name;
const outputChannel: OutputChannel = Window.createOutputChannel(
relativeWorkspace.length > 1 ? `elmLS (${relativeWorkspace})` : "elmLS",
relativeWorkspace.length > 1 ? `Elm (${relativeWorkspace})` : "Elm",
);
const debugOptions = {
@@ -107,7 +117,7 @@ export async function activate(context: ExtensionContext) {
run: { module, transport: TransportKind.ipc },
};
const clientOptions: LanguageClientOptions = {
diagnosticCollectionName: "elmLS",
diagnosticCollectionName: "Elm",
documentSelector: [
{
language: "elm",
@@ -126,21 +136,26 @@ export async function activate(context: ExtensionContext) {
},
}
: {},
middleware: new CodeLensResolver(),
outputChannel,
revealOutputChannelOn: RevealOutputChannelOn.Never,
workspaceFolder: folder,
};
const client = new LanguageClient(
"elmLS",
"Elm Language Server",
"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 => {
@@ -157,6 +172,36 @@ export async function activate(context: ExtensionContext) {
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;
});
}
}
},
);
context.subscriptions.push(editorCmd);
}
export function deactivate(): Thenable<void> | undefined {
const promises: Array<Thenable<void>> = [];
for (const client of clients.values()) {
@@ -164,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;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 KiB

293
package-lock.json generated
View File

@@ -1,22 +1,22 @@
{
"name": "elm-ls-vscode",
"version": "0.5.0",
"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,32 +24,76 @@
"js-tokens": "^4.0.0"
}
},
"@types/jest": {
"version": "24.0.18",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz",
"integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==",
"@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/jest-diff": "*"
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^1.1.1",
"@types/yargs": "^13.0.0"
}
},
"@types/jest-diff": {
"version": "20.0.1",
"resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
"integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
"@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.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.1.tgz",
"integrity": "sha512-aK9jxMypeSrhiYofWWBf/T7O+KwaiAHzM4sveCdWPn71lzUSMimRnKzhXDKfKwV1kWoBo2P1aGgaIYGLf9/ljw==",
"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==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -57,6 +101,12 @@
"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": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -79,7 +129,6 @@
"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"
}
@@ -87,26 +136,22 @@
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
"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=",
"dev": true
"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==",
"dev": true
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"balanced-match": {
"version": "1.0.0",
@@ -118,7 +163,6 @@
"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"
}
@@ -142,8 +186,7 @@
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chalk": {
"version": "2.4.2",
@@ -175,15 +218,14 @@
"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.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": {
@@ -195,14 +237,12 @@
"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
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"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"
}
@@ -210,20 +250,24 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
"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=",
"dev": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
@@ -252,28 +296,25 @@
"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==",
"dev": true
"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=",
"dev": true
"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=",
"dev": true
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-diff": {
"version": "1.2.0",
@@ -284,20 +325,17 @@
"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
"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=",
"dev": true
"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==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
@@ -314,15 +352,14 @@
"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.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",
@@ -336,14 +373,12 @@
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
"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==",
"dev": true,
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
@@ -359,7 +394,6 @@
"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",
@@ -391,14 +425,24 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
"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=",
"dev": true
"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",
@@ -406,6 +450,12 @@
"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",
@@ -425,32 +475,27 @@
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
"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=",
"dev": true
"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==",
"dev": true
"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=",
"dev": true
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"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",
@@ -467,14 +512,12 @@
"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==",
"dev": true
"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==",
"dev": true,
"requires": {
"mime-db": "1.40.0"
}
@@ -506,8 +549,7 @@
"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
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"once": {
"version": "1.4.0",
@@ -533,38 +575,51 @@
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
"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==",
"dev": true
"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==",
"dev": true
"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==",
"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==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
@@ -589,9 +644,9 @@
}
},
"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"
@@ -600,19 +655,17 @@
"safe-buffer": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
"dev": true
"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==",
"dev": true
"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": {
@@ -625,7 +678,6 @@
"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",
@@ -651,7 +703,6 @@
"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"
@@ -660,8 +711,7 @@
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
}
},
@@ -672,16 +722,16 @@
"dev": true
},
"tslint": {
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
"integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
"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",
@@ -731,7 +781,6 @@
"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"
}
@@ -739,20 +788,18 @@
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"typescript": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
"integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
"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==",
"dev": true,
"requires": {
"punycode": "^2.1.0"
}
@@ -760,14 +807,12 @@
"uuid": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
"integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
"dev": true
"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=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",

View File

@@ -1,12 +1,12 @@
{
"name": "elm-ls-vscode",
"displayName": "ElmLS",
"displayName": "Elm",
"description": "Improving your Elm experience since 2019",
"publisher": "elmTooling",
"icon": "images/elm.png",
"author": "Kolja Lampe",
"license": "MIT",
"version": "0.5.0",
"version": "0.7.3",
"repository": {
"type": "git",
"url": "https://github.com/elm-tooling/elm-language-client-vscode"
@@ -78,11 +78,21 @@
"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",
@@ -128,23 +138,26 @@
}
},
"scripts": {
"vscode:prepublish": "cd client && 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/jest": "^24.0.17",
"@types/node": "^12.7.1",
"prettier": "^1.18.2",
"request": "^2.88.0",
"tslint": "^5.18.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.3"
"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": "object",
"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: cd9c7971c4...6ce009b897

File diff suppressed because it is too large Load Diff