From 0c11edd56e9be79898be84cc752cc40943eff8ef Mon Sep 17 00:00:00 2001 From: Yatao Li Date: Wed, 31 Jul 2019 16:02:11 +0800 Subject: [PATCH 1/4] move root pattern detection to package.json: --- client/extension.ts | 4 ++-- package.json | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/client/extension.ts b/client/extension.ts index 22969fc..0676b4d 100644 --- a/client/extension.ts +++ b/client/extension.ts @@ -126,8 +126,6 @@ export async function activate(context: ExtensionContext) { transport: TransportKind.stdio } - workspace.addRootPatterns('fsharp', ['*.fsproj', '*.fsx', 'projects.assets.json', '.vim', '.git', '.hg']) - // Options to control the language client let clientOptions: LanguageClientOptions = { // Register the server for F# documents @@ -138,6 +136,8 @@ export async function activate(context: ExtensionContext) { // Notify the server about file changes to F# project files contain in the workspace fileEvents: [ workspace.createFileSystemWatcher('**/*.fsproj'), + workspace.createFileSystemWatcher('**/*.fs'), + workspace.createFileSystemWatcher('**/*.fsi'), workspace.createFileSystemWatcher('**/*.fsx'), workspace.createFileSystemWatcher('**/project.assets.json') ] diff --git a/package.json b/package.json index 35cc339..32b50f0 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,22 @@ "description": "Display the number of references for the symbols. Uses more resources and may crash coc.nvim for very large projects." } } - } + }, + "rootPatterns": [ + { + "filetype": "fsharp", + "patterns": [ + "*.fsproj", + "*.sln", + "*.fsx", + "projects.assets.json", + ".vim", + ".git", + ".hg" + ] + } + ] + }, "scripts": { "compile": "tsc -p ./", From 355efe20cd320b31b64285fe709bb5e28347059b Mon Sep 17 00:00:00 2001 From: Yatao Li Date: Wed, 31 Jul 2019 16:04:00 +0800 Subject: [PATCH 2/4] bump version to 0.1.54 --- package-lock.json | 2 +- package.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5dbd5b5..beb0322 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "coc-fsharp", - "version": "0.1.52", + "version": "0.1.54", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 32b50f0..b691c10 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Yatao Li", "license": "MIT", "icon": "Icon512.png", - "version": "0.1.52", + "version": "0.1.54", "publisher": "yatli", "repository": { "type": "git", @@ -131,7 +131,6 @@ ] } ] - }, "scripts": { "compile": "tsc -p ./", From 4812ece25016940de723085aa0e2f5a27ec5dcdf Mon Sep 17 00:00:00 2001 From: Yatao Li Date: Wed, 31 Jul 2019 20:50:42 +0800 Subject: [PATCH 3/4] automated build pipeline --- azure-pipelines.yml | 29 ++++++ client/extension.ts | 45 ++++----- client/platform.ts | 103 +++++++++++++++++++ client/utils.ts | 58 +++++++++++ pack.ps1 | 21 ++-- package-lock.json | 235 +++++++++++++++++++++++++++++++++++++------- package.json | 12 ++- 7 files changed, 431 insertions(+), 72 deletions(-) create mode 100644 azure-pipelines.yml create mode 100644 client/platform.ts create mode 100644 client/utils.ts diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..fbca888 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,29 @@ +# Starter pipeline +# Start with a minimal pipeline that you can customize to build and deploy your code. +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml + +trigger: +- master + +pool: + vmImage: 'windows-latest' +steps: +- task: UseDotNet@2 + displayName: 'Use .NET Core sdk' + inputs: + packageType: sdk + includePreviewVersions: true + version: 3.0.100-preview6-012264 + installationPath: $(Agent.ToolsDirectory)/dotnet +- task: NuGetToolInstaller@1 +- task: PowerShell@2 + inputs: + filePath: 'pack.ps1' +- task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: 'publish' + ArtifactName: 'drop' + publishLocation: 'Container' + + diff --git a/client/extension.ts b/client/extension.ts index 0676b4d..1c1874e 100644 --- a/client/extension.ts +++ b/client/extension.ts @@ -11,6 +11,7 @@ import { workspace, ExtensionContext, commands, StatusBarItem, TerminalResult } import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'coc.nvim'; import { NotificationType } from 'vscode-jsonrpc'; import { Range } from 'vscode-languageserver-protocol'; +import {OperatingSystem, currentPlatform, languageServerExe, downloadLanguageServer} from './platform' async function getCurrentSelection(mode: string) { @@ -115,10 +116,20 @@ function registerREPL(context: ExtensionContext, __: string) { export async function activate(context: ExtensionContext) { // The server is packaged as a standalone command - let serverMain = context.asAbsolutePath(binName()); + let serverMain = context.asAbsolutePath(languageServerExe); + + if (!fs.existsSync(serverMain)) { + let item = workspace.createStatusBarItem(0, {progress: true}) + item.text = "Downloading F# Language Server" + item.show() + await downloadLanguageServer() + item.dispose() + } // Make sure the server is executable - fs.chmodSync(serverMain, "+x") + if (currentPlatform.operatingSystem !== OperatingSystem.Windows) { + fs.chmodSync(serverMain, "755") + } let serverOptions: ServerOptions = { command: serverMain, @@ -227,38 +238,16 @@ function createProgressListeners(client: LanguageClient) { this.statusBarItem = null } } + // Use custom notifications to drive progressListener - client.onNotification(new NotificationType('fsharp/startProgress'), (start: StartProgress) => { + client.onNotification('fsharp/startProgress', (start: StartProgress) => { progressListener.startProgress(start); }); - client.onNotification(new NotificationType('fsharp/incrementProgress'), (fileName: string) => { + client.onNotification('fsharp/incrementProgress', (fileName: string) => { progressListener.incrementProgress(fileName); }); - client.onNotification(new NotificationType('fsharp/endProgress'), () => { + client.onNotification('fsharp/endProgress', () => { progressListener.endProgress(); }); } -function binName(): string { - var baseParts = ['out', 'server']; - var pathParts = getPathParts(process.platform); - var fullParts = baseParts.concat(pathParts); - - return path.join(...fullParts); -} - -function getPathParts(platform: string): string[] { - switch (platform) { - case 'win32': - return ['win10-x64', 'FSharpLanguageServer.exe']; - - case 'linux': - return ['linux-x64', 'FSharpLanguageServer']; - - case 'darwin': - return ['osx.10.11-x64', 'FSharpLanguageServer']; - } - - throw `unsupported platform: ${platform}`; -} - diff --git a/client/platform.ts b/client/platform.ts new file mode 100644 index 0000000..5af79f1 --- /dev/null +++ b/client/platform.ts @@ -0,0 +1,103 @@ +/*--------------------------------------------------------- + * Copyright (C) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------*/ + +import { workspace } from 'coc.nvim' +import {sleep} from "./utils" +import fs = require("fs"); +import path = require("path"); +import process = require("process"); +import { IncomingMessage, RequestOptions, Agent } from 'http' +import { parse } from 'url' +const tunnel = require('tunnel') +const followRedirects = require("follow-redirects") +const unzip = require("extract-zip"); +const rimraf = require("rimraf") + +export enum OperatingSystem { + Unknown, + Windows, + MacOS, + Linux, +} + +export interface IPlatformDetails { + operatingSystem: OperatingSystem; + isOS64Bit: boolean; + isProcess64Bit: boolean; +} + +export function getPlatformDetails(): IPlatformDetails { + let operatingSystem = OperatingSystem.Unknown; + + if (process.platform === "win32") { + operatingSystem = OperatingSystem.Windows; + } else if (process.platform === "darwin") { + operatingSystem = OperatingSystem.MacOS; + } else if (process.platform === "linux") { + operatingSystem = OperatingSystem.Linux; + } + + const isProcess64Bit = process.arch === "x64"; + + return { + operatingSystem, + isOS64Bit: isProcess64Bit || process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432"), + isProcess64Bit, + }; +} + +export const currentPlatform = getPlatformDetails() +export const languageServerDirectory = path.join(__dirname, "..", "server") +const languageServerZip = languageServerDirectory + ".zip" +const URL_Windows = "https://github.com/yatli/coc-fsharp/releases/download/RELEASE/coc-fsharp-win10-x64.zip" +const URL_Osx = "https://github.com/yatli/coc-fsharp/releases/download/RELEASE/coc-fsharp-osx.10.11-x64.zip" +const URL_Linux = "https://github.com/yatli/coc-fsharp/releases/download/RELEASE/coc-fsharp-linux-x64.zip" + +export const languageServerExe = (() => { + if (currentPlatform.operatingSystem === OperatingSystem.Windows) + return path.join(languageServerDirectory, "FSharpLanguageServer.exe") + else + return path.join(languageServerDirectory, "FSharpLanguageServer") +})() + +export async function downloadLanguageServer() { + + if(fs.existsSync(languageServerDirectory)){ + rimraf.sync(languageServerDirectory) + } + + let url = (()=>{ + switch(currentPlatform.operatingSystem) { + case OperatingSystem.Windows: return URL_Windows + case OperatingSystem.Linux: return URL_Linux + case OperatingSystem.MacOS: return URL_Osx + default: throw "Unsupported operating system" + } + })().replace("RELEASE", "v0.2.0") + + fs.mkdirSync(languageServerDirectory) + + await new Promise((resolve, reject) => { + const req = followRedirects.https.request(url, (res: IncomingMessage) => { + if (res.statusCode != 200) { + reject(new Error(`Invalid response from ${url}: ${res.statusCode}`)) + return + } + let file = fs.createWriteStream(languageServerZip) + let stream = res.pipe(file) + stream.on('finish', resolve) + }) + req.on('error', reject) + req.end() + }) + + await new Promise((resolve, reject) => { + unzip(languageServerZip, {dir: languageServerDirectory}, (err: any) => { + if(err) reject(err) + else resolve() + }) + }) + + fs.unlinkSync(languageServerZip) +} diff --git a/client/utils.ts b/client/utils.ts new file mode 100644 index 0000000..94655b6 --- /dev/null +++ b/client/utils.ts @@ -0,0 +1,58 @@ +/*--------------------------------------------------------- + * Copyright (C) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------*/ + +"use strict"; + +import fs = require("fs"); +import os = require("os"); +import path = require("path"); +import { Uri } from 'coc.nvim' + +export function fileURLToPath(x: string) { + return Uri.parse(x).fsPath +} + +export function sleep(ms: number) { + return new Promise((resolve, __) => setTimeout(resolve, ms)) +} + +export function ensurePathExists(targetPath: string) { + // Ensure that the path exists + try { + fs.mkdirSync(targetPath); + } catch (e) { + // If the exception isn't to indicate that the folder exists already, rethrow it. + if (e.code !== "EEXIST") { + throw e; + } + } +} + +export function getPipePath(pipeName: string) { + if (os.platform() === "win32") { + return "\\\\.\\pipe\\" + pipeName; + } else { + // Windows uses NamedPipes where non-Windows platforms use Unix Domain Sockets. + // This requires connecting to the pipe file in different locations on Windows vs non-Windows. + return path.join(os.tmpdir(), `CoreFxPipe_${pipeName}`); + } +} + +export function checkIfFileExists(filePath: string): boolean { + try { + fs.accessSync(filePath, fs.constants.R_OK); + return true; + } catch (e) { + return false; + } +} + +export function getTimestampString() { + const time = new Date(); + return `[${time.getHours()}:${time.getMinutes()}:${time.getSeconds()}]`; +} + +export function isWindowsOS(): boolean { + return os.platform() === "win32"; +} diff --git a/pack.ps1 b/pack.ps1 index e7061ee..833f15d 100644 --- a/pack.ps1 +++ b/pack.ps1 @@ -1,15 +1,24 @@ -$plat = "win10-x64","linux-x64","osx.10.11-x64" - New-Item -ItemType Directory -Force -Name out +New-Item -ItemType Directory -Force -Name publish +New-Item -ItemType Directory -Force -Name bin +Remove-Item bin/* -Recurse -Force Remove-Item out/* -Recurse -Force -New-Item -ItemType Directory -Force out/server +Remove-Item publish/* -Recurse -Force + +# client npm install npm run compile +npm pack +Move-Item *.tgz publish/ -foreach($i in $plat) { +# server + +$plat = "win10-x64","linux-x64","osx.10.11-x64" + +foreach ($i in $plat) { dotnet publish -f netcoreapp2.2 -c Release --self-contained ` - -r $i src/FSharpLanguageServer -o ./out/server/$i + -r $i src/FSharpLanguageServer -o ./bin/$i + Compress-Archive -Path ./bin/$i/* -DestinationPath publish/coc-fsharp-$i.zip -Force } -npm pack diff --git a/package-lock.json b/package-lock.json index beb0322..9680316 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "coc-fsharp", - "version": "0.1.54", + "version": "0.1.56", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -31,14 +31,12 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -53,6 +51,11 @@ "node-int64": "^0.4.0" } }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, "coc.nvim": { "version": "0.0.71", "resolved": "https://registry.npmjs.org/coc.nvim/-/coc.nvim-0.0.71.tgz", @@ -75,13 +78,46 @@ "vscode-languageserver-types": "3.15.0-next.2", "vscode-uri": "^2.0.2", "which": "^1.3.1" + }, + "dependencies": { + "vscode-jsonrpc": { + "version": "4.1.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz", + "integrity": "sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg==", + "dev": true + }, + "vscode-languageserver-protocol": { + "version": "3.15.0-next.6", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.6.tgz", + "integrity": "sha512-/yDpYlWyNs26mM23mT73xmOFsh1iRfgZfBdHmfAxwDKwpQKLoOSqVidtYfxlK/pD3IEKGcAVnT4WXTsguxxAMQ==", + "dev": true, + "requires": { + "vscode-jsonrpc": "^4.1.0-next.2", + "vscode-languageserver-types": "^3.15.0-next.2" + } + } } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "date-format": { "version": "2.0.0", @@ -110,6 +146,32 @@ "integrity": "sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g==", "dev": true }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", @@ -125,12 +187,38 @@ "bser": "^2.0.0" } }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "requires": { + "pend": "~1.2.0" + } + }, "flatted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -145,14 +233,12 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -178,7 +264,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -187,8 +272,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "int64-buffer": { "version": "0.1.10", @@ -199,8 +283,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -233,9 +316,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "log4js": { @@ -255,16 +338,27 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "msgpack-lite": { "version": "0.1.26", @@ -288,7 +382,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -296,8 +389,31 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, "rfc-3986": { "version": "1.0.1", @@ -311,6 +427,19 @@ "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", "dev": true }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "semver": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", @@ -341,12 +470,30 @@ } } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typescript": { "version": "3.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", @@ -359,6 +506,11 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -366,23 +518,31 @@ "dev": true }, "vscode-jsonrpc": { - "version": "4.1.0-next.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz", - "integrity": "sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", + "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" }, "vscode-languageserver-protocol": { - "version": "3.15.0-next.6", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.6.tgz", - "integrity": "sha512-/yDpYlWyNs26mM23mT73xmOFsh1iRfgZfBdHmfAxwDKwpQKLoOSqVidtYfxlK/pD3IEKGcAVnT4WXTsguxxAMQ==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz", + "integrity": "sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g==", "requires": { - "vscode-jsonrpc": "^4.1.0-next.2", - "vscode-languageserver-types": "^3.15.0-next.2" + "vscode-jsonrpc": "^4.0.0", + "vscode-languageserver-types": "3.14.0" + }, + "dependencies": { + "vscode-languageserver-types": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", + "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==" + } } }, "vscode-languageserver-types": { "version": "3.15.0-next.2", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz", - "integrity": "sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==" + "integrity": "sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==", + "dev": true }, "vscode-uri": { "version": "2.0.2", @@ -402,8 +562,15 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "requires": { + "fd-slicer": "~1.0.1" + } } } } diff --git a/package.json b/package.json index b691c10..94f6b52 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Yatao Li", "license": "MIT", "icon": "Icon512.png", - "version": "0.1.54", + "version": "0.1.56", "publisher": "yatli", "repository": { "type": "git", @@ -138,12 +138,16 @@ }, "extensionDependencies": [], "dependencies": { - "vscode-jsonrpc": "*", - "vscode-languageserver-protocol": "*" + "vscode-jsonrpc": ">=4.0.0", + "vscode-languageserver-protocol": ">=3.14.0", + "extract-zip": "^1.6.7", + "follow-redirects": "^1.7.0", + "rimraf": "^2.6.3", + "tunnel": "0.0.6" }, "devDependencies": { "@types/node": "^10.3.3", "typescript": "^3.0.3", - "coc.nvim": "^0.0.71" + "coc.nvim": ">=0.0.71" } } From 9baed633099e5fa1ab33ae8deeb0c3d7cf2721ac Mon Sep 17 00:00:00 2001 From: Yatao Li Date: Wed, 31 Jul 2019 21:00:27 +0800 Subject: [PATCH 4/4] pack silently --- pack.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pack.ps1 b/pack.ps1 index 833f15d..f8a1e62 100644 --- a/pack.ps1 +++ b/pack.ps1 @@ -9,7 +9,7 @@ Remove-Item publish/* -Recurse -Force npm install npm run compile -npm pack +npm pack --silent Move-Item *.tgz publish/ # server