├── .editorconfig ├── .github └── workflows │ ├── build.yml │ └── deploy.yml ├── .gitignore ├── BUILDING.md ├── LICENSE ├── README.md ├── grammars └── Kotlin.tmLanguage.json ├── lib ├── fsUtils.js ├── httpsUtils.js ├── languageServerDownloader.js └── main.js ├── package-lock.json ├── package.json ├── screenshot.png └── scripts └── downloadGrammar.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 4 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = false 12 | insert_final_newline = true 13 | 14 | [*.yml] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: [push] 3 | 4 | jobs: 5 | build: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v3 9 | - uses: actions/setup-node@v2 10 | with: 11 | node-version: '17' 12 | - name: Install dependencies and grammar 13 | run: npm install 14 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | on: 3 | push: 4 | tags: 5 | - 'v*' 6 | 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: actions/setup-node@v2 13 | with: 14 | node-version: '12' 15 | - name: Install Atom Package Manager 16 | run: npm install -g atom-package-manager@2.6.5 17 | - name: Install dependencies and grammar 18 | run: npm install 19 | - name: Get tag name 20 | id: get_version 21 | run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} 22 | - name: Create release 23 | uses: actions/create-release@v1 24 | env: 25 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 26 | with: 27 | tag_name: ${{ steps.get_version.outputs.VERSION }} 28 | release_name: ${{ steps.get_version.outputs.VERSION }} 29 | - name: Publish Atom package 30 | run: apm publish --tag ${{ steps.get_version.outputs.VERSION }} 31 | env: 32 | ATOM_ACCESS_TOKEN: ${{ secrets.ATOM_ACCESS_TOKEN }} 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Project files 2 | .settings 3 | .classpath 4 | .project 5 | .factorypath 6 | .gradle 7 | .vscode-test 8 | .idea 9 | *.iml 10 | .DS_Store 11 | 12 | # Build files 13 | node_modules 14 | bin 15 | build 16 | target 17 | out 18 | __pycache__ 19 | *.vsix 20 | 21 | # Downloaded by the extension 22 | downloads 23 | install 24 | serverDownload.zip 25 | -------------------------------------------------------------------------------- /BUILDING.md: -------------------------------------------------------------------------------- 1 | # Building 2 | Describes how to build and run the extension. 3 | 4 | ## Setup 5 | Run `npm install`. 6 | 7 | ## Development/Running 8 | To build and link the Atom plugin into your local packages folder, run `apm rebuild` and then `apm link`. 9 | 10 | That's it! To use the extension, just reload your Atom window. 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 fwcd 4 | 5 | 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: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | 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. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IDE-Kotlin package for Atom 2 | 3 | [![Version](https://img.shields.io/apm/v/ide-kotlin)](https://atom.io/packages/ide-kotlin) 4 | [![Build](https://img.shields.io/github/workflow/status/fwcd/atom-ide-kotlin/Build)](https://github.com/fwcd/atom-ide-kotlin/actions/workflows/build.yml) 5 | [![Downloads](https://img.shields.io/apm/dm/ide-kotlin)](https://atom.io/packages/ide-kotlin) 6 | 7 | This package provides smart code completion, linting and more for Kotlin in Atom using the language server. 8 | 9 | ![Screenshot](https://raw.githubusercontent.com/fwcd/atom-ide-kotlin/master/screenshot.png) 10 | 11 | Although some features (such as code completion) can be used in vanilla Atom, it is recommended to install [atom-ide-ui](https://atom.io/packages/atom-ide-ui). 12 | 13 | To use, open a Kotlin file inside a Gradle or Maven project. The language server will then automatically launch in the background. 14 | 15 | ## Features 16 | 17 | * Code completion 18 | * Linting 19 | * Go-to-definition 20 | * Signature help 21 | * Hover 22 | * Document symbols 23 | 24 | ## Development 25 | 26 | * To get started developing this package, run `npm install` and then `apm link` in this directory 27 | -------------------------------------------------------------------------------- /grammars/Kotlin.tmLanguage.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kotlin", 3 | "scopeName": "source.kotlin", 4 | "patterns": [ 5 | { 6 | "include": "#import" 7 | }, 8 | { 9 | "include": "#package" 10 | }, 11 | { 12 | "include": "#code" 13 | } 14 | ], 15 | "fileTypes": [ 16 | "kt", 17 | "kts" 18 | ], 19 | "repository": { 20 | "import": { 21 | "begin": "\\b(import)\\b\\s*", 22 | "beginCaptures": { 23 | "1": { 24 | "name": "storage.type.import.kotlin" 25 | } 26 | }, 27 | "end": ";|$", 28 | "name": "meta.import.kotlin", 29 | "contentName": "entity.name.package.kotlin", 30 | "patterns": [ 31 | { 32 | "include": "#comments" 33 | }, 34 | { 35 | "include": "#hard-keywords" 36 | }, 37 | { 38 | "match": "\\*", 39 | "name": "variable.language.wildcard.kotlin" 40 | } 41 | ] 42 | }, 43 | "package": { 44 | "begin": "\\b(package)\\b\\s*", 45 | "beginCaptures": { 46 | "1": { 47 | "name": "storage.type.package.kotlin" 48 | } 49 | }, 50 | "end": ";|$", 51 | "name": "meta.package.kotlin", 52 | "contentName": "entity.name.package.kotlin", 53 | "patterns": [ 54 | { 55 | "include": "#comments" 56 | } 57 | ] 58 | }, 59 | "code": { 60 | "patterns": [ 61 | { 62 | "include": "#comments" 63 | }, 64 | { 65 | "include": "#keywords" 66 | }, 67 | { 68 | "include": "#annotation-simple" 69 | }, 70 | { 71 | "include": "#annotation-site-list" 72 | }, 73 | { 74 | "include": "#annotation-site" 75 | }, 76 | { 77 | "include": "#class-declaration" 78 | }, 79 | { 80 | "include": "#object-declaration" 81 | }, 82 | { 83 | "include": "#type-alias" 84 | }, 85 | { 86 | "include": "#function-declaration" 87 | }, 88 | { 89 | "include": "#variable-declaration" 90 | }, 91 | { 92 | "include": "#type-constraint" 93 | }, 94 | { 95 | "include": "#type-annotation" 96 | }, 97 | { 98 | "include": "#function-call" 99 | }, 100 | { 101 | "include": "#method-reference" 102 | }, 103 | { 104 | "include": "#key" 105 | }, 106 | { 107 | "include": "#string" 108 | }, 109 | { 110 | "include": "#string-empty" 111 | }, 112 | { 113 | "include": "#string-multiline" 114 | }, 115 | { 116 | "include": "#character" 117 | }, 118 | { 119 | "include": "#operators" 120 | }, 121 | { 122 | "include": "#self-reference" 123 | }, 124 | { 125 | "include": "#decimal-literal" 126 | }, 127 | { 128 | "include": "#hex-literal" 129 | }, 130 | { 131 | "include": "#binary-literal" 132 | }, 133 | { 134 | "include": "#boolean-literal" 135 | }, 136 | { 137 | "include": "#null-literal" 138 | } 139 | ] 140 | }, 141 | "comments": { 142 | "patterns": [ 143 | { 144 | "include": "#comment-line" 145 | }, 146 | { 147 | "include": "#comment-block" 148 | }, 149 | { 150 | "include": "#comment-javadoc" 151 | } 152 | ] 153 | }, 154 | "comment-line": { 155 | "begin": "//", 156 | "end": "$", 157 | "name": "comment.line.double-slash.kotlin" 158 | }, 159 | "comment-block": { 160 | "begin": "/\\*(?!\\*)", 161 | "end": "\\*/", 162 | "name": "comment.block.kotlin" 163 | }, 164 | "comment-javadoc": { 165 | "patterns": [ 166 | { 167 | "begin": "/\\*\\*", 168 | "end": "\\*/", 169 | "name": "comment.block.javadoc.kotlin", 170 | "patterns": [ 171 | { 172 | "match": "@(author|deprecated|return|see|serial|since|version)\\b", 173 | "name": "keyword.other.documentation.javadoc.kotlin" 174 | }, 175 | { 176 | "match": "(@param)\\s+(\\S+)", 177 | "captures": { 178 | "1": { 179 | "name": "keyword.other.documentation.javadoc.kotlin" 180 | }, 181 | "2": { 182 | "name": "variable.parameter.kotlin" 183 | } 184 | } 185 | }, 186 | { 187 | "match": "(@(?:exception|throws))\\s+(\\S+)", 188 | "captures": { 189 | "1": { 190 | "name": "keyword.other.documentation.javadoc.kotlin" 191 | }, 192 | "2": { 193 | "name": "entity.name.type.class.kotlin" 194 | } 195 | } 196 | }, 197 | { 198 | "match": "{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*}", 199 | "captures": { 200 | "1": { 201 | "name": "keyword.other.documentation.javadoc.kotlin" 202 | }, 203 | "2": { 204 | "name": "entity.name.type.class.kotlin" 205 | }, 206 | "3": { 207 | "name": "variable.parameter.kotlin" 208 | } 209 | } 210 | } 211 | ] 212 | } 213 | ] 214 | }, 215 | "keywords": { 216 | "patterns": [ 217 | { 218 | "include": "#prefix-modifiers" 219 | }, 220 | { 221 | "include": "#postfix-modifiers" 222 | }, 223 | { 224 | "include": "#soft-keywords" 225 | }, 226 | { 227 | "include": "#hard-keywords" 228 | }, 229 | { 230 | "include": "#control-keywords" 231 | } 232 | ] 233 | }, 234 | "prefix-modifiers": { 235 | "match": "\\b(abstract|final|enum|open|annotation|sealed|data|override|final|lateinit|private|protected|public|internal|inner|companion|noinline|crossinline|vararg|reified|tailrec|operator|infix|inline|external|const|suspend)\\b", 236 | "name": "storage.modifier.other.kotlin" 237 | }, 238 | "postfix-modifiers": { 239 | "match": "\\b(where|by|get|set)\\b", 240 | "name": "storage.modifier.other.kotlin" 241 | }, 242 | "soft-keywords": { 243 | "match": "\\b(catch|finally|field)\\b", 244 | "name": "keyword.soft.kotlin" 245 | }, 246 | "hard-keywords": { 247 | "match": "\\b(as|typeof|is|in)\\b", 248 | "name": "keyword.hard.kotlin" 249 | }, 250 | "control-keywords": { 251 | "match": "\\b(if|else|while|do|when|try|throw|break|continue|return|for)\\b", 252 | "name": "keyword.control.kotlin" 253 | }, 254 | "annotation-simple": { 255 | "match": "(?<([^<>]|\\g)+>)?", 292 | "captures": { 293 | "1": { 294 | "name": "storage.type.class.kotlin" 295 | }, 296 | "2": { 297 | "name": "entity.name.type.class.kotlin" 298 | }, 299 | "3": { 300 | "patterns": [ 301 | { 302 | "include": "#type-parameter" 303 | } 304 | ] 305 | } 306 | } 307 | }, 308 | "object-declaration": { 309 | "match": "\\b(object)\\s+(\\b\\w+\\b|`[^`]+`)", 310 | "captures": { 311 | "1": { 312 | "name": "storage.type.object.kotlin" 313 | }, 314 | "2": { 315 | "name": "entity.name.type.object.kotlin" 316 | } 317 | } 318 | }, 319 | "type-alias": { 320 | "match": "\\b(typealias)\\s+(\\b\\w+\\b|`[^`]+`)\\s*(?<([^<>]|\\g)+>)?", 321 | "captures": { 322 | "1": { 323 | "name": "storage.type.alias.kotlin" 324 | }, 325 | "2": { 326 | "name": "entity.name.type.kotlin" 327 | }, 328 | "3": { 329 | "patterns": [ 330 | { 331 | "include": "#type-parameter" 332 | } 333 | ] 334 | } 335 | } 336 | }, 337 | "function-declaration": { 338 | "match": "\\b(fun)\\b\\s*(?<([^<>]|\\g)+>)?\\s*(?:(\\w+)\\.)?(\\b\\w+\\b|`[^`]+`)", 339 | "captures": { 340 | "1": { 341 | "name": "storage.type.function.kotlin" 342 | }, 343 | "2": { 344 | "patterns": [ 345 | { 346 | "include": "#type-parameter" 347 | } 348 | ] 349 | }, 350 | "4": { 351 | "name": "entity.name.type.class.extension.kotlin" 352 | }, 353 | "5": { 354 | "name": "entity.name.function.declaration.kotlin" 355 | } 356 | } 357 | }, 358 | "variable-declaration": { 359 | "match": "\\b(val|var)\\b\\s*(?<([^<>]|\\g)+>)?", 360 | "captures": { 361 | "1": { 362 | "name": "storage.type.variable.kotlin" 363 | }, 364 | "2": { 365 | "patterns": [ 366 | { 367 | "include": "#type-parameter" 368 | } 369 | ] 370 | } 371 | } 372 | }, 373 | "type-parameter": { 374 | "patterns": [ 375 | { 376 | "match": "\\b\\w+\\b", 377 | "name": "entity.name.type.kotlin" 378 | }, 379 | { 380 | "match": "\\b(in|out)\\b", 381 | "name": "storage.modifier.kotlin" 382 | } 383 | ] 384 | }, 385 | "type-annotation": { 386 | "match": "(?|(?[<(]([^<>()]|\\g)+[)>]))+", 387 | "captures": { 388 | "0": { 389 | "patterns": [ 390 | { 391 | "include": "#type-parameter" 392 | } 393 | ] 394 | } 395 | } 396 | }, 397 | "function-call": { 398 | "match": "\\??\\.?(\\b\\w+\\b|`[^`]+`)\\s*(?<([^<>]|\\g)+>)?\\s*(?=[({])", 399 | "captures": { 400 | "1": { 401 | "name": "entity.name.function.call.kotlin" 402 | }, 403 | "2": { 404 | "patterns": [ 405 | { 406 | "include": "#type-parameter" 407 | } 408 | ] 409 | } 410 | } 411 | }, 412 | "method-reference": { 413 | "match": "\\??::(\\b\\w+\\b|`[^`]+`)", 414 | "captures": { 415 | "1": { 416 | "name": "entity.name.function.reference.kotlin" 417 | } 418 | } 419 | }, 420 | "key": { 421 | "match": "\\b(\\w=)\\s*(=)", 422 | "captures": { 423 | "1": { 424 | "name": "variable.parameter.kotlin" 425 | }, 426 | "2": { 427 | "name": "keyword.operator.assignment.kotlin" 428 | } 429 | } 430 | }, 431 | "string-empty": { 432 | "match": "(?=|===|==|=>|=|\\!==|\\!=|\\+=|\\+\\+|\\+|-=|--|-|\\*=|\\*|/=|/|%=|%|!|\\&\\&|\\&|\\|\\||\\|..", 522 | "name": "keyword.operator.kotlin" 523 | }, 524 | "self-reference": { 525 | "match": "\\b(this|super)(@\\w+)?\\b", 526 | "name": "variable.language.this.kotlin" 527 | } 528 | } 529 | } 530 | -------------------------------------------------------------------------------- /lib/fsUtils.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const { promisify } = require("util"); 3 | 4 | module.exports = { 5 | async fsExists(path) { 6 | try { 7 | await fs.promises.access(path); 8 | return true; 9 | } catch { 10 | return false; 11 | } 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /lib/httpsUtils.js: -------------------------------------------------------------------------------- 1 | const https = require("https"); 2 | const { promisify } = require("util"); 3 | 4 | module.exports = { 5 | httpsGet(options) { 6 | return new Promise((resolve, reject) => { 7 | const request = https.get(options, res => { 8 | let data = ""; 9 | res.on("data", chunk => data += chunk.toString("utf8")); 10 | res.on("end", () => resolve(data)); 11 | }); 12 | request.on("error", err => reject(err)); 13 | }); 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /lib/languageServerDownloader.js: -------------------------------------------------------------------------------- 1 | const { DownloadFile } = require("atom-languageclient"); 2 | const { httpsGet } = require("./httpsUtils"); 3 | const fs = require("fs"); 4 | const extractZip = require("extract-zip"); 5 | const semver = require("semver"); 6 | const path = require("path"); 7 | 8 | const KLS_DOWNLOAD_URL = "https://github.com/fwcd/kotlin-language-server/releases/latest/download/server.zip"; 9 | 10 | async function latestServerVersion() { 11 | const rawJson = await httpsGet({ 12 | hostname: "api.github.com", 13 | path: "/repos/fwcd/kotlin-language-server/releases/latest", 14 | headers: { "User-Agent": "atom-ide-kotlin" } 15 | }); 16 | const result = JSON.parse(rawJson); 17 | return result.tag_name; 18 | } 19 | 20 | function serverInfoFile(installDir) { 21 | return path.join(installDir, "SERVER-INFO"); 22 | } 23 | 24 | /** Fetches the installed server info or null if there is none. */ 25 | async function installedServerInfo(installDir) { 26 | try { 27 | const info = JSON.parse((await fs.promises.readFile(serverInfoFile(installDir))).toString("utf8")); 28 | return semver.valid(info.version) ? info : null; 29 | } catch { 30 | return null; 31 | } 32 | } 33 | 34 | async function updateInstalledServerInfo(installDir, info) { 35 | await fs.promises.writeFile(serverInfoFile(installDir), JSON.stringify(info), { encoding: "utf8" }); 36 | } 37 | 38 | async function downloadServer(installDir, progressMessage) { 39 | const installParentDir = path.join(installDir, "..") 40 | const downloadsDir = path.join(installParentDir, "downloads"); 41 | const downloadDest = path.join(downloadsDir, "server.zip") 42 | 43 | await fs.promises.mkdir(installDir, { recursive: true }); 44 | await fs.promises.mkdir(downloadsDir, { recursive: true }); 45 | 46 | await DownloadFile(KLS_DOWNLOAD_URL, downloadDest, (bytes, percent) => { 47 | const progress = (percent == null) ? (bytes == null ? "?" : `${bytes / 1000000} MB`) : `${percent} %`; 48 | progressMessage(`Downloading Kotlin LS (${progress})`); 49 | }); 50 | 51 | progressMessage("Unpacking Kotlin LS"); 52 | await extractZip(downloadDest, { dir: installDir }); 53 | await fs.promises.unlink(downloadDest); 54 | } 55 | 56 | module.exports = { latestServerVersion, installedServerInfo, updateInstalledServerInfo, downloadServer }; 57 | -------------------------------------------------------------------------------- /lib/main.js: -------------------------------------------------------------------------------- 1 | const { AutoLanguageClient, DownloadFile } = require("atom-languageclient"); 2 | const cp = require("child_process"); 3 | const path = require("path"); 4 | const semver = require("semver"); 5 | const { downloadServer, latestServerVersion, installedServerInfo, updateInstalledServerInfo } = require("./languageServerDownloader"); 6 | 7 | class KotlinLanguageClient extends AutoLanguageClient { 8 | constructor() { 9 | super(); 10 | this.statusMessage = document.createElement("span"); 11 | } 12 | 13 | getGrammarScopes() { return ["source.kotlin"]; } 14 | 15 | getLanguageName() { return "Kotlin"; } 16 | 17 | getServerName() { return "KotlinLanguageServer"; } 18 | 19 | async startServerProcess(projectPath) { 20 | const installDir = path.join(__dirname, "..", "install"); 21 | 22 | const serverInfo = (await installedServerInfo(installDir)) || { version: "0.0.0", lastUpdate: Number.MIN_SAFE_INTEGER }; 23 | const secondsSinceLastUpdate = (Date.now() - serverInfo.lastUpdate) / 1000; 24 | 25 | if (secondsSinceLastUpdate > 240) { 26 | // Only query GitHub API for latest version if some time has passed 27 | console.log("Querying GitHub API for new KLS version..."); 28 | const latestVersion = await latestServerVersion(); 29 | const installedVersion = serverInfo.version; 30 | const serverNeedsUpdate = semver.gt(latestVersion, installedVersion); 31 | let newVersion = installedVersion; 32 | 33 | if (serverNeedsUpdate) { 34 | await downloadServer(installDir, msg => this.updateStatusMessage(msg)); 35 | newVersion = latestVersion; 36 | } 37 | 38 | await updateInstalledServerInfo(installDir, { 39 | version: newVersion, 40 | lastUpdate: Date.now() 41 | }); 42 | } 43 | 44 | this.updateStatusMessage("Initializing Kotlin LS"); 45 | const serverPath = path.join(installDir, "server", "bin", this.correctScriptName("kotlin-language-server")); 46 | const process = cp.spawn(serverPath); 47 | 48 | process.on("close", () => { 49 | if (!process.killed) { 50 | atom.notifications.addError("Kotlin Language Server closed unexpectedly.", { 51 | dismissable: true 52 | }); 53 | } 54 | }); 55 | 56 | return process; 57 | } 58 | 59 | async isServerPresent(installDir) { 60 | return await fsExists(path.join(installDir, "bin")); 61 | } 62 | 63 | async downloadServer(installDir) { 64 | 65 | } 66 | 67 | correctScriptName(name) { 68 | return name + ((process.platform === "win32") ? ".bat" : ""); 69 | } 70 | 71 | preInitialization(connection) { 72 | this.updateStatusMessage("Activating Kotlin LS"); 73 | } 74 | 75 | postInitialization(server) { 76 | this.updateStatusMessage("Kotlin LS ready"); 77 | } 78 | 79 | consumeStatusBar(statusBar) { 80 | this.statusBar = statusBar 81 | if (!this.statusTile) { 82 | this.createStatusTile(); 83 | } 84 | } 85 | 86 | updateStatusMessage(message) { 87 | this.statusMessage.textContent = message; 88 | if (!this.statusTile && this.statusBar) { 89 | this.createStatusTile(); 90 | } 91 | } 92 | 93 | createStatusTile() { 94 | this.statusTile = this.statusBar.addRightTile({ item: this.statusMessage, priority: 500 }); 95 | } 96 | } 97 | 98 | module.exports = new KotlinLanguageClient(); 99 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ide-kotlin", 3 | "version": "0.6.8", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ide-kotlin", 9 | "version": "0.6.8", 10 | "license": "MIT", 11 | "dependencies": { 12 | "atom-languageclient": "^1.0.7", 13 | "extract-zip": "^2.0.1", 14 | "semver": "^7.3.5" 15 | }, 16 | "devDependencies": { 17 | "request": "^2.88.2" 18 | }, 19 | "engines": { 20 | "atom": "*", 21 | "node": "*" 22 | } 23 | }, 24 | "node_modules/@types/node": { 25 | "version": "17.0.22", 26 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.22.tgz", 27 | "integrity": "sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==", 28 | "optional": true 29 | }, 30 | "node_modules/@types/yauzl": { 31 | "version": "2.9.2", 32 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 33 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 34 | "optional": true, 35 | "dependencies": { 36 | "@types/node": "*" 37 | } 38 | }, 39 | "node_modules/ajv": { 40 | "version": "6.12.6", 41 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 42 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 43 | "dev": true, 44 | "dependencies": { 45 | "fast-deep-equal": "^3.1.1", 46 | "fast-json-stable-stringify": "^2.0.0", 47 | "json-schema-traverse": "^0.4.1", 48 | "uri-js": "^4.2.2" 49 | }, 50 | "funding": { 51 | "type": "github", 52 | "url": "https://github.com/sponsors/epoberezkin" 53 | } 54 | }, 55 | "node_modules/asn1": { 56 | "version": "0.2.6", 57 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 58 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 59 | "dev": true, 60 | "dependencies": { 61 | "safer-buffer": "~2.1.0" 62 | } 63 | }, 64 | "node_modules/assert-plus": { 65 | "version": "1.0.0", 66 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 67 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 68 | "dev": true, 69 | "engines": { 70 | "node": ">=0.8" 71 | } 72 | }, 73 | "node_modules/asynckit": { 74 | "version": "0.4.0", 75 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 76 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 77 | "dev": true 78 | }, 79 | "node_modules/atom-languageclient": { 80 | "version": "1.0.7", 81 | "resolved": "https://registry.npmjs.org/atom-languageclient/-/atom-languageclient-1.0.7.tgz", 82 | "integrity": "sha512-9EVcfKCD/fu8Itn7BJhknZaojg4jpb2yYG4IwgFVYncPp9x61JMto1UXVxK+MWHaf+OT6HqPdaQDQEpCvlZgBQ==", 83 | "dependencies": { 84 | "vscode-jsonrpc": "5.0.1", 85 | "vscode-languageserver-protocol": "3.15.3", 86 | "vscode-languageserver-types": "3.15.1", 87 | "zadeh": "^2.0.2" 88 | } 89 | }, 90 | "node_modules/aws-sign2": { 91 | "version": "0.7.0", 92 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 93 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", 94 | "dev": true, 95 | "engines": { 96 | "node": "*" 97 | } 98 | }, 99 | "node_modules/aws4": { 100 | "version": "1.11.0", 101 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 102 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", 103 | "dev": true 104 | }, 105 | "node_modules/bcrypt-pbkdf": { 106 | "version": "1.0.2", 107 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 108 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 109 | "dev": true, 110 | "dependencies": { 111 | "tweetnacl": "^0.14.3" 112 | } 113 | }, 114 | "node_modules/bindings": { 115 | "version": "1.5.0", 116 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 117 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 118 | "dependencies": { 119 | "file-uri-to-path": "1.0.0" 120 | } 121 | }, 122 | "node_modules/buffer-crc32": { 123 | "version": "0.2.13", 124 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 125 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 126 | "engines": { 127 | "node": "*" 128 | } 129 | }, 130 | "node_modules/caseless": { 131 | "version": "0.12.0", 132 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 133 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 134 | "dev": true 135 | }, 136 | "node_modules/combined-stream": { 137 | "version": "1.0.8", 138 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 139 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 140 | "dev": true, 141 | "dependencies": { 142 | "delayed-stream": "~1.0.0" 143 | }, 144 | "engines": { 145 | "node": ">= 0.8" 146 | } 147 | }, 148 | "node_modules/core-util-is": { 149 | "version": "1.0.2", 150 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 151 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 152 | "dev": true 153 | }, 154 | "node_modules/dashdash": { 155 | "version": "1.14.1", 156 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 157 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 158 | "dev": true, 159 | "dependencies": { 160 | "assert-plus": "^1.0.0" 161 | }, 162 | "engines": { 163 | "node": ">=0.10" 164 | } 165 | }, 166 | "node_modules/debug": { 167 | "version": "4.3.4", 168 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 169 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 170 | "dependencies": { 171 | "ms": "2.1.2" 172 | }, 173 | "engines": { 174 | "node": ">=6.0" 175 | }, 176 | "peerDependenciesMeta": { 177 | "supports-color": { 178 | "optional": true 179 | } 180 | } 181 | }, 182 | "node_modules/delayed-stream": { 183 | "version": "1.0.0", 184 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 185 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 186 | "dev": true, 187 | "engines": { 188 | "node": ">=0.4.0" 189 | } 190 | }, 191 | "node_modules/ecc-jsbn": { 192 | "version": "0.1.2", 193 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 194 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 195 | "dev": true, 196 | "dependencies": { 197 | "jsbn": "~0.1.0", 198 | "safer-buffer": "^2.1.0" 199 | } 200 | }, 201 | "node_modules/end-of-stream": { 202 | "version": "1.4.4", 203 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 204 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 205 | "dependencies": { 206 | "once": "^1.4.0" 207 | } 208 | }, 209 | "node_modules/extend": { 210 | "version": "3.0.2", 211 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 212 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 213 | "dev": true 214 | }, 215 | "node_modules/extract-zip": { 216 | "version": "2.0.1", 217 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 218 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 219 | "dependencies": { 220 | "debug": "^4.1.1", 221 | "get-stream": "^5.1.0", 222 | "yauzl": "^2.10.0" 223 | }, 224 | "bin": { 225 | "extract-zip": "cli.js" 226 | }, 227 | "engines": { 228 | "node": ">= 10.17.0" 229 | }, 230 | "optionalDependencies": { 231 | "@types/yauzl": "^2.9.1" 232 | } 233 | }, 234 | "node_modules/extsprintf": { 235 | "version": "1.3.0", 236 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 237 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 238 | "dev": true, 239 | "engines": [ 240 | "node >=0.6.0" 241 | ] 242 | }, 243 | "node_modules/fast-deep-equal": { 244 | "version": "3.1.3", 245 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 246 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 247 | "dev": true 248 | }, 249 | "node_modules/fast-json-stable-stringify": { 250 | "version": "2.1.0", 251 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 252 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 253 | "dev": true 254 | }, 255 | "node_modules/fd-slicer": { 256 | "version": "1.1.0", 257 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 258 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 259 | "dependencies": { 260 | "pend": "~1.2.0" 261 | } 262 | }, 263 | "node_modules/file-uri-to-path": { 264 | "version": "1.0.0", 265 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 266 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" 267 | }, 268 | "node_modules/forever-agent": { 269 | "version": "0.6.1", 270 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 271 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 272 | "dev": true, 273 | "engines": { 274 | "node": "*" 275 | } 276 | }, 277 | "node_modules/form-data": { 278 | "version": "2.3.3", 279 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 280 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 281 | "dev": true, 282 | "dependencies": { 283 | "asynckit": "^0.4.0", 284 | "combined-stream": "^1.0.6", 285 | "mime-types": "^2.1.12" 286 | }, 287 | "engines": { 288 | "node": ">= 0.12" 289 | } 290 | }, 291 | "node_modules/get-stream": { 292 | "version": "5.2.0", 293 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 294 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 295 | "dependencies": { 296 | "pump": "^3.0.0" 297 | }, 298 | "engines": { 299 | "node": ">=8" 300 | }, 301 | "funding": { 302 | "url": "https://github.com/sponsors/sindresorhus" 303 | } 304 | }, 305 | "node_modules/getpass": { 306 | "version": "0.1.7", 307 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 308 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 309 | "dev": true, 310 | "dependencies": { 311 | "assert-plus": "^1.0.0" 312 | } 313 | }, 314 | "node_modules/har-schema": { 315 | "version": "2.0.0", 316 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 317 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", 318 | "dev": true, 319 | "engines": { 320 | "node": ">=4" 321 | } 322 | }, 323 | "node_modules/har-validator": { 324 | "version": "5.1.5", 325 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 326 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 327 | "deprecated": "this library is no longer supported", 328 | "dev": true, 329 | "dependencies": { 330 | "ajv": "^6.12.3", 331 | "har-schema": "^2.0.0" 332 | }, 333 | "engines": { 334 | "node": ">=6" 335 | } 336 | }, 337 | "node_modules/http-signature": { 338 | "version": "1.2.0", 339 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 340 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 341 | "dev": true, 342 | "dependencies": { 343 | "assert-plus": "^1.0.0", 344 | "jsprim": "^1.2.2", 345 | "sshpk": "^1.7.0" 346 | }, 347 | "engines": { 348 | "node": ">=0.8", 349 | "npm": ">=1.3.7" 350 | } 351 | }, 352 | "node_modules/is-typedarray": { 353 | "version": "1.0.0", 354 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 355 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 356 | "dev": true 357 | }, 358 | "node_modules/isstream": { 359 | "version": "0.1.2", 360 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 361 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 362 | "dev": true 363 | }, 364 | "node_modules/jsbn": { 365 | "version": "0.1.1", 366 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 367 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 368 | "dev": true 369 | }, 370 | "node_modules/json-schema": { 371 | "version": "0.4.0", 372 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 373 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 374 | "dev": true 375 | }, 376 | "node_modules/json-schema-traverse": { 377 | "version": "0.4.1", 378 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 379 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 380 | "dev": true 381 | }, 382 | "node_modules/json-stringify-safe": { 383 | "version": "5.0.1", 384 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 385 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 386 | "dev": true 387 | }, 388 | "node_modules/jsprim": { 389 | "version": "1.4.2", 390 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 391 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 392 | "dev": true, 393 | "dependencies": { 394 | "assert-plus": "1.0.0", 395 | "extsprintf": "1.3.0", 396 | "json-schema": "0.4.0", 397 | "verror": "1.10.0" 398 | }, 399 | "engines": { 400 | "node": ">=0.6.0" 401 | } 402 | }, 403 | "node_modules/lru-cache": { 404 | "version": "6.0.0", 405 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 406 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 407 | "dependencies": { 408 | "yallist": "^4.0.0" 409 | }, 410 | "engines": { 411 | "node": ">=10" 412 | } 413 | }, 414 | "node_modules/mime-db": { 415 | "version": "1.52.0", 416 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 417 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 418 | "dev": true, 419 | "engines": { 420 | "node": ">= 0.6" 421 | } 422 | }, 423 | "node_modules/mime-types": { 424 | "version": "2.1.35", 425 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 426 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 427 | "dev": true, 428 | "dependencies": { 429 | "mime-db": "1.52.0" 430 | }, 431 | "engines": { 432 | "node": ">= 0.6" 433 | } 434 | }, 435 | "node_modules/ms": { 436 | "version": "2.1.2", 437 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 438 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 439 | }, 440 | "node_modules/node-addon-api": { 441 | "version": "3.1.0", 442 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", 443 | "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" 444 | }, 445 | "node_modules/node-gyp-build": { 446 | "version": "4.3.0", 447 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", 448 | "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", 449 | "bin": { 450 | "node-gyp-build": "bin.js", 451 | "node-gyp-build-optional": "optional.js", 452 | "node-gyp-build-test": "build-test.js" 453 | } 454 | }, 455 | "node_modules/oauth-sign": { 456 | "version": "0.9.0", 457 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 458 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 459 | "dev": true, 460 | "engines": { 461 | "node": "*" 462 | } 463 | }, 464 | "node_modules/once": { 465 | "version": "1.4.0", 466 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 467 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 468 | "dependencies": { 469 | "wrappy": "1" 470 | } 471 | }, 472 | "node_modules/pend": { 473 | "version": "1.2.0", 474 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 475 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 476 | }, 477 | "node_modules/performance-now": { 478 | "version": "2.1.0", 479 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 480 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", 481 | "dev": true 482 | }, 483 | "node_modules/psl": { 484 | "version": "1.8.0", 485 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 486 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", 487 | "dev": true 488 | }, 489 | "node_modules/pump": { 490 | "version": "3.0.0", 491 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 492 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 493 | "dependencies": { 494 | "end-of-stream": "^1.1.0", 495 | "once": "^1.3.1" 496 | } 497 | }, 498 | "node_modules/punycode": { 499 | "version": "2.1.1", 500 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 501 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 502 | "dev": true, 503 | "engines": { 504 | "node": ">=6" 505 | } 506 | }, 507 | "node_modules/qs": { 508 | "version": "6.5.3", 509 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 510 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 511 | "dev": true, 512 | "engines": { 513 | "node": ">=0.6" 514 | } 515 | }, 516 | "node_modules/request": { 517 | "version": "2.88.2", 518 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 519 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 520 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 521 | "dev": true, 522 | "dependencies": { 523 | "aws-sign2": "~0.7.0", 524 | "aws4": "^1.8.0", 525 | "caseless": "~0.12.0", 526 | "combined-stream": "~1.0.6", 527 | "extend": "~3.0.2", 528 | "forever-agent": "~0.6.1", 529 | "form-data": "~2.3.2", 530 | "har-validator": "~5.1.3", 531 | "http-signature": "~1.2.0", 532 | "is-typedarray": "~1.0.0", 533 | "isstream": "~0.1.2", 534 | "json-stringify-safe": "~5.0.1", 535 | "mime-types": "~2.1.19", 536 | "oauth-sign": "~0.9.0", 537 | "performance-now": "^2.1.0", 538 | "qs": "~6.5.2", 539 | "safe-buffer": "^5.1.2", 540 | "tough-cookie": "~2.5.0", 541 | "tunnel-agent": "^0.6.0", 542 | "uuid": "^3.3.2" 543 | }, 544 | "engines": { 545 | "node": ">= 6" 546 | } 547 | }, 548 | "node_modules/safe-buffer": { 549 | "version": "5.2.1", 550 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 551 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 552 | "dev": true, 553 | "funding": [ 554 | { 555 | "type": "github", 556 | "url": "https://github.com/sponsors/feross" 557 | }, 558 | { 559 | "type": "patreon", 560 | "url": "https://www.patreon.com/feross" 561 | }, 562 | { 563 | "type": "consulting", 564 | "url": "https://feross.org/support" 565 | } 566 | ] 567 | }, 568 | "node_modules/safer-buffer": { 569 | "version": "2.1.2", 570 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 571 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 572 | "dev": true 573 | }, 574 | "node_modules/semver": { 575 | "version": "7.3.5", 576 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 577 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 578 | "dependencies": { 579 | "lru-cache": "^6.0.0" 580 | }, 581 | "bin": { 582 | "semver": "bin/semver.js" 583 | }, 584 | "engines": { 585 | "node": ">=10" 586 | } 587 | }, 588 | "node_modules/sshpk": { 589 | "version": "1.17.0", 590 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 591 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 592 | "dev": true, 593 | "dependencies": { 594 | "asn1": "~0.2.3", 595 | "assert-plus": "^1.0.0", 596 | "bcrypt-pbkdf": "^1.0.0", 597 | "dashdash": "^1.12.0", 598 | "ecc-jsbn": "~0.1.1", 599 | "getpass": "^0.1.1", 600 | "jsbn": "~0.1.0", 601 | "safer-buffer": "^2.0.2", 602 | "tweetnacl": "~0.14.0" 603 | }, 604 | "bin": { 605 | "sshpk-conv": "bin/sshpk-conv", 606 | "sshpk-sign": "bin/sshpk-sign", 607 | "sshpk-verify": "bin/sshpk-verify" 608 | }, 609 | "engines": { 610 | "node": ">=0.10.0" 611 | } 612 | }, 613 | "node_modules/tough-cookie": { 614 | "version": "2.5.0", 615 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 616 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 617 | "dev": true, 618 | "dependencies": { 619 | "psl": "^1.1.28", 620 | "punycode": "^2.1.1" 621 | }, 622 | "engines": { 623 | "node": ">=0.8" 624 | } 625 | }, 626 | "node_modules/tunnel-agent": { 627 | "version": "0.6.0", 628 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 629 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 630 | "dev": true, 631 | "dependencies": { 632 | "safe-buffer": "^5.0.1" 633 | }, 634 | "engines": { 635 | "node": "*" 636 | } 637 | }, 638 | "node_modules/tweetnacl": { 639 | "version": "0.14.5", 640 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 641 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 642 | "dev": true 643 | }, 644 | "node_modules/uri-js": { 645 | "version": "4.4.1", 646 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 647 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 648 | "dev": true, 649 | "dependencies": { 650 | "punycode": "^2.1.0" 651 | } 652 | }, 653 | "node_modules/uuid": { 654 | "version": "3.4.0", 655 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 656 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 657 | "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", 658 | "dev": true, 659 | "bin": { 660 | "uuid": "bin/uuid" 661 | } 662 | }, 663 | "node_modules/verror": { 664 | "version": "1.10.0", 665 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 666 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 667 | "dev": true, 668 | "engines": [ 669 | "node >=0.6.0" 670 | ], 671 | "dependencies": { 672 | "assert-plus": "^1.0.0", 673 | "core-util-is": "1.0.2", 674 | "extsprintf": "^1.2.0" 675 | } 676 | }, 677 | "node_modules/vscode-jsonrpc": { 678 | "version": "5.0.1", 679 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", 680 | "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==", 681 | "engines": { 682 | "node": ">=8.0.0 || >=10.0.0" 683 | } 684 | }, 685 | "node_modules/vscode-languageserver-protocol": { 686 | "version": "3.15.3", 687 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", 688 | "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", 689 | "dependencies": { 690 | "vscode-jsonrpc": "^5.0.1", 691 | "vscode-languageserver-types": "3.15.1" 692 | } 693 | }, 694 | "node_modules/vscode-languageserver-types": { 695 | "version": "3.15.1", 696 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", 697 | "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" 698 | }, 699 | "node_modules/wrappy": { 700 | "version": "1.0.2", 701 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 702 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 703 | }, 704 | "node_modules/yallist": { 705 | "version": "4.0.0", 706 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 707 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 708 | }, 709 | "node_modules/yauzl": { 710 | "version": "2.10.0", 711 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 712 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 713 | "dependencies": { 714 | "buffer-crc32": "~0.2.3", 715 | "fd-slicer": "~1.1.0" 716 | } 717 | }, 718 | "node_modules/zadeh": { 719 | "version": "2.1.0", 720 | "resolved": "https://registry.npmjs.org/zadeh/-/zadeh-2.1.0.tgz", 721 | "integrity": "sha512-BY8U9RWUi1BVV9Xt4mylP4YvGMswSP0PFN3JF7Ib2ON6yLWbLzEoi8d9yKr2GsjQAv1zCc1uxen7AmWLB2iqvA==", 722 | "hasInstallScript": true, 723 | "dependencies": { 724 | "bindings": "~1.5.0", 725 | "node-addon-api": "~3.1.0", 726 | "node-gyp-build": "^4.2.3" 727 | } 728 | } 729 | }, 730 | "dependencies": { 731 | "@types/node": { 732 | "version": "17.0.22", 733 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.22.tgz", 734 | "integrity": "sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==", 735 | "optional": true 736 | }, 737 | "@types/yauzl": { 738 | "version": "2.9.2", 739 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", 740 | "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", 741 | "optional": true, 742 | "requires": { 743 | "@types/node": "*" 744 | } 745 | }, 746 | "ajv": { 747 | "version": "6.12.6", 748 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 749 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 750 | "dev": true, 751 | "requires": { 752 | "fast-deep-equal": "^3.1.1", 753 | "fast-json-stable-stringify": "^2.0.0", 754 | "json-schema-traverse": "^0.4.1", 755 | "uri-js": "^4.2.2" 756 | } 757 | }, 758 | "asn1": { 759 | "version": "0.2.6", 760 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", 761 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", 762 | "dev": true, 763 | "requires": { 764 | "safer-buffer": "~2.1.0" 765 | } 766 | }, 767 | "assert-plus": { 768 | "version": "1.0.0", 769 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 770 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 771 | "dev": true 772 | }, 773 | "asynckit": { 774 | "version": "0.4.0", 775 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 776 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 777 | "dev": true 778 | }, 779 | "atom-languageclient": { 780 | "version": "1.0.7", 781 | "resolved": "https://registry.npmjs.org/atom-languageclient/-/atom-languageclient-1.0.7.tgz", 782 | "integrity": "sha512-9EVcfKCD/fu8Itn7BJhknZaojg4jpb2yYG4IwgFVYncPp9x61JMto1UXVxK+MWHaf+OT6HqPdaQDQEpCvlZgBQ==", 783 | "requires": { 784 | "vscode-jsonrpc": "5.0.1", 785 | "vscode-languageserver-protocol": "3.15.3", 786 | "vscode-languageserver-types": "3.15.1", 787 | "zadeh": "^2.0.2" 788 | } 789 | }, 790 | "aws-sign2": { 791 | "version": "0.7.0", 792 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 793 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", 794 | "dev": true 795 | }, 796 | "aws4": { 797 | "version": "1.11.0", 798 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 799 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", 800 | "dev": true 801 | }, 802 | "bcrypt-pbkdf": { 803 | "version": "1.0.2", 804 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 805 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 806 | "dev": true, 807 | "requires": { 808 | "tweetnacl": "^0.14.3" 809 | } 810 | }, 811 | "bindings": { 812 | "version": "1.5.0", 813 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 814 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 815 | "requires": { 816 | "file-uri-to-path": "1.0.0" 817 | } 818 | }, 819 | "buffer-crc32": { 820 | "version": "0.2.13", 821 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 822 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 823 | }, 824 | "caseless": { 825 | "version": "0.12.0", 826 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 827 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 828 | "dev": true 829 | }, 830 | "combined-stream": { 831 | "version": "1.0.8", 832 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 833 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 834 | "dev": true, 835 | "requires": { 836 | "delayed-stream": "~1.0.0" 837 | } 838 | }, 839 | "core-util-is": { 840 | "version": "1.0.2", 841 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 842 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 843 | "dev": true 844 | }, 845 | "dashdash": { 846 | "version": "1.14.1", 847 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 848 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 849 | "dev": true, 850 | "requires": { 851 | "assert-plus": "^1.0.0" 852 | } 853 | }, 854 | "debug": { 855 | "version": "4.3.4", 856 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 857 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 858 | "requires": { 859 | "ms": "2.1.2" 860 | } 861 | }, 862 | "delayed-stream": { 863 | "version": "1.0.0", 864 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 865 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 866 | "dev": true 867 | }, 868 | "ecc-jsbn": { 869 | "version": "0.1.2", 870 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 871 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 872 | "dev": true, 873 | "requires": { 874 | "jsbn": "~0.1.0", 875 | "safer-buffer": "^2.1.0" 876 | } 877 | }, 878 | "end-of-stream": { 879 | "version": "1.4.4", 880 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 881 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 882 | "requires": { 883 | "once": "^1.4.0" 884 | } 885 | }, 886 | "extend": { 887 | "version": "3.0.2", 888 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 889 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 890 | "dev": true 891 | }, 892 | "extract-zip": { 893 | "version": "2.0.1", 894 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 895 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 896 | "requires": { 897 | "@types/yauzl": "^2.9.1", 898 | "debug": "^4.1.1", 899 | "get-stream": "^5.1.0", 900 | "yauzl": "^2.10.0" 901 | } 902 | }, 903 | "extsprintf": { 904 | "version": "1.3.0", 905 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 906 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 907 | "dev": true 908 | }, 909 | "fast-deep-equal": { 910 | "version": "3.1.3", 911 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 912 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 913 | "dev": true 914 | }, 915 | "fast-json-stable-stringify": { 916 | "version": "2.1.0", 917 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 918 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 919 | "dev": true 920 | }, 921 | "fd-slicer": { 922 | "version": "1.1.0", 923 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 924 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 925 | "requires": { 926 | "pend": "~1.2.0" 927 | } 928 | }, 929 | "file-uri-to-path": { 930 | "version": "1.0.0", 931 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 932 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" 933 | }, 934 | "forever-agent": { 935 | "version": "0.6.1", 936 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 937 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 938 | "dev": true 939 | }, 940 | "form-data": { 941 | "version": "2.3.3", 942 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 943 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 944 | "dev": true, 945 | "requires": { 946 | "asynckit": "^0.4.0", 947 | "combined-stream": "^1.0.6", 948 | "mime-types": "^2.1.12" 949 | } 950 | }, 951 | "get-stream": { 952 | "version": "5.2.0", 953 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 954 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 955 | "requires": { 956 | "pump": "^3.0.0" 957 | } 958 | }, 959 | "getpass": { 960 | "version": "0.1.7", 961 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 962 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 963 | "dev": true, 964 | "requires": { 965 | "assert-plus": "^1.0.0" 966 | } 967 | }, 968 | "har-schema": { 969 | "version": "2.0.0", 970 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 971 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", 972 | "dev": true 973 | }, 974 | "har-validator": { 975 | "version": "5.1.5", 976 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 977 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 978 | "dev": true, 979 | "requires": { 980 | "ajv": "^6.12.3", 981 | "har-schema": "^2.0.0" 982 | } 983 | }, 984 | "http-signature": { 985 | "version": "1.2.0", 986 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 987 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 988 | "dev": true, 989 | "requires": { 990 | "assert-plus": "^1.0.0", 991 | "jsprim": "^1.2.2", 992 | "sshpk": "^1.7.0" 993 | } 994 | }, 995 | "is-typedarray": { 996 | "version": "1.0.0", 997 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 998 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 999 | "dev": true 1000 | }, 1001 | "isstream": { 1002 | "version": "0.1.2", 1003 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1004 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 1005 | "dev": true 1006 | }, 1007 | "jsbn": { 1008 | "version": "0.1.1", 1009 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1010 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 1011 | "dev": true 1012 | }, 1013 | "json-schema": { 1014 | "version": "0.4.0", 1015 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", 1016 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", 1017 | "dev": true 1018 | }, 1019 | "json-schema-traverse": { 1020 | "version": "0.4.1", 1021 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1022 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1023 | "dev": true 1024 | }, 1025 | "json-stringify-safe": { 1026 | "version": "5.0.1", 1027 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1028 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 1029 | "dev": true 1030 | }, 1031 | "jsprim": { 1032 | "version": "1.4.2", 1033 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", 1034 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", 1035 | "dev": true, 1036 | "requires": { 1037 | "assert-plus": "1.0.0", 1038 | "extsprintf": "1.3.0", 1039 | "json-schema": "0.4.0", 1040 | "verror": "1.10.0" 1041 | } 1042 | }, 1043 | "lru-cache": { 1044 | "version": "6.0.0", 1045 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1046 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1047 | "requires": { 1048 | "yallist": "^4.0.0" 1049 | } 1050 | }, 1051 | "mime-db": { 1052 | "version": "1.52.0", 1053 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1054 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1055 | "dev": true 1056 | }, 1057 | "mime-types": { 1058 | "version": "2.1.35", 1059 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1060 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1061 | "dev": true, 1062 | "requires": { 1063 | "mime-db": "1.52.0" 1064 | } 1065 | }, 1066 | "ms": { 1067 | "version": "2.1.2", 1068 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1069 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1070 | }, 1071 | "node-addon-api": { 1072 | "version": "3.1.0", 1073 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", 1074 | "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" 1075 | }, 1076 | "node-gyp-build": { 1077 | "version": "4.3.0", 1078 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", 1079 | "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" 1080 | }, 1081 | "oauth-sign": { 1082 | "version": "0.9.0", 1083 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1084 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 1085 | "dev": true 1086 | }, 1087 | "once": { 1088 | "version": "1.4.0", 1089 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1090 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1091 | "requires": { 1092 | "wrappy": "1" 1093 | } 1094 | }, 1095 | "pend": { 1096 | "version": "1.2.0", 1097 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1098 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 1099 | }, 1100 | "performance-now": { 1101 | "version": "2.1.0", 1102 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1103 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", 1104 | "dev": true 1105 | }, 1106 | "psl": { 1107 | "version": "1.8.0", 1108 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 1109 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", 1110 | "dev": true 1111 | }, 1112 | "pump": { 1113 | "version": "3.0.0", 1114 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1115 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1116 | "requires": { 1117 | "end-of-stream": "^1.1.0", 1118 | "once": "^1.3.1" 1119 | } 1120 | }, 1121 | "punycode": { 1122 | "version": "2.1.1", 1123 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1124 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1125 | "dev": true 1126 | }, 1127 | "qs": { 1128 | "version": "6.5.3", 1129 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", 1130 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", 1131 | "dev": true 1132 | }, 1133 | "request": { 1134 | "version": "2.88.2", 1135 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1136 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1137 | "dev": true, 1138 | "requires": { 1139 | "aws-sign2": "~0.7.0", 1140 | "aws4": "^1.8.0", 1141 | "caseless": "~0.12.0", 1142 | "combined-stream": "~1.0.6", 1143 | "extend": "~3.0.2", 1144 | "forever-agent": "~0.6.1", 1145 | "form-data": "~2.3.2", 1146 | "har-validator": "~5.1.3", 1147 | "http-signature": "~1.2.0", 1148 | "is-typedarray": "~1.0.0", 1149 | "isstream": "~0.1.2", 1150 | "json-stringify-safe": "~5.0.1", 1151 | "mime-types": "~2.1.19", 1152 | "oauth-sign": "~0.9.0", 1153 | "performance-now": "^2.1.0", 1154 | "qs": "~6.5.2", 1155 | "safe-buffer": "^5.1.2", 1156 | "tough-cookie": "~2.5.0", 1157 | "tunnel-agent": "^0.6.0", 1158 | "uuid": "^3.3.2" 1159 | } 1160 | }, 1161 | "safe-buffer": { 1162 | "version": "5.2.1", 1163 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1164 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1165 | "dev": true 1166 | }, 1167 | "safer-buffer": { 1168 | "version": "2.1.2", 1169 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1170 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1171 | "dev": true 1172 | }, 1173 | "semver": { 1174 | "version": "7.3.5", 1175 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 1176 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 1177 | "requires": { 1178 | "lru-cache": "^6.0.0" 1179 | } 1180 | }, 1181 | "sshpk": { 1182 | "version": "1.17.0", 1183 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", 1184 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", 1185 | "dev": true, 1186 | "requires": { 1187 | "asn1": "~0.2.3", 1188 | "assert-plus": "^1.0.0", 1189 | "bcrypt-pbkdf": "^1.0.0", 1190 | "dashdash": "^1.12.0", 1191 | "ecc-jsbn": "~0.1.1", 1192 | "getpass": "^0.1.1", 1193 | "jsbn": "~0.1.0", 1194 | "safer-buffer": "^2.0.2", 1195 | "tweetnacl": "~0.14.0" 1196 | } 1197 | }, 1198 | "tough-cookie": { 1199 | "version": "2.5.0", 1200 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1201 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1202 | "dev": true, 1203 | "requires": { 1204 | "psl": "^1.1.28", 1205 | "punycode": "^2.1.1" 1206 | } 1207 | }, 1208 | "tunnel-agent": { 1209 | "version": "0.6.0", 1210 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1211 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1212 | "dev": true, 1213 | "requires": { 1214 | "safe-buffer": "^5.0.1" 1215 | } 1216 | }, 1217 | "tweetnacl": { 1218 | "version": "0.14.5", 1219 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1220 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 1221 | "dev": true 1222 | }, 1223 | "uri-js": { 1224 | "version": "4.4.1", 1225 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1226 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1227 | "dev": true, 1228 | "requires": { 1229 | "punycode": "^2.1.0" 1230 | } 1231 | }, 1232 | "uuid": { 1233 | "version": "3.4.0", 1234 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1235 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 1236 | "dev": true 1237 | }, 1238 | "verror": { 1239 | "version": "1.10.0", 1240 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1241 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1242 | "dev": true, 1243 | "requires": { 1244 | "assert-plus": "^1.0.0", 1245 | "core-util-is": "1.0.2", 1246 | "extsprintf": "^1.2.0" 1247 | } 1248 | }, 1249 | "vscode-jsonrpc": { 1250 | "version": "5.0.1", 1251 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", 1252 | "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" 1253 | }, 1254 | "vscode-languageserver-protocol": { 1255 | "version": "3.15.3", 1256 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", 1257 | "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", 1258 | "requires": { 1259 | "vscode-jsonrpc": "^5.0.1", 1260 | "vscode-languageserver-types": "3.15.1" 1261 | } 1262 | }, 1263 | "vscode-languageserver-types": { 1264 | "version": "3.15.1", 1265 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", 1266 | "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" 1267 | }, 1268 | "wrappy": { 1269 | "version": "1.0.2", 1270 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1271 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1272 | }, 1273 | "yallist": { 1274 | "version": "4.0.0", 1275 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1276 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1277 | }, 1278 | "yauzl": { 1279 | "version": "2.10.0", 1280 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1281 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 1282 | "requires": { 1283 | "buffer-crc32": "~0.2.3", 1284 | "fd-slicer": "~1.1.0" 1285 | } 1286 | }, 1287 | "zadeh": { 1288 | "version": "2.1.0", 1289 | "resolved": "https://registry.npmjs.org/zadeh/-/zadeh-2.1.0.tgz", 1290 | "integrity": "sha512-BY8U9RWUi1BVV9Xt4mylP4YvGMswSP0PFN3JF7Ib2ON6yLWbLzEoi8d9yKr2GsjQAv1zCc1uxen7AmWLB2iqvA==", 1291 | "requires": { 1292 | "bindings": "~1.5.0", 1293 | "node-addon-api": "~3.1.0", 1294 | "node-gyp-build": "^4.2.3" 1295 | } 1296 | } 1297 | } 1298 | } 1299 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ide-kotlin", 3 | "main": "./lib/main", 4 | "version": "0.6.8", 5 | "description": "Smart code completion, linting and more for Kotlin", 6 | "keywords": [], 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/fwcd/atom-ide-kotlin.git" 10 | }, 11 | "license": "MIT", 12 | "engines": { 13 | "atom": "*", 14 | "node": "*" 15 | }, 16 | "enhancedScopes": [ 17 | "source.kotlin" 18 | ], 19 | "scripts": { 20 | "download-grammar": "node scripts/downloadGrammar.js", 21 | "prepare": "npm run download-grammar" 22 | }, 23 | "devDependencies": { 24 | "request": "^2.88.2" 25 | }, 26 | "dependencies": { 27 | "atom-languageclient": "^1.0.7", 28 | "extract-zip": "^2.0.1", 29 | "semver": "^7.3.5" 30 | }, 31 | "consumedServices": { 32 | "linter-indie": { 33 | "versions": { 34 | "2.0.0": "consumeLinterV2" 35 | } 36 | }, 37 | "datatip": { 38 | "versions": { 39 | "0.1.0": "consumeDatatip" 40 | } 41 | }, 42 | "console": { 43 | "versions": { 44 | "0.1.0": "consumeConsole" 45 | } 46 | }, 47 | "signature-help": { 48 | "versions": { 49 | "0.1.0": "consumeSignatureHelp" 50 | } 51 | }, 52 | "status-bar": { 53 | "versions": { 54 | "^1.0.0": "consumeStatusBar" 55 | } 56 | } 57 | }, 58 | "providedServices": { 59 | "autocomplete.provider": { 60 | "versions": { 61 | "2.0.0": "provideAutocomplete" 62 | } 63 | }, 64 | "definitions": { 65 | "versions": { 66 | "0.1.0": "provideDefinitions" 67 | } 68 | }, 69 | "find-references": { 70 | "versions": { 71 | "0.1.0": "provideFindReferences" 72 | } 73 | }, 74 | "outline-view": { 75 | "versions": { 76 | "0.1.0": "provideOutlines" 77 | } 78 | }, 79 | "code-actions": { 80 | "versions": { 81 | "0.1.0": "provideCodeActions" 82 | } 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fwcd/atom-ide-kotlin/05d9afedce5e5d615bc09a6511a409f90cbec7fd/screenshot.png -------------------------------------------------------------------------------- /scripts/downloadGrammar.js: -------------------------------------------------------------------------------- 1 | // A small script to download the TextMate grammar 2 | // for Kotlin at compile time (i.e. before packaging the extension) 3 | 4 | const request = require("request"); 5 | const path = require("path"); 6 | const extractZip = require("extract-zip"); 7 | const fs = require("fs"); 8 | 9 | const GRAMMAR_ZIP_URL = "https://github.com/fwcd/kotlin-language-server/releases/latest/download/grammars.zip"; 10 | const GRAMMAR_NAME = "Kotlin.tmLanguage.json"; 11 | const GRAMMARS_PATH = path.join(__dirname, "..", "grammars"); 12 | const GRAMMAR_PATH = path.join(GRAMMARS_PATH, GRAMMAR_NAME); 13 | const DOWNLOADS_PATH = path.join(__dirname, "..", "downloads"); 14 | const DOWNLOAD_ZIP_PATH = path.join(DOWNLOADS_PATH, "grammars.zip"); 15 | const DOWNLOAD_GRAMMAR_PATH = path.join(DOWNLOADS_PATH, GRAMMAR_NAME); 16 | 17 | console.log("Downloading grammars..."); 18 | fs.promises.mkdir(DOWNLOADS_PATH, { recursive: true }) 19 | .then(() => { 20 | request.get(GRAMMAR_ZIP_URL) 21 | .on("complete", () => { 22 | console.log("Extracting grammars..."); 23 | extractZip(DOWNLOAD_ZIP_PATH, { dir: DOWNLOADS_PATH }) 24 | .then(() => fs.promises.mkdir(GRAMMARS_PATH, { recursive: true })) 25 | .then(() => fs.promises.copyFile(DOWNLOAD_GRAMMAR_PATH, GRAMMAR_PATH)) 26 | .then(() => fs.promises.unlink(DOWNLOAD_ZIP_PATH)) 27 | .catch(e => console.log(e)); 28 | }) 29 | .on("error", e => console.log(e)) 30 | .pipe(fs.createWriteStream(DOWNLOAD_ZIP_PATH)); 31 | }) 32 | .catch(e => console.log(e)); 33 | --------------------------------------------------------------------------------