├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── README.md ├── client ├── package-lock.json ├── package.json ├── src │ ├── extension.ts │ └── test │ │ ├── completion.test.ts │ │ ├── diagnostics.test.ts │ │ ├── helper.ts │ │ ├── index.ts │ │ └── runTest.ts └── tsconfig.json ├── package-lock.json ├── package.json └── tsconfig.json /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/** 2 | client/node_modules/** 3 | client/out/** 4 | server/node_modules/** 5 | server/out/** -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "@typescript-eslint/parser", 3 | "parserOptions": { 4 | "ecmaVersion": 6, 5 | "sourceType": "module" 6 | }, 7 | "env": { 8 | "node": true 9 | }, 10 | "rules": { 11 | "semi": "error", 12 | "no-extra-semi": "warn", 13 | "curly": "warn", 14 | "quotes": ["error", "single", { "allowTemplateLiterals": true } ], 15 | "eqeqeq": "error", 16 | "indent": ["warn", "tab", { "SwitchCase": 1 } ] 17 | } 18 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | client/server 4 | .vscode-test -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "type": "extensionHost", 7 | "request": "launch", 8 | "name": "Launch Client", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}"], 11 | "outFiles": ["${workspaceRoot}/client/out/**/*.js"], 12 | "preLaunchTask": { 13 | "type": "npm", 14 | "script": "watch" 15 | } 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.insertSpaces": false, 3 | "tslint.enable": true, 4 | "typescript.tsc.autoDetect": "off", 5 | "typescript.preferences.quoteStyle": "single", 6 | "editor.codeActionsOnSave": { 7 | "source.fixAll.eslint": true 8 | } 9 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "npm", 6 | "script": "compile", 7 | "group": "build", 8 | "presentation": { 9 | "panel": "dedicated", 10 | "reveal": "never" 11 | }, 12 | "problemMatcher": [ 13 | "$tsc" 14 | ] 15 | }, 16 | { 17 | "type": "npm", 18 | "script": "watch", 19 | "isBackground": true, 20 | "group": { 21 | "kind": "build", 22 | "isDefault": true 23 | }, 24 | "presentation": { 25 | "panel": "dedicated", 26 | "reveal": "never" 27 | }, 28 | "problemMatcher": [ 29 | "$tsc-watch" 30 | ] 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | **/*.ts 3 | **/*.map 4 | .gitignore 5 | **/tsconfig.json 6 | **/tsconfig.base.json 7 | contributing.md 8 | .travis.yml 9 | client/node_modules/** 10 | !client/node_modules/vscode-jsonrpc/** 11 | !client/node_modules/vscode-languageclient/** 12 | !client/node_modules/vscode-languageserver-protocol/** 13 | !client/node_modules/vscode-languageserver-types/** 14 | !client/node_modules/semver/** 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vscode sqls 2 | 3 | [sqls(SQL Language Server)](https://github.com/lighttiger2505/sqls) Extension for Visual Studio Code 4 | 5 | ## Language Features 6 | 7 | - Auto Completion tables and table columns 8 | - Quick info symbol 9 | 10 | ## How to use this extension? 11 | 12 | 1. Install [sqls](https://github.com/lighttiger2505/sqls#installation) 13 | 1. Install [Visual Studio Code](https://code.visualstudio.com) and vscode-sqls. 14 | - Press `Ctrl+Shift+X` or `Cmd+Shift+X` to open the Extensions pane. 15 | - Find and install the sqls extension. You can also install the extension from the [Marketplace](https://marketplace.visualstudio.com/items?itemName=lighttiger2505.sqls). 16 | - Open any `*.sql` file in VS Code. The extension is now activated. 17 | -------------------------------------------------------------------------------- /client/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lsp-sample-client", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/vscode": { 8 | "version": "1.43.0", 9 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.43.0.tgz", 10 | "integrity": "sha512-kIaR9qzd80rJOxePKpCB/mdy00mz8Apt2QA5Y6rdrKFn13QNFNeP3Hzmsf37Bwh/3cS7QjtAeGSK7wSqAU0sYQ==", 11 | "dev": true 12 | }, 13 | "agent-base": { 14 | "version": "4.3.0", 15 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 16 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 17 | "dev": true, 18 | "requires": { 19 | "es6-promisify": "^5.0.0" 20 | } 21 | }, 22 | "balanced-match": { 23 | "version": "1.0.0", 24 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 25 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 26 | "dev": true 27 | }, 28 | "brace-expansion": { 29 | "version": "1.1.11", 30 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 31 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 32 | "dev": true, 33 | "requires": { 34 | "balanced-match": "^1.0.0", 35 | "concat-map": "0.0.1" 36 | } 37 | }, 38 | "concat-map": { 39 | "version": "0.0.1", 40 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 41 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 42 | "dev": true 43 | }, 44 | "debug": { 45 | "version": "3.1.0", 46 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 47 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 48 | "dev": true, 49 | "requires": { 50 | "ms": "2.0.0" 51 | } 52 | }, 53 | "es6-promise": { 54 | "version": "4.2.8", 55 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 56 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 57 | "dev": true 58 | }, 59 | "es6-promisify": { 60 | "version": "5.0.0", 61 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 62 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 63 | "dev": true, 64 | "requires": { 65 | "es6-promise": "^4.0.3" 66 | } 67 | }, 68 | "fs.realpath": { 69 | "version": "1.0.0", 70 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 71 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 72 | "dev": true 73 | }, 74 | "glob": { 75 | "version": "7.1.6", 76 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 77 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 78 | "dev": true, 79 | "requires": { 80 | "fs.realpath": "^1.0.0", 81 | "inflight": "^1.0.4", 82 | "inherits": "2", 83 | "minimatch": "^3.0.4", 84 | "once": "^1.3.0", 85 | "path-is-absolute": "^1.0.0" 86 | } 87 | }, 88 | "http-proxy-agent": { 89 | "version": "2.1.0", 90 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", 91 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", 92 | "dev": true, 93 | "requires": { 94 | "agent-base": "4", 95 | "debug": "3.1.0" 96 | } 97 | }, 98 | "https-proxy-agent": { 99 | "version": "2.2.4", 100 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 101 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 102 | "dev": true, 103 | "requires": { 104 | "agent-base": "^4.3.0", 105 | "debug": "^3.1.0" 106 | } 107 | }, 108 | "inflight": { 109 | "version": "1.0.6", 110 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 111 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 112 | "dev": true, 113 | "requires": { 114 | "once": "^1.3.0", 115 | "wrappy": "1" 116 | } 117 | }, 118 | "inherits": { 119 | "version": "2.0.4", 120 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 121 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 122 | "dev": true 123 | }, 124 | "minimatch": { 125 | "version": "3.0.4", 126 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 127 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 128 | "dev": true, 129 | "requires": { 130 | "brace-expansion": "^1.1.7" 131 | } 132 | }, 133 | "ms": { 134 | "version": "2.0.0", 135 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 136 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 137 | "dev": true 138 | }, 139 | "once": { 140 | "version": "1.4.0", 141 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 142 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 143 | "dev": true, 144 | "requires": { 145 | "wrappy": "1" 146 | } 147 | }, 148 | "path-is-absolute": { 149 | "version": "1.0.1", 150 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 151 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 152 | "dev": true 153 | }, 154 | "rimraf": { 155 | "version": "2.7.1", 156 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 157 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 158 | "dev": true, 159 | "requires": { 160 | "glob": "^7.1.3" 161 | } 162 | }, 163 | "vscode-jsonrpc": { 164 | "version": "5.0.1", 165 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz", 166 | "integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A==" 167 | }, 168 | "vscode-languageclient": { 169 | "version": "6.1.3", 170 | "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz", 171 | "integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==", 172 | "requires": { 173 | "semver": "^6.3.0", 174 | "vscode-languageserver-protocol": "^3.15.3" 175 | }, 176 | "dependencies": { 177 | "semver": { 178 | "version": "6.3.0", 179 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 180 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 181 | } 182 | } 183 | }, 184 | "vscode-languageserver-protocol": { 185 | "version": "3.15.3", 186 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz", 187 | "integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==", 188 | "requires": { 189 | "vscode-jsonrpc": "^5.0.1", 190 | "vscode-languageserver-types": "3.15.1" 191 | } 192 | }, 193 | "vscode-languageserver-types": { 194 | "version": "3.15.1", 195 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", 196 | "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" 197 | }, 198 | "vscode-test": { 199 | "version": "1.3.0", 200 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.3.0.tgz", 201 | "integrity": "sha512-LddukcBiSU2FVTDr3c1D8lwkiOvwlJdDL2hqVbn6gIz+rpTqUCkMZSKYm94Y1v0WXlHSDQBsXyY+tchWQgGVsw==", 202 | "dev": true, 203 | "requires": { 204 | "http-proxy-agent": "^2.1.0", 205 | "https-proxy-agent": "^2.2.4", 206 | "rimraf": "^2.6.3" 207 | } 208 | }, 209 | "wrappy": { 210 | "version": "1.0.2", 211 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 212 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 213 | "dev": true 214 | } 215 | } 216 | } 217 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lsp-sample-client", 3 | "description": "VSCode part of a language server", 4 | "author": "Microsoft Corporation", 5 | "license": "MIT", 6 | "version": "0.0.1", 7 | "publisher": "vscode", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/Microsoft/vscode-extension-samples" 11 | }, 12 | "engines": { 13 | "vscode": "^1.43.0" 14 | }, 15 | "dependencies": { 16 | "vscode-languageclient": "^6.1.3" 17 | }, 18 | "devDependencies": { 19 | "@types/vscode": "1.43.0", 20 | "vscode-test": "^1.3.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /client/src/extension.ts: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | * ------------------------------------------------------------------------------------------ */ 5 | 6 | import { ExtensionContext } from 'vscode'; 7 | 8 | import { 9 | LanguageClient, 10 | LanguageClientOptions, 11 | ServerOptions, 12 | } from 'vscode-languageclient'; 13 | 14 | import vscode = require('vscode'); 15 | 16 | let client: LanguageClient; 17 | 18 | export function activate(context: ExtensionContext) { 19 | const config = parseLanguageServerConfig(); 20 | let serverOptions: ServerOptions = { 21 | command: "sqls", 22 | 23 | args: [...config.flags], 24 | }; 25 | 26 | let clientOptions: LanguageClientOptions = { 27 | documentSelector: [{ scheme: 'file', language: 'sql', pattern: '**/*.sql' }], 28 | }; 29 | 30 | client = new LanguageClient( 31 | 'languageServerExample', 32 | serverOptions, 33 | clientOptions, 34 | ); 35 | client.start(); 36 | } 37 | 38 | export function deactivate(): Thenable | undefined { 39 | if (!client) { 40 | return undefined; 41 | } 42 | return client.stop(); 43 | } 44 | 45 | interface LanguageServerConfig { 46 | flags: string[]; 47 | } 48 | 49 | export function parseLanguageServerConfig(): LanguageServerConfig { 50 | const sqlsConfig = getSqlsConfig(); 51 | const config = { 52 | flags: sqlsConfig['languageServerFlags'] || [], 53 | }; 54 | return config; 55 | } 56 | 57 | export function getSqlsConfig(uri?: vscode.Uri): vscode.WorkspaceConfiguration { 58 | if (!uri) { 59 | if (vscode.window.activeTextEditor) { 60 | uri = vscode.window.activeTextEditor.document.uri; 61 | } else { 62 | uri = null; 63 | } 64 | } 65 | return vscode.workspace.getConfiguration('sqls', uri); 66 | } 67 | -------------------------------------------------------------------------------- /client/src/test/completion.test.ts: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | * ------------------------------------------------------------------------------------------ */ 5 | 6 | import * as vscode from 'vscode'; 7 | import * as assert from 'assert'; 8 | import { getDocUri, activate } from './helper'; 9 | 10 | suite('Should do completion', () => { 11 | const docUri = getDocUri('completion.txt'); 12 | 13 | test('Completes JS/TS in txt file', async () => { 14 | await testCompletion(docUri, new vscode.Position(0, 0), { 15 | items: [ 16 | { label: 'JavaScript', kind: vscode.CompletionItemKind.Text }, 17 | { label: 'TypeScript', kind: vscode.CompletionItemKind.Text } 18 | ] 19 | }); 20 | }); 21 | }); 22 | 23 | async function testCompletion( 24 | docUri: vscode.Uri, 25 | position: vscode.Position, 26 | expectedCompletionList: vscode.CompletionList 27 | ) { 28 | await activate(docUri); 29 | 30 | // Executing the command `vscode.executeCompletionItemProvider` to simulate triggering completion 31 | const actualCompletionList = (await vscode.commands.executeCommand( 32 | 'vscode.executeCompletionItemProvider', 33 | docUri, 34 | position 35 | )) as vscode.CompletionList; 36 | 37 | assert.ok(actualCompletionList.items.length >= 2); 38 | expectedCompletionList.items.forEach((expectedItem, i) => { 39 | const actualItem = actualCompletionList.items[i]; 40 | assert.equal(actualItem.label, expectedItem.label); 41 | assert.equal(actualItem.kind, expectedItem.kind); 42 | }); 43 | } 44 | -------------------------------------------------------------------------------- /client/src/test/diagnostics.test.ts: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | * ------------------------------------------------------------------------------------------ */ 5 | 6 | import * as vscode from 'vscode'; 7 | import * as assert from 'assert'; 8 | import { getDocUri, activate } from './helper'; 9 | 10 | suite('Should get diagnostics', () => { 11 | const docUri = getDocUri('diagnostics.txt'); 12 | 13 | test('Diagnoses uppercase texts', async () => { 14 | await testDiagnostics(docUri, [ 15 | { message: 'ANY is all uppercase.', range: toRange(0, 0, 0, 3), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }, 16 | { message: 'ANY is all uppercase.', range: toRange(0, 14, 0, 17), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }, 17 | { message: 'OS is all uppercase.', range: toRange(0, 18, 0, 20), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' } 18 | ]); 19 | }); 20 | }); 21 | 22 | function toRange(sLine: number, sChar: number, eLine: number, eChar: number) { 23 | const start = new vscode.Position(sLine, sChar); 24 | const end = new vscode.Position(eLine, eChar); 25 | return new vscode.Range(start, end); 26 | } 27 | 28 | async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) { 29 | await activate(docUri); 30 | 31 | const actualDiagnostics = vscode.languages.getDiagnostics(docUri); 32 | 33 | assert.equal(actualDiagnostics.length, expectedDiagnostics.length); 34 | 35 | expectedDiagnostics.forEach((expectedDiagnostic, i) => { 36 | const actualDiagnostic = actualDiagnostics[i]; 37 | assert.equal(actualDiagnostic.message, expectedDiagnostic.message); 38 | assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range); 39 | assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity); 40 | }); 41 | } -------------------------------------------------------------------------------- /client/src/test/helper.ts: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | * ------------------------------------------------------------------------------------------ */ 5 | 6 | import * as vscode from 'vscode'; 7 | import * as path from 'path'; 8 | 9 | export let doc: vscode.TextDocument; 10 | export let editor: vscode.TextEditor; 11 | export let documentEol: string; 12 | export let platformEol: string; 13 | 14 | /** 15 | * Activates the vscode.lsp-sample extension 16 | */ 17 | export async function activate(docUri: vscode.Uri) { 18 | // The extensionId is `publisher.name` from package.json 19 | const ext = vscode.extensions.getExtension('vscode-samples.lsp-sample')!; 20 | await ext.activate(); 21 | try { 22 | doc = await vscode.workspace.openTextDocument(docUri); 23 | editor = await vscode.window.showTextDocument(doc); 24 | await sleep(2000); // Wait for server activation 25 | } catch (e) { 26 | console.error(e); 27 | } 28 | } 29 | 30 | async function sleep(ms: number) { 31 | return new Promise(resolve => setTimeout(resolve, ms)); 32 | } 33 | 34 | export const getDocPath = (p: string) => { 35 | return path.resolve(__dirname, '../../testFixture', p); 36 | }; 37 | export const getDocUri = (p: string) => { 38 | return vscode.Uri.file(getDocPath(p)); 39 | }; 40 | 41 | export async function setTestContent(content: string): Promise { 42 | const all = new vscode.Range( 43 | doc.positionAt(0), 44 | doc.positionAt(doc.getText().length) 45 | ); 46 | return editor.edit(eb => eb.replace(all, content)); 47 | } 48 | -------------------------------------------------------------------------------- /client/src/test/index.ts: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | * ------------------------------------------------------------------------------------------ */ 5 | import * as path from 'path'; 6 | import * as Mocha from 'mocha'; 7 | import * as glob from 'glob'; 8 | 9 | export function run(): Promise { 10 | // Create the mocha test 11 | const mocha = new Mocha({ 12 | ui: 'tdd', 13 | }); 14 | mocha.useColors(true); 15 | mocha.timeout(100000); 16 | 17 | const testsRoot = __dirname; 18 | 19 | return new Promise((resolve, reject) => { 20 | glob('**.test.js', { cwd: testsRoot }, (err, files) => { 21 | if (err) { 22 | return reject(err); 23 | } 24 | 25 | // Add files to the test suite 26 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 27 | 28 | try { 29 | // Run the mocha test 30 | mocha.run(failures => { 31 | if (failures > 0) { 32 | reject(new Error(`${failures} tests failed.`)); 33 | } else { 34 | resolve(); 35 | } 36 | }); 37 | } catch (err) { 38 | console.error(err); 39 | reject(err); 40 | } 41 | }); 42 | }); 43 | } -------------------------------------------------------------------------------- /client/src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | import * as path from 'path'; 6 | 7 | import { runTests } from 'vscode-test'; 8 | 9 | async function main() { 10 | try { 11 | // The folder containing the Extension Manifest package.json 12 | // Passed to `--extensionDevelopmentPath` 13 | const extensionDevelopmentPath = path.resolve(__dirname, '../../../'); 14 | 15 | // The path to test runner 16 | // Passed to --extensionTestsPath 17 | const extensionTestsPath = path.resolve(__dirname, './index'); 18 | 19 | // Download VS Code, unzip it and run the integration test 20 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 21 | } catch (err) { 22 | console.error('Failed to run tests'); 23 | process.exit(1); 24 | } 25 | } 26 | 27 | main(); -------------------------------------------------------------------------------- /client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "rootDir": "src", 7 | "sourceMap": true 8 | }, 9 | "include": ["src"], 10 | "exclude": ["node_modules", ".vscode-test"] 11 | } 12 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lsp-sample", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.0.0", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/highlight": { 17 | "version": "7.0.0", 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", 19 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", 20 | "dev": true, 21 | "requires": { 22 | "chalk": "^2.0.0", 23 | "esutils": "^2.0.2", 24 | "js-tokens": "^4.0.0" 25 | } 26 | }, 27 | "@types/color-name": { 28 | "version": "1.1.1", 29 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 30 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 31 | "dev": true 32 | }, 33 | "@types/eslint-visitor-keys": { 34 | "version": "1.0.0", 35 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 36 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", 37 | "dev": true 38 | }, 39 | "@types/json-schema": { 40 | "version": "7.0.4", 41 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", 42 | "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", 43 | "dev": true 44 | }, 45 | "@types/mocha": { 46 | "version": "5.2.7", 47 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", 48 | "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", 49 | "dev": true 50 | }, 51 | "@types/node": { 52 | "version": "12.12.35", 53 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", 54 | "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==", 55 | "dev": true 56 | }, 57 | "@typescript-eslint/experimental-utils": { 58 | "version": "2.25.0", 59 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz", 60 | "integrity": "sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw==", 61 | "dev": true, 62 | "requires": { 63 | "@types/json-schema": "^7.0.3", 64 | "@typescript-eslint/typescript-estree": "2.25.0", 65 | "eslint-scope": "^5.0.0", 66 | "eslint-utils": "^2.0.0" 67 | } 68 | }, 69 | "@typescript-eslint/parser": { 70 | "version": "2.25.0", 71 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.25.0.tgz", 72 | "integrity": "sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg==", 73 | "dev": true, 74 | "requires": { 75 | "@types/eslint-visitor-keys": "^1.0.0", 76 | "@typescript-eslint/experimental-utils": "2.25.0", 77 | "@typescript-eslint/typescript-estree": "2.25.0", 78 | "eslint-visitor-keys": "^1.1.0" 79 | } 80 | }, 81 | "@typescript-eslint/typescript-estree": { 82 | "version": "2.25.0", 83 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz", 84 | "integrity": "sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg==", 85 | "dev": true, 86 | "requires": { 87 | "debug": "^4.1.1", 88 | "eslint-visitor-keys": "^1.1.0", 89 | "glob": "^7.1.6", 90 | "is-glob": "^4.0.1", 91 | "lodash": "^4.17.15", 92 | "semver": "^6.3.0", 93 | "tsutils": "^3.17.1" 94 | }, 95 | "dependencies": { 96 | "debug": { 97 | "version": "4.1.1", 98 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 99 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 100 | "dev": true, 101 | "requires": { 102 | "ms": "^2.1.1" 103 | } 104 | }, 105 | "glob": { 106 | "version": "7.1.6", 107 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 108 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 109 | "dev": true, 110 | "requires": { 111 | "fs.realpath": "^1.0.0", 112 | "inflight": "^1.0.4", 113 | "inherits": "2", 114 | "minimatch": "^3.0.4", 115 | "once": "^1.3.0", 116 | "path-is-absolute": "^1.0.0" 117 | } 118 | }, 119 | "semver": { 120 | "version": "6.3.0", 121 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 122 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 123 | "dev": true 124 | }, 125 | "tsutils": { 126 | "version": "3.17.1", 127 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", 128 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", 129 | "dev": true, 130 | "requires": { 131 | "tslib": "^1.8.1" 132 | } 133 | } 134 | } 135 | }, 136 | "acorn": { 137 | "version": "7.1.1", 138 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", 139 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", 140 | "dev": true 141 | }, 142 | "acorn-jsx": { 143 | "version": "5.2.0", 144 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 145 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 146 | "dev": true 147 | }, 148 | "ajv": { 149 | "version": "6.12.0", 150 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", 151 | "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", 152 | "dev": true, 153 | "requires": { 154 | "fast-deep-equal": "^3.1.1", 155 | "fast-json-stable-stringify": "^2.0.0", 156 | "json-schema-traverse": "^0.4.1", 157 | "uri-js": "^4.2.2" 158 | } 159 | }, 160 | "ansi-colors": { 161 | "version": "3.2.3", 162 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", 163 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", 164 | "dev": true 165 | }, 166 | "ansi-escapes": { 167 | "version": "4.3.1", 168 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 169 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 170 | "dev": true, 171 | "requires": { 172 | "type-fest": "^0.11.0" 173 | }, 174 | "dependencies": { 175 | "type-fest": { 176 | "version": "0.11.0", 177 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 178 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", 179 | "dev": true 180 | } 181 | } 182 | }, 183 | "ansi-regex": { 184 | "version": "3.0.0", 185 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 186 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 187 | "dev": true 188 | }, 189 | "ansi-styles": { 190 | "version": "3.2.1", 191 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 192 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 193 | "dev": true, 194 | "requires": { 195 | "color-convert": "^1.9.0" 196 | } 197 | }, 198 | "argparse": { 199 | "version": "1.0.10", 200 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 201 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 202 | "dev": true, 203 | "requires": { 204 | "sprintf-js": "~1.0.2" 205 | } 206 | }, 207 | "astral-regex": { 208 | "version": "1.0.0", 209 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 210 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 211 | "dev": true 212 | }, 213 | "balanced-match": { 214 | "version": "1.0.0", 215 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 216 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 217 | "dev": true 218 | }, 219 | "brace-expansion": { 220 | "version": "1.1.11", 221 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 222 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 223 | "dev": true, 224 | "requires": { 225 | "balanced-match": "^1.0.0", 226 | "concat-map": "0.0.1" 227 | } 228 | }, 229 | "browser-stdout": { 230 | "version": "1.3.1", 231 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 232 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 233 | "dev": true 234 | }, 235 | "callsites": { 236 | "version": "3.1.0", 237 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 238 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 239 | "dev": true 240 | }, 241 | "camelcase": { 242 | "version": "5.3.1", 243 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 244 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 245 | "dev": true 246 | }, 247 | "chalk": { 248 | "version": "2.4.2", 249 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 250 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 251 | "dev": true, 252 | "requires": { 253 | "ansi-styles": "^3.2.1", 254 | "escape-string-regexp": "^1.0.5", 255 | "supports-color": "^5.3.0" 256 | } 257 | }, 258 | "chardet": { 259 | "version": "0.7.0", 260 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 261 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 262 | "dev": true 263 | }, 264 | "cli-cursor": { 265 | "version": "3.1.0", 266 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 267 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 268 | "dev": true, 269 | "requires": { 270 | "restore-cursor": "^3.1.0" 271 | } 272 | }, 273 | "cli-width": { 274 | "version": "2.2.0", 275 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 276 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 277 | "dev": true 278 | }, 279 | "cliui": { 280 | "version": "5.0.0", 281 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 282 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 283 | "dev": true, 284 | "requires": { 285 | "string-width": "^3.1.0", 286 | "strip-ansi": "^5.2.0", 287 | "wrap-ansi": "^5.1.0" 288 | }, 289 | "dependencies": { 290 | "ansi-regex": { 291 | "version": "4.1.0", 292 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 293 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 294 | "dev": true 295 | }, 296 | "string-width": { 297 | "version": "3.1.0", 298 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 299 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 300 | "dev": true, 301 | "requires": { 302 | "emoji-regex": "^7.0.1", 303 | "is-fullwidth-code-point": "^2.0.0", 304 | "strip-ansi": "^5.1.0" 305 | } 306 | }, 307 | "strip-ansi": { 308 | "version": "5.2.0", 309 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 310 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 311 | "dev": true, 312 | "requires": { 313 | "ansi-regex": "^4.1.0" 314 | } 315 | } 316 | } 317 | }, 318 | "color-convert": { 319 | "version": "1.9.3", 320 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 321 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 322 | "dev": true, 323 | "requires": { 324 | "color-name": "1.1.3" 325 | } 326 | }, 327 | "color-name": { 328 | "version": "1.1.3", 329 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 330 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 331 | "dev": true 332 | }, 333 | "concat-map": { 334 | "version": "0.0.1", 335 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 336 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 337 | "dev": true 338 | }, 339 | "cross-spawn": { 340 | "version": "6.0.5", 341 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 342 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 343 | "dev": true, 344 | "requires": { 345 | "nice-try": "^1.0.4", 346 | "path-key": "^2.0.1", 347 | "semver": "^5.5.0", 348 | "shebang-command": "^1.2.0", 349 | "which": "^1.2.9" 350 | } 351 | }, 352 | "debug": { 353 | "version": "3.2.6", 354 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 355 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 356 | "dev": true, 357 | "requires": { 358 | "ms": "^2.1.1" 359 | } 360 | }, 361 | "decamelize": { 362 | "version": "1.2.0", 363 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 364 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 365 | "dev": true 366 | }, 367 | "deep-is": { 368 | "version": "0.1.3", 369 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 370 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 371 | "dev": true 372 | }, 373 | "define-properties": { 374 | "version": "1.1.3", 375 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 376 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 377 | "dev": true, 378 | "requires": { 379 | "object-keys": "^1.0.12" 380 | } 381 | }, 382 | "diff": { 383 | "version": "3.5.0", 384 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 385 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 386 | "dev": true 387 | }, 388 | "doctrine": { 389 | "version": "3.0.0", 390 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 391 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 392 | "dev": true, 393 | "requires": { 394 | "esutils": "^2.0.2" 395 | } 396 | }, 397 | "emoji-regex": { 398 | "version": "7.0.3", 399 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 400 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 401 | "dev": true 402 | }, 403 | "es-abstract": { 404 | "version": "1.17.5", 405 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", 406 | "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", 407 | "dev": true, 408 | "requires": { 409 | "es-to-primitive": "^1.2.1", 410 | "function-bind": "^1.1.1", 411 | "has": "^1.0.3", 412 | "has-symbols": "^1.0.1", 413 | "is-callable": "^1.1.5", 414 | "is-regex": "^1.0.5", 415 | "object-inspect": "^1.7.0", 416 | "object-keys": "^1.1.1", 417 | "object.assign": "^4.1.0", 418 | "string.prototype.trimleft": "^2.1.1", 419 | "string.prototype.trimright": "^2.1.1" 420 | } 421 | }, 422 | "es-to-primitive": { 423 | "version": "1.2.1", 424 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 425 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 426 | "dev": true, 427 | "requires": { 428 | "is-callable": "^1.1.4", 429 | "is-date-object": "^1.0.1", 430 | "is-symbol": "^1.0.2" 431 | } 432 | }, 433 | "escape-string-regexp": { 434 | "version": "1.0.5", 435 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 436 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 437 | "dev": true 438 | }, 439 | "eslint": { 440 | "version": "6.8.0", 441 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 442 | "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 443 | "dev": true, 444 | "requires": { 445 | "@babel/code-frame": "^7.0.0", 446 | "ajv": "^6.10.0", 447 | "chalk": "^2.1.0", 448 | "cross-spawn": "^6.0.5", 449 | "debug": "^4.0.1", 450 | "doctrine": "^3.0.0", 451 | "eslint-scope": "^5.0.0", 452 | "eslint-utils": "^1.4.3", 453 | "eslint-visitor-keys": "^1.1.0", 454 | "espree": "^6.1.2", 455 | "esquery": "^1.0.1", 456 | "esutils": "^2.0.2", 457 | "file-entry-cache": "^5.0.1", 458 | "functional-red-black-tree": "^1.0.1", 459 | "glob-parent": "^5.0.0", 460 | "globals": "^12.1.0", 461 | "ignore": "^4.0.6", 462 | "import-fresh": "^3.0.0", 463 | "imurmurhash": "^0.1.4", 464 | "inquirer": "^7.0.0", 465 | "is-glob": "^4.0.0", 466 | "js-yaml": "^3.13.1", 467 | "json-stable-stringify-without-jsonify": "^1.0.1", 468 | "levn": "^0.3.0", 469 | "lodash": "^4.17.14", 470 | "minimatch": "^3.0.4", 471 | "mkdirp": "^0.5.1", 472 | "natural-compare": "^1.4.0", 473 | "optionator": "^0.8.3", 474 | "progress": "^2.0.0", 475 | "regexpp": "^2.0.1", 476 | "semver": "^6.1.2", 477 | "strip-ansi": "^5.2.0", 478 | "strip-json-comments": "^3.0.1", 479 | "table": "^5.2.3", 480 | "text-table": "^0.2.0", 481 | "v8-compile-cache": "^2.0.3" 482 | }, 483 | "dependencies": { 484 | "ansi-regex": { 485 | "version": "4.1.0", 486 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 487 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 488 | "dev": true 489 | }, 490 | "debug": { 491 | "version": "4.1.1", 492 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 493 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 494 | "dev": true, 495 | "requires": { 496 | "ms": "^2.1.1" 497 | } 498 | }, 499 | "eslint-utils": { 500 | "version": "1.4.3", 501 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 502 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 503 | "dev": true, 504 | "requires": { 505 | "eslint-visitor-keys": "^1.1.0" 506 | } 507 | }, 508 | "semver": { 509 | "version": "6.3.0", 510 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 511 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 512 | "dev": true 513 | }, 514 | "strip-ansi": { 515 | "version": "5.2.0", 516 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 517 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 518 | "dev": true, 519 | "requires": { 520 | "ansi-regex": "^4.1.0" 521 | } 522 | }, 523 | "strip-json-comments": { 524 | "version": "3.0.1", 525 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 526 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 527 | "dev": true 528 | } 529 | } 530 | }, 531 | "eslint-scope": { 532 | "version": "5.0.0", 533 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 534 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 535 | "dev": true, 536 | "requires": { 537 | "esrecurse": "^4.1.0", 538 | "estraverse": "^4.1.1" 539 | } 540 | }, 541 | "eslint-utils": { 542 | "version": "2.0.0", 543 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 544 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 545 | "dev": true, 546 | "requires": { 547 | "eslint-visitor-keys": "^1.1.0" 548 | } 549 | }, 550 | "eslint-visitor-keys": { 551 | "version": "1.1.0", 552 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 553 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 554 | "dev": true 555 | }, 556 | "espree": { 557 | "version": "6.2.1", 558 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", 559 | "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", 560 | "dev": true, 561 | "requires": { 562 | "acorn": "^7.1.1", 563 | "acorn-jsx": "^5.2.0", 564 | "eslint-visitor-keys": "^1.1.0" 565 | } 566 | }, 567 | "esprima": { 568 | "version": "4.0.1", 569 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 570 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 571 | "dev": true 572 | }, 573 | "esquery": { 574 | "version": "1.2.0", 575 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", 576 | "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", 577 | "dev": true, 578 | "requires": { 579 | "estraverse": "^5.0.0" 580 | }, 581 | "dependencies": { 582 | "estraverse": { 583 | "version": "5.0.0", 584 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", 585 | "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", 586 | "dev": true 587 | } 588 | } 589 | }, 590 | "esrecurse": { 591 | "version": "4.2.1", 592 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 593 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 594 | "dev": true, 595 | "requires": { 596 | "estraverse": "^4.1.0" 597 | } 598 | }, 599 | "estraverse": { 600 | "version": "4.3.0", 601 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 602 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 603 | "dev": true 604 | }, 605 | "esutils": { 606 | "version": "2.0.2", 607 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 608 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 609 | "dev": true 610 | }, 611 | "external-editor": { 612 | "version": "3.1.0", 613 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 614 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 615 | "dev": true, 616 | "requires": { 617 | "chardet": "^0.7.0", 618 | "iconv-lite": "^0.4.24", 619 | "tmp": "^0.0.33" 620 | } 621 | }, 622 | "fast-deep-equal": { 623 | "version": "3.1.1", 624 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 625 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 626 | "dev": true 627 | }, 628 | "fast-json-stable-stringify": { 629 | "version": "2.1.0", 630 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 631 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 632 | "dev": true 633 | }, 634 | "fast-levenshtein": { 635 | "version": "2.0.6", 636 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 637 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 638 | "dev": true 639 | }, 640 | "figures": { 641 | "version": "3.2.0", 642 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 643 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 644 | "dev": true, 645 | "requires": { 646 | "escape-string-regexp": "^1.0.5" 647 | } 648 | }, 649 | "file-entry-cache": { 650 | "version": "5.0.1", 651 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 652 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 653 | "dev": true, 654 | "requires": { 655 | "flat-cache": "^2.0.1" 656 | } 657 | }, 658 | "find-up": { 659 | "version": "3.0.0", 660 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 661 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 662 | "dev": true, 663 | "requires": { 664 | "locate-path": "^3.0.0" 665 | } 666 | }, 667 | "flat": { 668 | "version": "4.1.0", 669 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", 670 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", 671 | "dev": true, 672 | "requires": { 673 | "is-buffer": "~2.0.3" 674 | } 675 | }, 676 | "flat-cache": { 677 | "version": "2.0.1", 678 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 679 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 680 | "dev": true, 681 | "requires": { 682 | "flatted": "^2.0.0", 683 | "rimraf": "2.6.3", 684 | "write": "1.0.3" 685 | } 686 | }, 687 | "flatted": { 688 | "version": "2.0.1", 689 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 690 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 691 | "dev": true 692 | }, 693 | "fs.realpath": { 694 | "version": "1.0.0", 695 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 696 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 697 | "dev": true 698 | }, 699 | "function-bind": { 700 | "version": "1.1.1", 701 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 702 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 703 | "dev": true 704 | }, 705 | "functional-red-black-tree": { 706 | "version": "1.0.1", 707 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 708 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 709 | "dev": true 710 | }, 711 | "get-caller-file": { 712 | "version": "2.0.5", 713 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 714 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 715 | "dev": true 716 | }, 717 | "glob": { 718 | "version": "7.1.4", 719 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 720 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 721 | "dev": true, 722 | "requires": { 723 | "fs.realpath": "^1.0.0", 724 | "inflight": "^1.0.4", 725 | "inherits": "2", 726 | "minimatch": "^3.0.4", 727 | "once": "^1.3.0", 728 | "path-is-absolute": "^1.0.0" 729 | } 730 | }, 731 | "glob-parent": { 732 | "version": "5.1.1", 733 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 734 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 735 | "dev": true, 736 | "requires": { 737 | "is-glob": "^4.0.1" 738 | } 739 | }, 740 | "globals": { 741 | "version": "12.4.0", 742 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 743 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 744 | "dev": true, 745 | "requires": { 746 | "type-fest": "^0.8.1" 747 | } 748 | }, 749 | "growl": { 750 | "version": "1.10.5", 751 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 752 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 753 | "dev": true 754 | }, 755 | "has": { 756 | "version": "1.0.3", 757 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 758 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 759 | "dev": true, 760 | "requires": { 761 | "function-bind": "^1.1.1" 762 | } 763 | }, 764 | "has-flag": { 765 | "version": "3.0.0", 766 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 767 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 768 | "dev": true 769 | }, 770 | "has-symbols": { 771 | "version": "1.0.1", 772 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 773 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 774 | "dev": true 775 | }, 776 | "he": { 777 | "version": "1.2.0", 778 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 779 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 780 | "dev": true 781 | }, 782 | "iconv-lite": { 783 | "version": "0.4.24", 784 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 785 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 786 | "dev": true, 787 | "requires": { 788 | "safer-buffer": ">= 2.1.2 < 3" 789 | } 790 | }, 791 | "ignore": { 792 | "version": "4.0.6", 793 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 794 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 795 | "dev": true 796 | }, 797 | "import-fresh": { 798 | "version": "3.2.1", 799 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 800 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 801 | "dev": true, 802 | "requires": { 803 | "parent-module": "^1.0.0", 804 | "resolve-from": "^4.0.0" 805 | } 806 | }, 807 | "imurmurhash": { 808 | "version": "0.1.4", 809 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 810 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 811 | "dev": true 812 | }, 813 | "inflight": { 814 | "version": "1.0.6", 815 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 816 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 817 | "dev": true, 818 | "requires": { 819 | "once": "^1.3.0", 820 | "wrappy": "1" 821 | } 822 | }, 823 | "inherits": { 824 | "version": "2.0.3", 825 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 826 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 827 | "dev": true 828 | }, 829 | "inquirer": { 830 | "version": "7.1.0", 831 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", 832 | "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", 833 | "dev": true, 834 | "requires": { 835 | "ansi-escapes": "^4.2.1", 836 | "chalk": "^3.0.0", 837 | "cli-cursor": "^3.1.0", 838 | "cli-width": "^2.0.0", 839 | "external-editor": "^3.0.3", 840 | "figures": "^3.0.0", 841 | "lodash": "^4.17.15", 842 | "mute-stream": "0.0.8", 843 | "run-async": "^2.4.0", 844 | "rxjs": "^6.5.3", 845 | "string-width": "^4.1.0", 846 | "strip-ansi": "^6.0.0", 847 | "through": "^2.3.6" 848 | }, 849 | "dependencies": { 850 | "ansi-regex": { 851 | "version": "5.0.0", 852 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 853 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 854 | "dev": true 855 | }, 856 | "ansi-styles": { 857 | "version": "4.2.1", 858 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 859 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 860 | "dev": true, 861 | "requires": { 862 | "@types/color-name": "^1.1.1", 863 | "color-convert": "^2.0.1" 864 | } 865 | }, 866 | "chalk": { 867 | "version": "3.0.0", 868 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 869 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 870 | "dev": true, 871 | "requires": { 872 | "ansi-styles": "^4.1.0", 873 | "supports-color": "^7.1.0" 874 | } 875 | }, 876 | "color-convert": { 877 | "version": "2.0.1", 878 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 879 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 880 | "dev": true, 881 | "requires": { 882 | "color-name": "~1.1.4" 883 | } 884 | }, 885 | "color-name": { 886 | "version": "1.1.4", 887 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 888 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 889 | "dev": true 890 | }, 891 | "emoji-regex": { 892 | "version": "8.0.0", 893 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 894 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 895 | "dev": true 896 | }, 897 | "has-flag": { 898 | "version": "4.0.0", 899 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 900 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 901 | "dev": true 902 | }, 903 | "is-fullwidth-code-point": { 904 | "version": "3.0.0", 905 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 906 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 907 | "dev": true 908 | }, 909 | "string-width": { 910 | "version": "4.2.0", 911 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 912 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 913 | "dev": true, 914 | "requires": { 915 | "emoji-regex": "^8.0.0", 916 | "is-fullwidth-code-point": "^3.0.0", 917 | "strip-ansi": "^6.0.0" 918 | } 919 | }, 920 | "strip-ansi": { 921 | "version": "6.0.0", 922 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 923 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 924 | "dev": true, 925 | "requires": { 926 | "ansi-regex": "^5.0.0" 927 | } 928 | }, 929 | "supports-color": { 930 | "version": "7.1.0", 931 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 932 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 933 | "dev": true, 934 | "requires": { 935 | "has-flag": "^4.0.0" 936 | } 937 | } 938 | } 939 | }, 940 | "is-buffer": { 941 | "version": "2.0.4", 942 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", 943 | "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", 944 | "dev": true 945 | }, 946 | "is-callable": { 947 | "version": "1.1.5", 948 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", 949 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", 950 | "dev": true 951 | }, 952 | "is-date-object": { 953 | "version": "1.0.2", 954 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 955 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 956 | "dev": true 957 | }, 958 | "is-extglob": { 959 | "version": "2.1.1", 960 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 961 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 962 | "dev": true 963 | }, 964 | "is-fullwidth-code-point": { 965 | "version": "2.0.0", 966 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 967 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 968 | "dev": true 969 | }, 970 | "is-glob": { 971 | "version": "4.0.1", 972 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 973 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 974 | "dev": true, 975 | "requires": { 976 | "is-extglob": "^2.1.1" 977 | } 978 | }, 979 | "is-promise": { 980 | "version": "2.1.0", 981 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 982 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 983 | "dev": true 984 | }, 985 | "is-regex": { 986 | "version": "1.0.5", 987 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", 988 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", 989 | "dev": true, 990 | "requires": { 991 | "has": "^1.0.3" 992 | } 993 | }, 994 | "is-symbol": { 995 | "version": "1.0.3", 996 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 997 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 998 | "dev": true, 999 | "requires": { 1000 | "has-symbols": "^1.0.1" 1001 | } 1002 | }, 1003 | "isexe": { 1004 | "version": "2.0.0", 1005 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1006 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1007 | "dev": true 1008 | }, 1009 | "js-tokens": { 1010 | "version": "4.0.0", 1011 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1012 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1013 | "dev": true 1014 | }, 1015 | "js-yaml": { 1016 | "version": "3.13.1", 1017 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1018 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1019 | "dev": true, 1020 | "requires": { 1021 | "argparse": "^1.0.7", 1022 | "esprima": "^4.0.0" 1023 | } 1024 | }, 1025 | "json-schema-traverse": { 1026 | "version": "0.4.1", 1027 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1028 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1029 | "dev": true 1030 | }, 1031 | "json-stable-stringify-without-jsonify": { 1032 | "version": "1.0.1", 1033 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1034 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1035 | "dev": true 1036 | }, 1037 | "levn": { 1038 | "version": "0.3.0", 1039 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1040 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1041 | "dev": true, 1042 | "requires": { 1043 | "prelude-ls": "~1.1.2", 1044 | "type-check": "~0.3.2" 1045 | } 1046 | }, 1047 | "locate-path": { 1048 | "version": "3.0.0", 1049 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1050 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1051 | "dev": true, 1052 | "requires": { 1053 | "p-locate": "^3.0.0", 1054 | "path-exists": "^3.0.0" 1055 | } 1056 | }, 1057 | "lodash": { 1058 | "version": "4.17.15", 1059 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1060 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1061 | "dev": true 1062 | }, 1063 | "log-symbols": { 1064 | "version": "2.2.0", 1065 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 1066 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 1067 | "dev": true, 1068 | "requires": { 1069 | "chalk": "^2.0.1" 1070 | } 1071 | }, 1072 | "mimic-fn": { 1073 | "version": "2.1.0", 1074 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1075 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1076 | "dev": true 1077 | }, 1078 | "minimatch": { 1079 | "version": "3.0.4", 1080 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1081 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1082 | "dev": true, 1083 | "requires": { 1084 | "brace-expansion": "^1.1.7" 1085 | } 1086 | }, 1087 | "minimist": { 1088 | "version": "0.0.8", 1089 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1090 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1091 | "dev": true 1092 | }, 1093 | "mkdirp": { 1094 | "version": "0.5.1", 1095 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1096 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1097 | "dev": true, 1098 | "requires": { 1099 | "minimist": "0.0.8" 1100 | } 1101 | }, 1102 | "mocha": { 1103 | "version": "6.2.3", 1104 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", 1105 | "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", 1106 | "dev": true, 1107 | "requires": { 1108 | "ansi-colors": "3.2.3", 1109 | "browser-stdout": "1.3.1", 1110 | "debug": "3.2.6", 1111 | "diff": "3.5.0", 1112 | "escape-string-regexp": "1.0.5", 1113 | "find-up": "3.0.0", 1114 | "glob": "7.1.3", 1115 | "growl": "1.10.5", 1116 | "he": "1.2.0", 1117 | "js-yaml": "3.13.1", 1118 | "log-symbols": "2.2.0", 1119 | "minimatch": "3.0.4", 1120 | "mkdirp": "0.5.4", 1121 | "ms": "2.1.1", 1122 | "node-environment-flags": "1.0.5", 1123 | "object.assign": "4.1.0", 1124 | "strip-json-comments": "2.0.1", 1125 | "supports-color": "6.0.0", 1126 | "which": "1.3.1", 1127 | "wide-align": "1.1.3", 1128 | "yargs": "13.3.2", 1129 | "yargs-parser": "13.1.2", 1130 | "yargs-unparser": "1.6.0" 1131 | }, 1132 | "dependencies": { 1133 | "glob": { 1134 | "version": "7.1.3", 1135 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 1136 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 1137 | "dev": true, 1138 | "requires": { 1139 | "fs.realpath": "^1.0.0", 1140 | "inflight": "^1.0.4", 1141 | "inherits": "2", 1142 | "minimatch": "^3.0.4", 1143 | "once": "^1.3.0", 1144 | "path-is-absolute": "^1.0.0" 1145 | } 1146 | }, 1147 | "minimist": { 1148 | "version": "1.2.5", 1149 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1150 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1151 | "dev": true 1152 | }, 1153 | "mkdirp": { 1154 | "version": "0.5.4", 1155 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", 1156 | "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", 1157 | "dev": true, 1158 | "requires": { 1159 | "minimist": "^1.2.5" 1160 | } 1161 | }, 1162 | "supports-color": { 1163 | "version": "6.0.0", 1164 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", 1165 | "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", 1166 | "dev": true, 1167 | "requires": { 1168 | "has-flag": "^3.0.0" 1169 | } 1170 | } 1171 | } 1172 | }, 1173 | "ms": { 1174 | "version": "2.1.1", 1175 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1176 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1177 | "dev": true 1178 | }, 1179 | "mute-stream": { 1180 | "version": "0.0.8", 1181 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1182 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1183 | "dev": true 1184 | }, 1185 | "natural-compare": { 1186 | "version": "1.4.0", 1187 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1188 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1189 | "dev": true 1190 | }, 1191 | "nice-try": { 1192 | "version": "1.0.5", 1193 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1194 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1195 | "dev": true 1196 | }, 1197 | "node-environment-flags": { 1198 | "version": "1.0.5", 1199 | "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", 1200 | "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", 1201 | "dev": true, 1202 | "requires": { 1203 | "object.getownpropertydescriptors": "^2.0.3", 1204 | "semver": "^5.7.0" 1205 | } 1206 | }, 1207 | "object-inspect": { 1208 | "version": "1.7.0", 1209 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 1210 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 1211 | "dev": true 1212 | }, 1213 | "object-keys": { 1214 | "version": "1.1.1", 1215 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1216 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1217 | "dev": true 1218 | }, 1219 | "object.assign": { 1220 | "version": "4.1.0", 1221 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1222 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1223 | "dev": true, 1224 | "requires": { 1225 | "define-properties": "^1.1.2", 1226 | "function-bind": "^1.1.1", 1227 | "has-symbols": "^1.0.0", 1228 | "object-keys": "^1.0.11" 1229 | } 1230 | }, 1231 | "object.getownpropertydescriptors": { 1232 | "version": "2.1.0", 1233 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", 1234 | "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", 1235 | "dev": true, 1236 | "requires": { 1237 | "define-properties": "^1.1.3", 1238 | "es-abstract": "^1.17.0-next.1" 1239 | } 1240 | }, 1241 | "once": { 1242 | "version": "1.4.0", 1243 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1244 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1245 | "dev": true, 1246 | "requires": { 1247 | "wrappy": "1" 1248 | } 1249 | }, 1250 | "onetime": { 1251 | "version": "5.1.0", 1252 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 1253 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 1254 | "dev": true, 1255 | "requires": { 1256 | "mimic-fn": "^2.1.0" 1257 | } 1258 | }, 1259 | "optionator": { 1260 | "version": "0.8.3", 1261 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1262 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1263 | "dev": true, 1264 | "requires": { 1265 | "deep-is": "~0.1.3", 1266 | "fast-levenshtein": "~2.0.6", 1267 | "levn": "~0.3.0", 1268 | "prelude-ls": "~1.1.2", 1269 | "type-check": "~0.3.2", 1270 | "word-wrap": "~1.2.3" 1271 | } 1272 | }, 1273 | "os-tmpdir": { 1274 | "version": "1.0.2", 1275 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1276 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1277 | "dev": true 1278 | }, 1279 | "p-limit": { 1280 | "version": "2.2.2", 1281 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", 1282 | "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", 1283 | "dev": true, 1284 | "requires": { 1285 | "p-try": "^2.0.0" 1286 | } 1287 | }, 1288 | "p-locate": { 1289 | "version": "3.0.0", 1290 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1291 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1292 | "dev": true, 1293 | "requires": { 1294 | "p-limit": "^2.0.0" 1295 | } 1296 | }, 1297 | "p-try": { 1298 | "version": "2.2.0", 1299 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1300 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1301 | "dev": true 1302 | }, 1303 | "parent-module": { 1304 | "version": "1.0.1", 1305 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1306 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1307 | "dev": true, 1308 | "requires": { 1309 | "callsites": "^3.0.0" 1310 | } 1311 | }, 1312 | "path-exists": { 1313 | "version": "3.0.0", 1314 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1315 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1316 | "dev": true 1317 | }, 1318 | "path-is-absolute": { 1319 | "version": "1.0.1", 1320 | "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1321 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1322 | "dev": true 1323 | }, 1324 | "path-key": { 1325 | "version": "2.0.1", 1326 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1327 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1328 | "dev": true 1329 | }, 1330 | "prelude-ls": { 1331 | "version": "1.1.2", 1332 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1333 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1334 | "dev": true 1335 | }, 1336 | "progress": { 1337 | "version": "2.0.3", 1338 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1339 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1340 | "dev": true 1341 | }, 1342 | "punycode": { 1343 | "version": "2.1.1", 1344 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1345 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1346 | "dev": true 1347 | }, 1348 | "regexpp": { 1349 | "version": "2.0.1", 1350 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1351 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 1352 | "dev": true 1353 | }, 1354 | "require-directory": { 1355 | "version": "2.1.1", 1356 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1357 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1358 | "dev": true 1359 | }, 1360 | "require-main-filename": { 1361 | "version": "2.0.0", 1362 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1363 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1364 | "dev": true 1365 | }, 1366 | "resolve-from": { 1367 | "version": "4.0.0", 1368 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1369 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1370 | "dev": true 1371 | }, 1372 | "restore-cursor": { 1373 | "version": "3.1.0", 1374 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1375 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1376 | "dev": true, 1377 | "requires": { 1378 | "onetime": "^5.1.0", 1379 | "signal-exit": "^3.0.2" 1380 | } 1381 | }, 1382 | "rimraf": { 1383 | "version": "2.6.3", 1384 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1385 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1386 | "dev": true, 1387 | "requires": { 1388 | "glob": "^7.1.3" 1389 | } 1390 | }, 1391 | "run-async": { 1392 | "version": "2.4.0", 1393 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", 1394 | "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", 1395 | "dev": true, 1396 | "requires": { 1397 | "is-promise": "^2.1.0" 1398 | } 1399 | }, 1400 | "rxjs": { 1401 | "version": "6.5.4", 1402 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", 1403 | "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", 1404 | "dev": true, 1405 | "requires": { 1406 | "tslib": "^1.9.0" 1407 | } 1408 | }, 1409 | "safer-buffer": { 1410 | "version": "2.1.2", 1411 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1412 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1413 | "dev": true 1414 | }, 1415 | "semver": { 1416 | "version": "5.7.0", 1417 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 1418 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 1419 | "dev": true 1420 | }, 1421 | "set-blocking": { 1422 | "version": "2.0.0", 1423 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1424 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1425 | "dev": true 1426 | }, 1427 | "shebang-command": { 1428 | "version": "1.2.0", 1429 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1430 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1431 | "dev": true, 1432 | "requires": { 1433 | "shebang-regex": "^1.0.0" 1434 | } 1435 | }, 1436 | "shebang-regex": { 1437 | "version": "1.0.0", 1438 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1439 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1440 | "dev": true 1441 | }, 1442 | "signal-exit": { 1443 | "version": "3.0.2", 1444 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1445 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1446 | "dev": true 1447 | }, 1448 | "slice-ansi": { 1449 | "version": "2.1.0", 1450 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1451 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1452 | "dev": true, 1453 | "requires": { 1454 | "ansi-styles": "^3.2.0", 1455 | "astral-regex": "^1.0.0", 1456 | "is-fullwidth-code-point": "^2.0.0" 1457 | } 1458 | }, 1459 | "sprintf-js": { 1460 | "version": "1.0.3", 1461 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1462 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1463 | "dev": true 1464 | }, 1465 | "string-width": { 1466 | "version": "2.1.1", 1467 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1468 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1469 | "dev": true, 1470 | "requires": { 1471 | "is-fullwidth-code-point": "^2.0.0", 1472 | "strip-ansi": "^4.0.0" 1473 | } 1474 | }, 1475 | "string.prototype.trimleft": { 1476 | "version": "2.1.1", 1477 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", 1478 | "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", 1479 | "dev": true, 1480 | "requires": { 1481 | "define-properties": "^1.1.3", 1482 | "function-bind": "^1.1.1" 1483 | } 1484 | }, 1485 | "string.prototype.trimright": { 1486 | "version": "2.1.1", 1487 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", 1488 | "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", 1489 | "dev": true, 1490 | "requires": { 1491 | "define-properties": "^1.1.3", 1492 | "function-bind": "^1.1.1" 1493 | } 1494 | }, 1495 | "strip-ansi": { 1496 | "version": "4.0.0", 1497 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1498 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1499 | "dev": true, 1500 | "requires": { 1501 | "ansi-regex": "^3.0.0" 1502 | } 1503 | }, 1504 | "strip-json-comments": { 1505 | "version": "2.0.1", 1506 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1507 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1508 | "dev": true 1509 | }, 1510 | "supports-color": { 1511 | "version": "5.5.0", 1512 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1513 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1514 | "dev": true, 1515 | "requires": { 1516 | "has-flag": "^3.0.0" 1517 | } 1518 | }, 1519 | "table": { 1520 | "version": "5.4.6", 1521 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1522 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1523 | "dev": true, 1524 | "requires": { 1525 | "ajv": "^6.10.2", 1526 | "lodash": "^4.17.14", 1527 | "slice-ansi": "^2.1.0", 1528 | "string-width": "^3.0.0" 1529 | }, 1530 | "dependencies": { 1531 | "ansi-regex": { 1532 | "version": "4.1.0", 1533 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1534 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1535 | "dev": true 1536 | }, 1537 | "string-width": { 1538 | "version": "3.1.0", 1539 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1540 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1541 | "dev": true, 1542 | "requires": { 1543 | "emoji-regex": "^7.0.1", 1544 | "is-fullwidth-code-point": "^2.0.0", 1545 | "strip-ansi": "^5.1.0" 1546 | } 1547 | }, 1548 | "strip-ansi": { 1549 | "version": "5.2.0", 1550 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1551 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1552 | "dev": true, 1553 | "requires": { 1554 | "ansi-regex": "^4.1.0" 1555 | } 1556 | } 1557 | } 1558 | }, 1559 | "text-table": { 1560 | "version": "0.2.0", 1561 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1562 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1563 | "dev": true 1564 | }, 1565 | "through": { 1566 | "version": "2.3.8", 1567 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1568 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1569 | "dev": true 1570 | }, 1571 | "tmp": { 1572 | "version": "0.0.33", 1573 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1574 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1575 | "dev": true, 1576 | "requires": { 1577 | "os-tmpdir": "~1.0.2" 1578 | } 1579 | }, 1580 | "tslib": { 1581 | "version": "1.9.3", 1582 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 1583 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", 1584 | "dev": true 1585 | }, 1586 | "type-check": { 1587 | "version": "0.3.2", 1588 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1589 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1590 | "dev": true, 1591 | "requires": { 1592 | "prelude-ls": "~1.1.2" 1593 | } 1594 | }, 1595 | "type-fest": { 1596 | "version": "0.8.1", 1597 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1598 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1599 | "dev": true 1600 | }, 1601 | "typescript": { 1602 | "version": "3.8.3", 1603 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", 1604 | "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", 1605 | "dev": true 1606 | }, 1607 | "uri-js": { 1608 | "version": "4.2.2", 1609 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1610 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1611 | "dev": true, 1612 | "requires": { 1613 | "punycode": "^2.1.0" 1614 | } 1615 | }, 1616 | "v8-compile-cache": { 1617 | "version": "2.1.0", 1618 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 1619 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 1620 | "dev": true 1621 | }, 1622 | "which": { 1623 | "version": "1.3.1", 1624 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1625 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1626 | "dev": true, 1627 | "requires": { 1628 | "isexe": "^2.0.0" 1629 | } 1630 | }, 1631 | "which-module": { 1632 | "version": "2.0.0", 1633 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1634 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1635 | "dev": true 1636 | }, 1637 | "wide-align": { 1638 | "version": "1.1.3", 1639 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 1640 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 1641 | "dev": true, 1642 | "requires": { 1643 | "string-width": "^1.0.2 || 2" 1644 | } 1645 | }, 1646 | "word-wrap": { 1647 | "version": "1.2.3", 1648 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1649 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1650 | "dev": true 1651 | }, 1652 | "wrap-ansi": { 1653 | "version": "5.1.0", 1654 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1655 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1656 | "dev": true, 1657 | "requires": { 1658 | "ansi-styles": "^3.2.0", 1659 | "string-width": "^3.0.0", 1660 | "strip-ansi": "^5.0.0" 1661 | }, 1662 | "dependencies": { 1663 | "ansi-regex": { 1664 | "version": "4.1.0", 1665 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1666 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1667 | "dev": true 1668 | }, 1669 | "string-width": { 1670 | "version": "3.1.0", 1671 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1672 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1673 | "dev": true, 1674 | "requires": { 1675 | "emoji-regex": "^7.0.1", 1676 | "is-fullwidth-code-point": "^2.0.0", 1677 | "strip-ansi": "^5.1.0" 1678 | } 1679 | }, 1680 | "strip-ansi": { 1681 | "version": "5.2.0", 1682 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1683 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1684 | "dev": true, 1685 | "requires": { 1686 | "ansi-regex": "^4.1.0" 1687 | } 1688 | } 1689 | } 1690 | }, 1691 | "wrappy": { 1692 | "version": "1.0.2", 1693 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1694 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1695 | "dev": true 1696 | }, 1697 | "write": { 1698 | "version": "1.0.3", 1699 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1700 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1701 | "dev": true, 1702 | "requires": { 1703 | "mkdirp": "^0.5.1" 1704 | } 1705 | }, 1706 | "y18n": { 1707 | "version": "4.0.0", 1708 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 1709 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 1710 | "dev": true 1711 | }, 1712 | "yargs": { 1713 | "version": "13.3.2", 1714 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 1715 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 1716 | "dev": true, 1717 | "requires": { 1718 | "cliui": "^5.0.0", 1719 | "find-up": "^3.0.0", 1720 | "get-caller-file": "^2.0.1", 1721 | "require-directory": "^2.1.1", 1722 | "require-main-filename": "^2.0.0", 1723 | "set-blocking": "^2.0.0", 1724 | "string-width": "^3.0.0", 1725 | "which-module": "^2.0.0", 1726 | "y18n": "^4.0.0", 1727 | "yargs-parser": "^13.1.2" 1728 | }, 1729 | "dependencies": { 1730 | "ansi-regex": { 1731 | "version": "4.1.0", 1732 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1733 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1734 | "dev": true 1735 | }, 1736 | "string-width": { 1737 | "version": "3.1.0", 1738 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1739 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1740 | "dev": true, 1741 | "requires": { 1742 | "emoji-regex": "^7.0.1", 1743 | "is-fullwidth-code-point": "^2.0.0", 1744 | "strip-ansi": "^5.1.0" 1745 | } 1746 | }, 1747 | "strip-ansi": { 1748 | "version": "5.2.0", 1749 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1750 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1751 | "dev": true, 1752 | "requires": { 1753 | "ansi-regex": "^4.1.0" 1754 | } 1755 | } 1756 | } 1757 | }, 1758 | "yargs-parser": { 1759 | "version": "13.1.2", 1760 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 1761 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 1762 | "dev": true, 1763 | "requires": { 1764 | "camelcase": "^5.0.0", 1765 | "decamelize": "^1.2.0" 1766 | } 1767 | }, 1768 | "yargs-unparser": { 1769 | "version": "1.6.0", 1770 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", 1771 | "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", 1772 | "dev": true, 1773 | "requires": { 1774 | "flat": "^4.1.0", 1775 | "lodash": "^4.17.15", 1776 | "yargs": "^13.3.0" 1777 | } 1778 | } 1779 | } 1780 | } 1781 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sqls", 3 | "description": "SQL Language Server Extension for Visual Studio Code", 4 | "author": "lighttiger2505", 5 | "license": "MIT", 6 | "version": "0.1.0", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/lighttiger2505/vscode-sqls" 10 | }, 11 | "bugs": { 12 | "url": "https://github.com/lighttiger2505/vscode-sqls" 13 | }, 14 | "publisher": "lighttiger2505", 15 | "categories": [ 16 | "Programming Languages" 17 | ], 18 | "keywords": [ 19 | "multi-root ready" 20 | ], 21 | "engines": { 22 | "vscode": "^1.43.0" 23 | }, 24 | "activationEvents": [ 25 | "workspaceContains:**/*.sql", 26 | "onLanguage:sql" 27 | ], 28 | "main": "./client/out/extension", 29 | "contributes": { 30 | "configuration": { 31 | "type": "object", 32 | "title": "sqls", 33 | "properties": { 34 | "go.languageServerFlags": { 35 | "type": "array", 36 | "default": [], 37 | "description": "Flags like -trace and -log to be used while running the language server." 38 | } 39 | } 40 | } 41 | }, 42 | "scripts": { 43 | "vscode:prepublish": "npm run compile", 44 | "compile": "tsc -b", 45 | "watch": "tsc -b -w", 46 | "postinstall": "cd client && npm install && cd .." 47 | }, 48 | "devDependencies": { 49 | "@types/mocha": "^5.2.7", 50 | "mocha": "^6.2.2", 51 | "@types/node": "^12.12.0", 52 | "eslint": "^6.4.0", 53 | "@typescript-eslint/parser": "^2.3.0", 54 | "typescript": "^3.8.3" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "rootDir": "src", 7 | "sourceMap": true 8 | }, 9 | "include": [ 10 | "src" 11 | ], 12 | "exclude": [ 13 | "node_modules", 14 | ".vscode-test" 15 | ], 16 | "references": [ 17 | { "path": "./client" } 18 | ] 19 | } 20 | --------------------------------------------------------------------------------