From 8afebd2e10f7a671e268768d270f3b860f6aa85d Mon Sep 17 00:00:00 2001 From: Anthony Dresser Date: Wed, 20 Dec 2017 21:35:52 -0800 Subject: [PATCH] Extensions Cleanup (#359) * clean up extensions * updated copyrights * formatting --- build/gulpfile.vscode.js | 7 +- build/npm/postinstall.js | 3 +- extensions-modules/.npmignore | 9 + .../src/configurations/config.ts | 18 +- .../src/configurations/extConfig.ts | 9 +- .../src/controllers/vscodeWrapper.ts | 6 +- .../src/languageservice/decompressProvider.ts | 4 +- .../src/languageservice/httpClient.ts | 10 +- .../src/languageservice/interfaces.ts | 2 +- .../src/languageservice/proxy.ts | 4 +- .../src/languageservice/server.ts | 6 +- .../src/languageservice/serverStatus.ts | 6 +- .../src/languageservice/serviceClient.ts | 808 +++--- .../serviceDownloadProvider.ts | 6 +- .../languageservice/serviceInstallerUtil.ts | 4 +- .../src/languageservice/serviceStatus.ts | 8 +- extensions-modules/src/main.ts | 26 +- extensions-modules/src/models/constants.ts | 41 +- .../src/models/contracts/contracts.ts | 52 +- .../src/models/contracts/languageService.ts | 42 +- extensions-modules/src/models/interfaces.ts | 18 +- extensions-modules/src/models/logger.ts | 95 +- extensions-modules/src/models/platform.ts | 543 ++-- extensions-modules/src/models/telemetry.ts | 32 +- extensions-modules/src/models/utils.ts | 354 +-- .../src/utils/escapeException.ts | 3 - .../src/utils/validationException.ts | 3 - extensions-modules/src/views/statusView.ts | 234 +- extensions/account-provider-azure/.gitignore | 0 .../account-provider-azure/.vscodeignore | 3 + .../npm-shrinkwrap.json | 348 +++ .../package.disabled.json | 0 .../account-provider-azure/package.json | 55 + .../account-provider-azure/package.nls.json | 7 + .../account-provider/azureAccountProvider.ts | 0 .../azureAccountProviderService.ts | 28 +- .../src/account-provider/interfaces.ts | 0 .../media/microsoft_account_dark.svg | 0 .../media/microsoft_account_light.svg | 0 .../media/work_school_account_dark.svg | 0 .../media/work_school_account_light.svg | 0 .../src/account-provider/providerSettings.ts | 2 + .../src/account-provider/tokenCache.ts | 22 +- .../account-provider-azure/src/constants.ts | 12 + extensions/account-provider-azure/src/main.ts | 35 + .../src/typings/ref.d.ts | 7 + .../account-provider-azure/tsconfig.json | 20 + extensions/mssql/.gitignore | 2 +- extensions/mssql/.vscodeignore | 4 + .../client/src/controllers/mainController.ts | 277 +- .../src/credentialstore/credentialstore.ts | 107 +- .../src/credentialstore/icredentialstore.ts | 12 +- .../client/src/{mssqlMain.ts => main.ts} | 15 +- .../mssql/client/src/models/constants.ts | 412 +-- .../mssql/client/src/models/contracts.ts | 41 +- .../src/resourceprovider/resourceprovider.ts | 81 +- .../client/src/serialize/iserialization.ts | 9 +- .../client/src/serialize/serialization.ts | 51 +- extensions/mssql/client/src/typings/ref.d.ts | 3 +- extensions/mssql/npm-shrinkwrap.json | 2230 ----------------- extensions/mssql/package.json | 56 +- extensions/mssql/package.nls.json | 11 +- extensions/mssql/snippets/mssql.json | 20 +- extensions/mssql/syntaxes/SQL.plist | 771 ------ .../mssql/syntaxes/sql.configuration.json | 3 - extensions/npm-shrinkwrap.json | 11 - extensions/package.json | 3 +- extensions/sql/syntaxes/SQL.plist | 2 +- npm-shrinkwrap.json | 686 +++-- package.json | 8 +- src/typings/chokidar.d.ts | 2 +- .../watcher/unix/chokidarWatcherService.ts | 2 +- 72 files changed, 2352 insertions(+), 5359 deletions(-) delete mode 100644 extensions-modules/src/utils/escapeException.ts delete mode 100644 extensions-modules/src/utils/validationException.ts create mode 100644 extensions/account-provider-azure/.gitignore create mode 100644 extensions/account-provider-azure/.vscodeignore create mode 100644 extensions/account-provider-azure/npm-shrinkwrap.json rename extensions/{mssql => account-provider-azure}/package.disabled.json (100%) create mode 100644 extensions/account-provider-azure/package.json create mode 100644 extensions/account-provider-azure/package.nls.json rename extensions/{mssql/client => account-provider-azure}/src/account-provider/azureAccountProvider.ts (100%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/azureAccountProviderService.ts (91%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/interfaces.ts (100%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/media/microsoft_account_dark.svg (100%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/media/microsoft_account_light.svg (100%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/media/work_school_account_dark.svg (100%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/media/work_school_account_light.svg (100%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/providerSettings.ts (99%) rename extensions/{mssql/client => account-provider-azure}/src/account-provider/tokenCache.ts (95%) create mode 100644 extensions/account-provider-azure/src/constants.ts create mode 100644 extensions/account-provider-azure/src/main.ts create mode 100644 extensions/account-provider-azure/src/typings/ref.d.ts create mode 100644 extensions/account-provider-azure/tsconfig.json create mode 100644 extensions/mssql/.vscodeignore rename extensions/mssql/client/src/{mssqlMain.ts => main.ts} (76%) delete mode 100644 extensions/mssql/syntaxes/SQL.plist delete mode 100644 extensions/mssql/syntaxes/sql.configuration.json delete mode 100644 extensions/npm-shrinkwrap.json diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 5c303b3f3e..643c00948e 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -620,8 +620,8 @@ gulp.task('generate-vscode-configuration', () => { // {{SQL CARBON EDIT}} // Install service locally before building carbon -function installService(extObj) { - var installer = new serviceInstaller.ServiceInstaller(extObj, true); +function installService(extObj, path) { + var installer = new serviceInstaller.ServiceInstaller(extObj, path); installer.getServiceInstallDirectoryRoot().then(serviceInstallFolder => { console.log('Cleaning up the install folder: ' + serviceInstallFolder); del(serviceInstallFolder + '/*').then(() => { @@ -639,7 +639,8 @@ function installService(extObj) { gulp.task('install-sqltoolsservice', () => { var mssqlExt = require('../extensions/mssql/client/out/models/constants'); var extObj = new mssqlExt.Constants(); - return installService(extObj); + var path = '../extensions/mssql/client/out/config.json'; + return installService(extObj, path); }); diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js index c42fc055a4..d27ab70f06 100644 --- a/build/npm/postinstall.js +++ b/build/npm/postinstall.js @@ -41,7 +41,8 @@ const extensions = [ 'extension-editing', 'markdown', 'merge-conflict', - 'insights-default' + 'insights-default', + 'account-provider-azure' ]; extensions.forEach(extension => npmInstall(`extensions/${extension}`)); diff --git a/extensions-modules/.npmignore b/extensions-modules/.npmignore index e69de29bb2..5136fcb928 100644 --- a/extensions-modules/.npmignore +++ b/extensions-modules/.npmignore @@ -0,0 +1,9 @@ +.vscode/ +lib/test/ +lib/**/*.map +src/ +test/ +.eslintrc +.gitignore +gulpfile.js +tsd.json \ No newline at end of file diff --git a/extensions-modules/src/configurations/config.ts b/extensions-modules/src/configurations/config.ts index 12fb81d45a..16bd332b88 100644 --- a/extensions-modules/src/configurations/config.ts +++ b/extensions-modules/src/configurations/config.ts @@ -6,8 +6,8 @@ 'use strict'; const fs = require('fs'); import * as path from 'path'; -import {IConfig} from '../languageservice/interfaces'; -import * as SharedConstants from '../models/constants'; +import { IConfig } from '../languageservice/interfaces'; +import { Constants } from '../models/constants'; /* * Config class handles getting values from config.json. @@ -18,7 +18,7 @@ export default class Config implements IConfig { private _extensionConfigSectionName: string = undefined; private _fromBuild: boolean = undefined; - constructor(extensionConfigSectionName: string, fromBuild?: boolean) { + constructor(extensionConfigSectionName: string, private path: string, fromBuild?: boolean) { this._extensionConfigSectionName = extensionConfigSectionName; this._fromBuild = fromBuild; } @@ -31,24 +31,24 @@ export default class Config implements IConfig { } public getDownloadUrl(): string { - return this.getConfigValue(SharedConstants.downloadUrlConfigKey); + return this.getConfigValue(Constants.downloadUrlConfigKey); } public getInstallDirectory(): string { - return this.getConfigValue(SharedConstants.installDirConfigKey); + return this.getConfigValue(Constants.installDirConfigKey); } public getExecutableFiles(): string[] { - return this.getConfigValue(SharedConstants.executableFilesConfigKey); + return this.getConfigValue(Constants.executableFilesConfigKey); } public getPackageVersion(): string { - return this.getConfigValue(SharedConstants.versionConfigKey); + return this.getConfigValue(Constants.versionConfigKey); } public getConfigValue(configKey: string): any { let json = this.configJsonContent; - let toolsConfig = json[SharedConstants.serviceConfigKey]; + let toolsConfig = json[Constants.serviceConfigKey]; let configValue: string = undefined; if (toolsConfig !== undefined) { configValue = toolsConfig[configKey]; @@ -82,7 +82,7 @@ export default class Config implements IConfig { configContent = fs.readFileSync(path.join(__dirname, remainingPath)); } else { - configContent = fs.readFileSync(path.join(__dirname, '../../../../client/out/config.json')); + configContent = fs.readFileSync(this.path); } return JSON.parse(configContent); } diff --git a/extensions-modules/src/configurations/extConfig.ts b/extensions-modules/src/configurations/extConfig.ts index 91dee29b93..8407f3a8bd 100644 --- a/extensions-modules/src/configurations/extConfig.ts +++ b/extensions-modules/src/configurations/extConfig.ts @@ -5,10 +5,10 @@ 'use strict'; -import Config from './config'; +import Config from './config'; import { workspace, WorkspaceConfiguration } from 'vscode'; -import {IConfig} from '../languageservice/interfaces'; -import * as Constants from '../models/constants'; +import { IConfig } from '../languageservice/interfaces'; +import { Constants } from '../models/constants'; /* * ExtConfig class handles getting values from workspace config or config.json. @@ -16,10 +16,11 @@ import * as Constants from '../models/constants'; export default class ExtConfig implements IConfig { constructor(private _extensionConfigSectionName: string, private _config?: IConfig, + path?: string, private _extensionConfig?: WorkspaceConfiguration, private _workspaceConfig?: WorkspaceConfiguration) { if (this._config === undefined) { - this._config = new Config(_extensionConfigSectionName); + this._config = new Config(_extensionConfigSectionName, path); } if (this._extensionConfig === undefined) { this._extensionConfig = workspace.getConfiguration(_extensionConfigSectionName); diff --git a/extensions-modules/src/controllers/vscodeWrapper.ts b/extensions-modules/src/controllers/vscodeWrapper.ts index 7064564ec2..d3e31313d6 100644 --- a/extensions-modules/src/controllers/vscodeWrapper.ts +++ b/extensions-modules/src/controllers/vscodeWrapper.ts @@ -4,11 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import vscode = require('vscode'); -import {IExtensionConstants} from '../models/contracts/contracts'; +import { IExtensionConstants } from '../models/contracts/contracts'; -export import TextEditor = vscode.TextEditor; - -export default class VscodeWrapper { +export class VscodeWrapper { private _extensionConstants: IExtensionConstants; /** * Output channel for logging. Shared among all instances. diff --git a/extensions-modules/src/languageservice/decompressProvider.ts b/extensions-modules/src/languageservice/decompressProvider.ts index 152fa2b0ca..bcf04de3aa 100644 --- a/extensions-modules/src/languageservice/decompressProvider.ts +++ b/extensions-modules/src/languageservice/decompressProvider.ts @@ -5,8 +5,8 @@ 'use strict'; -import {IDecompressProvider, IPackage} from './interfaces'; -import {ILogger} from '../models/interfaces'; +import { IDecompressProvider, IPackage } from './interfaces'; +import { ILogger } from '../models/interfaces'; const decompress = require('decompress'); export default class DecompressProvider implements IDecompressProvider { diff --git a/extensions-modules/src/languageservice/httpClient.ts b/extensions-modules/src/languageservice/httpClient.ts index 98e75f8726..78e1f19db8 100644 --- a/extensions-modules/src/languageservice/httpClient.ts +++ b/extensions-modules/src/languageservice/httpClient.ts @@ -4,14 +4,14 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import {IPackage, IStatusView, PackageError, IHttpClient} from './interfaces'; -import {ILogger} from '../models/interfaces'; -import {parse as parseUrl, Url} from 'url'; +import { IPackage, IStatusView, PackageError, IHttpClient } from './interfaces'; +import { ILogger } from '../models/interfaces'; +import { parse as parseUrl, Url } from 'url'; import * as https from 'https'; import * as http from 'http'; -import {getProxyAgent} from './proxy'; +import { getProxyAgent } from './proxy'; -let fs = require('fs'); +const fs = require('fs'); /* * Http client class to handle downloading files using http or https urls diff --git a/extensions-modules/src/languageservice/interfaces.ts b/extensions-modules/src/languageservice/interfaces.ts index 48ccceec6e..0c62efaf97 100644 --- a/extensions-modules/src/languageservice/interfaces.ts +++ b/extensions-modules/src/languageservice/interfaces.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as tmp from 'tmp'; -import {ILogger} from '../models/interfaces'; +import { ILogger } from '../models/interfaces'; export interface IStatusView { installingService(): void; diff --git a/extensions-modules/src/languageservice/proxy.ts b/extensions-modules/src/languageservice/proxy.ts index 988dc12f4e..d645a3ace3 100644 --- a/extensions-modules/src/languageservice/proxy.ts +++ b/extensions-modules/src/languageservice/proxy.ts @@ -6,8 +6,8 @@ 'use strict'; import { Url, parse as parseUrl } from 'url'; -let HttpProxyAgent = require('http-proxy-agent'); -let HttpsProxyAgent = require('https-proxy-agent'); +const HttpProxyAgent = require('http-proxy-agent'); +const HttpsProxyAgent = require('https-proxy-agent'); function getSystemProxyURL(requestURL: Url): string { if (requestURL.protocol === 'http:') { diff --git a/extensions-modules/src/languageservice/server.ts b/extensions-modules/src/languageservice/server.ts index 0e31295a4b..f8510a7b69 100644 --- a/extensions-modules/src/languageservice/server.ts +++ b/extensions-modules/src/languageservice/server.ts @@ -6,10 +6,10 @@ 'use strict'; import * as path from 'path'; -import {Runtime} from '../models/platform'; +import { Runtime } from '../models/platform'; import ServiceDownloadProvider from './serviceDownloadProvider'; -import {IConfig, IStatusView} from './interfaces'; -let fs = require('fs-extra-promise'); +import { IConfig, IStatusView } from './interfaces'; +const fs = require('fs-extra-promise'); /* diff --git a/extensions-modules/src/languageservice/serverStatus.ts b/extensions-modules/src/languageservice/serverStatus.ts index adc0f7d6df..d25f0021b3 100644 --- a/extensions-modules/src/languageservice/serverStatus.ts +++ b/extensions-modules/src/languageservice/serverStatus.ts @@ -5,10 +5,10 @@ 'use strict'; -import {IStatusView} from './interfaces'; +import { IStatusView } from './interfaces'; import vscode = require('vscode'); -import {IExtensionConstants} from '../models/contracts/contracts'; -import * as Constants from '../models/constants'; +import { IExtensionConstants } from '../models/contracts/contracts'; +import { Constants } from '../models/constants'; /* * The status class which includes the service initialization result. diff --git a/extensions-modules/src/languageservice/serviceClient.ts b/extensions-modules/src/languageservice/serviceClient.ts index f065bde69f..01fcac59c8 100644 --- a/extensions-modules/src/languageservice/serviceClient.ts +++ b/extensions-modules/src/languageservice/serviceClient.ts @@ -1,44 +1,42 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - * ------------------------------------------------------------------------------------------ */ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; import { ExtensionContext, workspace, window, OutputChannel, languages } from 'vscode'; -import { LanguageClient, LanguageClientOptions, ServerOptions, - TransportKind, RequestType, NotificationType, NotificationHandler, - ErrorAction, CloseAction } from 'dataprotocol-client'; +import { + LanguageClient, LanguageClientOptions, ServerOptions, + TransportKind, RequestType, NotificationType, NotificationHandler, + ErrorAction, CloseAction +} from 'dataprotocol-client'; -import VscodeWrapper from '../controllers/vscodeWrapper'; -import Telemetry from '../models/telemetry'; -import * as Utils from '../models/utils'; -import {VersionRequest, IExtensionConstants} from '../models/contracts/contracts'; -import {Logger} from '../models/logger'; -import Constants = require('../models/constants'); -import {ILanguageClientHelper} from '../models/contracts/languageService'; +import { VscodeWrapper } from '../controllers/vscodeWrapper'; +import { Telemetry } from '../models/telemetry'; +import { Utils } from '../models/utils'; +import { VersionRequest, IExtensionConstants } from '../models/contracts/contracts'; +import { Logger } from '../models/logger'; import ServerProvider from './server'; import ServiceDownloadProvider from './serviceDownloadProvider'; import DecompressProvider from './decompressProvider'; import HttpClient from './httpClient'; -import ExtConfig from '../configurations/extConfig'; -import {PlatformInformation, Runtime} from '../models/platform'; -import {ServerInitializationResult, ServerStatusView} from './serverStatus'; +import ExtConfig from '../configurations/extConfig'; +import { PlatformInformation, Runtime } from '../models/platform'; +import { ServerInitializationResult, ServerStatusView } from './serverStatus'; import StatusView from '../views/statusView'; import * as LanguageServiceContracts from '../models/contracts/languageService'; -import * as SharedConstants from '../models/constants'; -import * as utils from '../models/utils'; -var path = require('path'); +import { Constants } from '../models/constants'; import ServiceStatus from './serviceStatus'; -let opener = require('opener'); +const opener = require('opener'); +const path = require('path'); let _channel: OutputChannel = undefined; -const fs = require('fs-extra'); /** * @interface IMessage */ interface IMessage { - jsonrpc: string; + jsonrpc: string; } /** @@ -47,446 +45,446 @@ interface IMessage { */ class LanguageClientErrorHandler { - private vscodeWrapper: VscodeWrapper; + private vscodeWrapper: VscodeWrapper; - /** - * Creates an instance of LanguageClientErrorHandler. - * @memberOf LanguageClientErrorHandler - */ - constructor(constants: IExtensionConstants) { - if (!this.vscodeWrapper) { - this.vscodeWrapper = new VscodeWrapper(constants); - } - Telemetry.getRuntimeId = this.vscodeWrapper.constants.getRuntimeId; - } + /** + * Creates an instance of LanguageClientErrorHandler. + * @memberOf LanguageClientErrorHandler + */ + constructor(constants: IExtensionConstants) { + if (!this.vscodeWrapper) { + this.vscodeWrapper = new VscodeWrapper(constants); + } + Telemetry.getRuntimeId = this.vscodeWrapper.constants.getRuntimeId; + } - /** - * Show an error message prompt with a link to known issues wiki page - * @memberOf LanguageClientErrorHandler - */ - showOnErrorPrompt(): void { - let extensionConstants = this.vscodeWrapper.constants; - Telemetry.sendTelemetryEvent(extensionConstants.serviceName + 'Crash'); - this.vscodeWrapper.showErrorMessage( - extensionConstants.serviceCrashMessage, - SharedConstants.serviceCrashButton).then(action => { - if (action && action === SharedConstants.serviceCrashButton) { - opener(extensionConstants.serviceCrashLink); - } - }); - } + /** + * Show an error message prompt with a link to known issues wiki page + * @memberOf LanguageClientErrorHandler + */ + showOnErrorPrompt(): void { + let extensionConstants = this.vscodeWrapper.constants; + Telemetry.sendTelemetryEvent(extensionConstants.serviceName + 'Crash'); + this.vscodeWrapper.showErrorMessage( + extensionConstants.serviceCrashMessage, + Constants.serviceCrashButton).then(action => { + if (action && action === Constants.serviceCrashButton) { + opener(extensionConstants.serviceCrashLink); + } + }); + } - /** - * Callback for language service client error - * - * @param {Error} error - * @param {Message} message - * @param {number} count - * @returns {ErrorAction} - * - * @memberOf LanguageClientErrorHandler - */ - error(error: Error, message: IMessage, count: number): ErrorAction { - this.showOnErrorPrompt(); + /** + * Callback for language service client error + * + * @param {Error} error + * @param {Message} message + * @param {number} count + * @returns {ErrorAction} + * + * @memberOf LanguageClientErrorHandler + */ + error(error: Error, message: IMessage, count: number): ErrorAction { + this.showOnErrorPrompt(); - // we don't retry running the service since crashes leave the extension - // in a bad, unrecovered state - return ErrorAction.Shutdown; - } + // we don't retry running the service since crashes leave the extension + // in a bad, unrecovered state + return ErrorAction.Shutdown; + } - /** - * Callback for language service client closed - * - * @returns {CloseAction} - * - * @memberOf LanguageClientErrorHandler - */ - closed(): CloseAction { - this.showOnErrorPrompt(); + /** + * Callback for language service client closed + * + * @returns {CloseAction} + * + * @memberOf LanguageClientErrorHandler + */ + closed(): CloseAction { + this.showOnErrorPrompt(); - // we don't retry running the service since crashes leave the extension - // in a bad, unrecovered state - return CloseAction.DoNotRestart; - } + // we don't retry running the service since crashes leave the extension + // in a bad, unrecovered state + return CloseAction.DoNotRestart; + } } // The Service Client class handles communication with the VS Code LanguageClient -export default class SqlToolsServiceClient { - // singleton instance - private static _instance: SqlToolsServiceClient = undefined; +export class SqlToolsServiceClient { + // singleton instance + private static _instance: SqlToolsServiceClient = undefined; - private static _constants: IExtensionConstants = undefined; + private static _constants: IExtensionConstants = undefined; - public static get constants(): IExtensionConstants { - return this._constants; - } + public static get constants(): IExtensionConstants { + return this._constants; + } - public static set constants(constantsObject: IExtensionConstants) { - this._constants = constantsObject; - Telemetry.getRuntimeId = this._constants.getRuntimeId; - } + public static set constants(constantsObject: IExtensionConstants) { + this._constants = constantsObject; + Telemetry.getRuntimeId = this._constants.getRuntimeId; + } - private static _helper: ILanguageClientHelper = undefined; + private static _helper: LanguageServiceContracts.ILanguageClientHelper = undefined; - public static get helper(): ILanguageClientHelper { - return this._helper; - } + public static get helper(): LanguageServiceContracts.ILanguageClientHelper { + return this._helper; + } - public static set helper(helperObject: ILanguageClientHelper) { - this._helper = helperObject; - } + public static set helper(helperObject: LanguageServiceContracts.ILanguageClientHelper) { + this._helper = helperObject; + } - // VS Code Language Client - private _client: LanguageClient = undefined; + // VS Code Language Client + private _client: LanguageClient = undefined; - // getter method for the Language Client - private get client(): LanguageClient { - return this._client; - } + // getter method for the Language Client + private get client(): LanguageClient { + return this._client; + } - private set client(client: LanguageClient) { - this._client = client; - } + private set client(client: LanguageClient) { + this._client = client; + } - public installDirectory: string; - private _downloadProvider: ServiceDownloadProvider; - private _vscodeWrapper: VscodeWrapper; + public installDirectory: string; + private _downloadProvider: ServiceDownloadProvider; + private _vscodeWrapper: VscodeWrapper; - private _serviceStatus: ServiceStatus; + private _serviceStatus: ServiceStatus; - private _languageClientStartTime: number = undefined; - private _installationTime: number = undefined; + private _languageClientStartTime: number = undefined; + private _installationTime: number = undefined; - constructor( - private _server: ServerProvider, - private _logger: Logger, - private _statusView: StatusView, - private _config: ExtConfig) { - this._downloadProvider = _server.downloadProvider; - if (!this._vscodeWrapper) { - this._vscodeWrapper = new VscodeWrapper(SqlToolsServiceClient.constants); - } - this._serviceStatus = new ServiceStatus(SqlToolsServiceClient._constants.serviceName); - } + constructor( + private _server: ServerProvider, + private _logger: Logger, + private _statusView: StatusView, + private _config: ExtConfig) { + this._downloadProvider = _server.downloadProvider; + if (!this._vscodeWrapper) { + this._vscodeWrapper = new VscodeWrapper(SqlToolsServiceClient.constants); + } + this._serviceStatus = new ServiceStatus(SqlToolsServiceClient._constants.serviceName); + } - // gets or creates the singleton service client instance - public static get instance(): SqlToolsServiceClient { - if (this._instance === undefined) { - let constants = this._constants; - let config = new ExtConfig(constants.extensionConfigSectionName); - _channel = window.createOutputChannel(constants.serviceInitializingOutputChannelName); - let logger = new Logger(text => _channel.append(text), constants); - let serverStatusView = new ServerStatusView(constants); - let httpClient = new HttpClient(); - let decompressProvider = new DecompressProvider(); - let downloadProvider = new ServiceDownloadProvider(config, logger, serverStatusView, httpClient, - decompressProvider, constants, false); - let serviceProvider = new ServerProvider(downloadProvider, config, serverStatusView, constants.extensionConfigSectionName); - let statusView = new StatusView(); - this._instance = new SqlToolsServiceClient(serviceProvider, logger, statusView, config); - } - return this._instance; - } + // gets or creates the singleton service client instance + public static getInstance(path: string): SqlToolsServiceClient { + if (this._instance === undefined) { + let constants = this._constants; + let config = new ExtConfig(constants.extensionConfigSectionName, undefined, path); + _channel = window.createOutputChannel(constants.serviceInitializingOutputChannelName); + let logger = new Logger(text => _channel.append(text), constants); + let serverStatusView = new ServerStatusView(constants); + let httpClient = new HttpClient(); + let decompressProvider = new DecompressProvider(); + let downloadProvider = new ServiceDownloadProvider(config, logger, serverStatusView, httpClient, + decompressProvider, constants, false); + let serviceProvider = new ServerProvider(downloadProvider, config, serverStatusView, constants.extensionConfigSectionName); + let statusView = new StatusView(); + this._instance = new SqlToolsServiceClient(serviceProvider, logger, statusView, config); + } + return this._instance; + } - // initialize the Service Client instance by launching - // out-of-proc server through the LanguageClient - public initialize(context: ExtensionContext): Promise { - this._logger.appendLine(SqlToolsServiceClient._constants.serviceInitializing); - this._languageClientStartTime = Date.now(); - return PlatformInformation.getCurrent(SqlToolsServiceClient._constants.getRuntimeId, SqlToolsServiceClient._constants.extensionName).then(platformInfo => { - return this.initializeForPlatform(platformInfo, context); - }).catch(err => { - this._vscodeWrapper.showErrorMessage(err) - }); - } + // initialize the Service Client instance by launching + // out-of-proc server through the LanguageClient + public initialize(context: ExtensionContext): Promise { + this._logger.appendLine(SqlToolsServiceClient._constants.serviceInitializing); + this._languageClientStartTime = Date.now(); + return PlatformInformation.getCurrent(SqlToolsServiceClient._constants.getRuntimeId, SqlToolsServiceClient._constants.extensionName).then(platformInfo => { + return this.initializeForPlatform(platformInfo, context); + }).catch(err => { + this._vscodeWrapper.showErrorMessage(err); + }); + } - public initializeForPlatform(platformInfo: PlatformInformation, context: ExtensionContext): Promise { - return new Promise( (resolve, reject) => { - this._logger.appendLine(SqlToolsServiceClient._constants.commandsNotAvailableWhileInstallingTheService); - this._logger.appendLine(); - this._logger.append(`Platform: ${platformInfo.toString()}`); + public initializeForPlatform(platformInfo: PlatformInformation, context: ExtensionContext): Promise { + return new Promise((resolve, reject) => { + this._logger.appendLine(SqlToolsServiceClient._constants.commandsNotAvailableWhileInstallingTheService); + this._logger.appendLine(); + this._logger.append(`Platform: ${platformInfo.toString()}`); - if (!platformInfo.isValidRuntime()) { - // if it's an unknown Linux distro then try generic Linux x64 and give a warning to the user - if (platformInfo.isLinux()) { - this._logger.appendLine(Constants.usingDefaultPlatformMessage); - platformInfo.runtimeId = Runtime.Linux_64; - } + if (!platformInfo.isValidRuntime()) { + // if it's an unknown Linux distro then try generic Linux x64 and give a warning to the user + if (platformInfo.isLinux()) { + this._logger.appendLine(Constants.usingDefaultPlatformMessage); + platformInfo.runtimeId = Runtime.Linux_64; + } - let ignoreWarning: boolean = this._config.getWorkspaceConfig(Constants.ignorePlatformWarning, false); - if (!ignoreWarning) { - this._vscodeWrapper.showErrorMessage( - Constants.unsupportedPlatformErrorMessage, - Constants.neverShowAgain) - .then(action => { - if (action === Constants.neverShowAgain) { - this._config.updateWorkspaceConfig(Constants.ignorePlatformWarning, true); - } - }); - } + let ignoreWarning: boolean = this._config.getWorkspaceConfig(Constants.ignorePlatformWarning, false); + if (!ignoreWarning) { + this._vscodeWrapper.showErrorMessage( + Constants.unsupportedPlatformErrorMessage, + Constants.neverShowAgain) + .then(action => { + if (action === Constants.neverShowAgain) { + this._config.updateWorkspaceConfig(Constants.ignorePlatformWarning, true); + } + }); + } - Telemetry.sendTelemetryEvent('UnsupportedPlatform', {platform: platformInfo.toString()} ); - } + Telemetry.sendTelemetryEvent('UnsupportedPlatform', { platform: platformInfo.toString() }); + } - if (platformInfo.runtimeId) { - this._logger.appendLine(` (${platformInfo.getRuntimeDisplayName()})`); - } else { - this._logger.appendLine(); - } + if (platformInfo.runtimeId) { + this._logger.appendLine(` (${platformInfo.getRuntimeDisplayName()})`); + } else { + this._logger.appendLine(); + } - this._logger.appendLine(); - this._server.getServerPath(platformInfo.runtimeId).then(serverPath => { - if (serverPath === undefined) { - // Check if the service already installed and if not open the output channel to show the logs - if (_channel !== undefined) { - _channel.show(); - } - let installationStartTime = Date.now(); - this._server.downloadServerFiles(platformInfo.runtimeId).then ( installedServerPath => { - this._installationTime = Date.now() - installationStartTime; - this.initializeLanguageClient(installedServerPath, context, platformInfo.runtimeId); - resolve(new ServerInitializationResult(true, true, installedServerPath)); - }).catch(downloadErr => { - reject(downloadErr); - }); - } else { - this.initializeLanguageClient(serverPath, context, platformInfo.runtimeId); - resolve(new ServerInitializationResult(false, true, serverPath)); - } - }).catch(err => { - Utils.logDebug(SqlToolsServiceClient._constants.serviceLoadingFailed + ' ' + err, SqlToolsServiceClient._constants.extensionConfigSectionName); - Utils.showErrorMsg(SqlToolsServiceClient._constants.serviceLoadingFailed, SqlToolsServiceClient._constants.extensionName); - Telemetry.sendTelemetryEvent('ServiceInitializingFailed'); - reject(err); - }); - }); - } + this._logger.appendLine(); + this._server.getServerPath(platformInfo.runtimeId).then(serverPath => { + if (serverPath === undefined) { + // Check if the service already installed and if not open the output channel to show the logs + if (_channel !== undefined) { + _channel.show(); + } + let installationStartTime = Date.now(); + this._server.downloadServerFiles(platformInfo.runtimeId).then(installedServerPath => { + this._installationTime = Date.now() - installationStartTime; + this.initializeLanguageClient(installedServerPath, context, platformInfo.runtimeId); + resolve(new ServerInitializationResult(true, true, installedServerPath)); + }).catch(downloadErr => { + reject(downloadErr); + }); + } else { + this.initializeLanguageClient(serverPath, context, platformInfo.runtimeId); + resolve(new ServerInitializationResult(false, true, serverPath)); + } + }).catch(err => { + Utils.logDebug(SqlToolsServiceClient._constants.serviceLoadingFailed + ' ' + err, SqlToolsServiceClient._constants.extensionConfigSectionName); + Utils.showErrorMsg(SqlToolsServiceClient._constants.serviceLoadingFailed, SqlToolsServiceClient._constants.extensionName); + Telemetry.sendTelemetryEvent('ServiceInitializingFailed'); + reject(err); + }); + }); + } - /** - * Initializes the SQL language configuration - * - * @memberOf SqlToolsServiceClient - */ - private initializeLanguageConfiguration(): void { - languages.setLanguageConfiguration('sql', { - comments: { - lineComment: '--', - blockComment: ['/*', '*/'] - }, + /** + * Initializes the SQL language configuration + * + * @memberOf SqlToolsServiceClient + */ + private initializeLanguageConfiguration(): void { + languages.setLanguageConfiguration('sql', { + comments: { + lineComment: '--', + blockComment: ['/*', '*/'] + }, - brackets: [ - ['{', '}'], - ['[', ']'], - ['(', ')'] - ], + brackets: [ + ['{', '}'], + ['[', ']'], + ['(', ')'] + ], - __characterPairSupport: { - autoClosingPairs: [ - { open: '{', close: '}' }, - { open: '[', close: ']' }, - { open: '(', close: ')' }, - { open: '"', close: '"', notIn: ['string'] }, - { open: '\'', close: '\'', notIn: ['string', 'comment'] } - ] - } - }); - } + __characterPairSupport: { + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"', notIn: ['string'] }, + { open: '\'', close: '\'', notIn: ['string', 'comment'] } + ] + } + }); + } - private initializeLanguageClient(serverPath: string, context: ExtensionContext, runtimeId: Runtime): void { - if (serverPath === undefined) { - Utils.logDebug(SqlToolsServiceClient._constants.invalidServiceFilePath, SqlToolsServiceClient._constants.extensionConfigSectionName); - throw new Error(SqlToolsServiceClient._constants.invalidServiceFilePath); - } else { - let self = this; + private initializeLanguageClient(serverPath: string, context: ExtensionContext, runtimeId: Runtime): void { + if (serverPath === undefined) { + Utils.logDebug(SqlToolsServiceClient._constants.invalidServiceFilePath, SqlToolsServiceClient._constants.extensionConfigSectionName); + throw new Error(SqlToolsServiceClient._constants.invalidServiceFilePath); + } else { + let self = this; - if (SqlToolsServiceClient._constants.languageId === 'sql') { - self.initializeLanguageConfiguration(); - } + if (SqlToolsServiceClient._constants.languageId === 'sql') { + self.initializeLanguageConfiguration(); + } - // Use default createServerOptions if one isn't specified - let serverOptions: ServerOptions = SqlToolsServiceClient._helper ? - SqlToolsServiceClient._helper.createServerOptions(serverPath, runtimeId) : self.createServerOptions(serverPath); - this.client = this.createLanguageClient(serverOptions); - this.installDirectory = this._downloadProvider.getInstallDirectory(runtimeId, SqlToolsServiceClient._constants.extensionConfigSectionName); + // Use default createServerOptions if one isn't specified + let serverOptions: ServerOptions = SqlToolsServiceClient._helper ? + SqlToolsServiceClient._helper.createServerOptions(serverPath, runtimeId) : self.createServerOptions(serverPath); + this.client = this.createLanguageClient(serverOptions); + this.installDirectory = this._downloadProvider.getInstallDirectory(runtimeId, SqlToolsServiceClient._constants.extensionConfigSectionName); - if (context !== undefined) { - // Create the language client and start the client. - let disposable = this.client.start(); + if (context !== undefined) { + // Create the language client and start the client. + let disposable = this.client.start(); - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); - } - } - } + context.subscriptions.push(disposable); + } + } + } - public createClient(context: ExtensionContext, runtimeId: Runtime, languageClientHelper: ILanguageClientHelper, executableFiles: string[]): Promise { - return new Promise( (resolve, reject) => { - let client: LanguageClient; - this._server.findServerPath(this.installDirectory, executableFiles).then(serverPath => { - if (serverPath === undefined) { - reject(new Error(SqlToolsServiceClient._constants.invalidServiceFilePath)); - } else { + public createClient(context: ExtensionContext, runtimeId: Runtime, languageClientHelper: LanguageServiceContracts.ILanguageClientHelper, executableFiles: string[]): Promise { + return new Promise((resolve, reject) => { + let client: LanguageClient; + this._server.findServerPath(this.installDirectory, executableFiles).then(serverPath => { + if (serverPath === undefined) { + reject(new Error(SqlToolsServiceClient._constants.invalidServiceFilePath)); + } else { - let serverOptions: ServerOptions = languageClientHelper ? - languageClientHelper.createServerOptions(serverPath, runtimeId) : this.createServerOptions(serverPath); + let serverOptions: ServerOptions = languageClientHelper ? + languageClientHelper.createServerOptions(serverPath, runtimeId) : this.createServerOptions(serverPath); - // Options to control the language client - let clientOptions: LanguageClientOptions = { - documentSelector: [SqlToolsServiceClient._constants.languageId], - providerId: '', - synchronize: { - configurationSection: SqlToolsServiceClient._constants.extensionConfigSectionName - }, - errorHandler: new LanguageClientErrorHandler(SqlToolsServiceClient._constants), - serverConnectionMetadata: this._config.getConfigValue(Constants.serverConnectionMetadata) - }; - this._serviceStatus.showServiceLoading(); - // cache the client instance for later use - client = new LanguageClient(SqlToolsServiceClient._constants.serviceName, serverOptions, clientOptions); + // Options to control the language client + let clientOptions: LanguageClientOptions = { + documentSelector: [SqlToolsServiceClient._constants.languageId], + providerId: '', + synchronize: { + configurationSection: SqlToolsServiceClient._constants.extensionConfigSectionName + }, + errorHandler: new LanguageClientErrorHandler(SqlToolsServiceClient._constants), + serverConnectionMetadata: this._config.getConfigValue(Constants.serverConnectionMetadata) + }; + this._serviceStatus.showServiceLoading(); + // cache the client instance for later use + client = new LanguageClient(SqlToolsServiceClient._constants.serviceName, serverOptions, clientOptions); - if (context !== undefined) { - // Create the language client and start the client. - let disposable = client.start(); + if (context !== undefined) { + // Create the language client and start the client. + let disposable = client.start(); - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); - } - client.onReady().then(this._serviceStatus.showServiceLoaded); + context.subscriptions.push(disposable); + } + client.onReady().then(this._serviceStatus.showServiceLoaded); - resolve(client); - } - }, error => { - reject(error); - }); - }); + resolve(client); + } + }, error => { + reject(error); + }); + }); - } + } - private createServerOptions(servicePath): ServerOptions { - let serverArgs = []; - let serverCommand: string = servicePath; - if (servicePath.endsWith('.dll')) { - serverArgs = [servicePath]; - serverCommand = 'dotnet'; - } + private createServerOptions(servicePath): ServerOptions { + let serverArgs = []; + let serverCommand: string = servicePath; + if (servicePath.endsWith('.dll')) { + serverArgs = [servicePath]; + serverCommand = 'dotnet'; + } - // Enable diagnostic logging in the service if it is configured - let config = workspace.getConfiguration(SqlToolsServiceClient._constants.extensionConfigSectionName); - if (config) { - let logDebugInfo = config[Constants.configLogDebugInfo]; - if (logDebugInfo) { - serverArgs.push('--enable-logging'); - } - } - serverArgs.push('--log-dir'); - let logFileLocation = path.join(utils.getDefaultLogLocation(), SqlToolsServiceClient.constants.extensionName); - serverArgs.push(logFileLocation); + // Enable diagnostic logging in the service if it is configured + let config = workspace.getConfiguration(SqlToolsServiceClient._constants.extensionConfigSectionName); + if (config) { + let logDebugInfo = config[Constants.configLogDebugInfo]; + if (logDebugInfo) { + serverArgs.push('--enable-logging'); + } + } + serverArgs.push('--log-dir'); + let logFileLocation = path.join(Utils.getDefaultLogLocation(), SqlToolsServiceClient.constants.extensionName); + serverArgs.push(logFileLocation); - // run the service host using dotnet.exe from the path - let serverOptions: ServerOptions = { command: serverCommand, args: serverArgs, transport: TransportKind.stdio }; - return serverOptions; - } + // run the service host using dotnet.exe from the path + let serverOptions: ServerOptions = { command: serverCommand, args: serverArgs, transport: TransportKind.stdio }; + return serverOptions; + } - private createLanguageClient(serverOptions: ServerOptions): LanguageClient { - // Options to control the language client - let clientOptions: LanguageClientOptions = { - documentSelector: [SqlToolsServiceClient._constants.languageId], - providerId: SqlToolsServiceClient._constants.providerId, - synchronize: { - configurationSection: SqlToolsServiceClient._constants.extensionConfigSectionName - }, - errorHandler: new LanguageClientErrorHandler(SqlToolsServiceClient._constants), - serverConnectionMetadata: this._config.getConfigValue(Constants.serverConnectionMetadata) - }; + private createLanguageClient(serverOptions: ServerOptions): LanguageClient { + // Options to control the language client + let clientOptions: LanguageClientOptions = { + documentSelector: [SqlToolsServiceClient._constants.languageId], + providerId: SqlToolsServiceClient._constants.providerId, + synchronize: { + configurationSection: SqlToolsServiceClient._constants.extensionConfigSectionName + }, + errorHandler: new LanguageClientErrorHandler(SqlToolsServiceClient._constants), + serverConnectionMetadata: this._config.getConfigValue(Constants.serverConnectionMetadata) + }; - this._serviceStatus.showServiceLoading(); - // cache the client instance for later use - let client = new LanguageClient(SqlToolsServiceClient._constants.serviceName, serverOptions, clientOptions); - client.onReady().then( () => { - this.checkServiceCompatibility(); - this._serviceStatus.showServiceLoaded(); - client.onNotification(LanguageServiceContracts.TelemetryNotification.type, this.handleLanguageServiceTelemetryNotification()); - client.onNotification(LanguageServiceContracts.StatusChangedNotification.type, this.handleLanguageServiceStatusNotification()); + this._serviceStatus.showServiceLoading(); + // cache the client instance for later use + let client = new LanguageClient(SqlToolsServiceClient._constants.serviceName, serverOptions, clientOptions); + client.onReady().then(() => { + this.checkServiceCompatibility(); + this._serviceStatus.showServiceLoaded(); + client.onNotification(LanguageServiceContracts.TelemetryNotification.type, this.handleLanguageServiceTelemetryNotification()); + client.onNotification(LanguageServiceContracts.StatusChangedNotification.type, this.handleLanguageServiceStatusNotification()); - // Report the language client startup time - let endTime = Date.now(); - let installationTime = this._installationTime || 0; - let totalTime = endTime - this._languageClientStartTime; - let processStartupTime = totalTime - installationTime; - Telemetry.sendTelemetryEvent('startup/LanguageClientStarted', { - installationTime: String(installationTime), - processStartupTime: String(processStartupTime), - totalTime: String(totalTime), - beginningTimestamp: String(this._languageClientStartTime) - }); - this._languageClientStartTime = undefined; - this._installationTime = undefined; - }); + // Report the language client startup time + let endTime = Date.now(); + let installationTime = this._installationTime || 0; + let totalTime = endTime - this._languageClientStartTime; + let processStartupTime = totalTime - installationTime; + Telemetry.sendTelemetryEvent('startup/LanguageClientStarted', { + installationTime: String(installationTime), + processStartupTime: String(processStartupTime), + totalTime: String(totalTime), + beginningTimestamp: String(this._languageClientStartTime) + }); + this._languageClientStartTime = undefined; + this._installationTime = undefined; + }); - return client; - } + return client; + } - private handleLanguageServiceTelemetryNotification(): NotificationHandler { - return (event: LanguageServiceContracts.TelemetryParams): void => { - Telemetry.sendTelemetryEvent(event.params.eventName, event.params.properties, event.params.measures); - }; - } + private handleLanguageServiceTelemetryNotification(): NotificationHandler { + return (event: LanguageServiceContracts.TelemetryParams): void => { + Telemetry.sendTelemetryEvent(event.params.eventName, event.params.properties, event.params.measures); + }; + } - /** - * Public for testing purposes only. - */ - public handleLanguageServiceStatusNotification(): NotificationHandler { - return (event: LanguageServiceContracts.StatusChangeParams): void => { - this._statusView.languageServiceStatusChanged(event.ownerUri, event.status); - }; - } + /** + * Public for testing purposes only. + */ + public handleLanguageServiceStatusNotification(): NotificationHandler { + return (event: LanguageServiceContracts.StatusChangeParams): void => { + this._statusView.languageServiceStatusChanged(event.ownerUri, event.status); + }; + } - /** - * Send a request to the service client - * @param type The of the request to make - * @param params The params to pass with the request - * @returns A thenable object for when the request receives a response - */ - public sendRequest(type: RequestType, params?: P, client: LanguageClient = undefined): Thenable { - if (client === undefined) { - client = this._client; - } - if (client !== undefined) { - return client.sendRequest(type, params); - } - } + /** + * Send a request to the service client + * @param type The of the request to make + * @param params The params to pass with the request + * @returns A thenable object for when the request receives a response + */ + public sendRequest(type: RequestType, params?: P, client: LanguageClient = undefined): Thenable { + if (client === undefined) { + client = this._client; + } + if (client !== undefined) { + return client.sendRequest(type, params); + } + } - /** - * Register a handler for a notification type - * @param type The notification type to register the handler for - * @param handler The handler to register - */ - public onNotification

(type: NotificationType

, handler: NotificationHandler

, client: LanguageClient = undefined): void { - if (client === undefined) { - client = this._client; - } - if (client !== undefined) { - return client.onNotification(type, handler); - } - } + /** + * Register a handler for a notification type + * @param type The notification type to register the handler for + * @param handler The handler to register + */ + public onNotification

(type: NotificationType

, handler: NotificationHandler

, client: LanguageClient = undefined): void { + if (client === undefined) { + client = this._client; + } + if (client !== undefined) { + return client.onNotification(type, handler); + } + } - public checkServiceCompatibility(): Promise { - return new Promise((resolve, reject) => { - this._client.sendRequest(VersionRequest.type, undefined).then((result) => { - Utils.logDebug(SqlToolsServiceClient._constants.extensionName + ' service client version: ' + result, SqlToolsServiceClient._constants.extensionConfigSectionName); + public checkServiceCompatibility(): Promise { + return new Promise((resolve, reject) => { + this._client.sendRequest(VersionRequest.type, undefined).then((result) => { + Utils.logDebug(SqlToolsServiceClient._constants.extensionName + ' service client version: ' + result, SqlToolsServiceClient._constants.extensionConfigSectionName); - if (result === undefined || !result.startsWith(SqlToolsServiceClient._constants.serviceCompatibleVersion)) { - Utils.showErrorMsg(Constants.serviceNotCompatibleError, SqlToolsServiceClient._constants.extensionName); - Utils.logDebug(Constants.serviceNotCompatibleError, SqlToolsServiceClient._constants.extensionConfigSectionName); - resolve(false); - } else { - resolve(true); - } - }); - }); - } + if (result === undefined || !result.startsWith(SqlToolsServiceClient._constants.serviceCompatibleVersion)) { + Utils.showErrorMsg(Constants.serviceNotCompatibleError, SqlToolsServiceClient._constants.extensionName); + Utils.logDebug(Constants.serviceNotCompatibleError, SqlToolsServiceClient._constants.extensionConfigSectionName); + resolve(false); + } else { + resolve(true); + } + }); + }); + } } diff --git a/extensions-modules/src/languageservice/serviceDownloadProvider.ts b/extensions-modules/src/languageservice/serviceDownloadProvider.ts index 5bd2c36417..79e9a0f773 100644 --- a/extensions-modules/src/languageservice/serviceDownloadProvider.ts +++ b/extensions-modules/src/languageservice/serviceDownloadProvider.ts @@ -9,11 +9,11 @@ import { Runtime, getRuntimeDisplayName } from '../models/platform'; import * as path from 'path'; import { IConfig, IStatusView, IPackage, PackageError, IHttpClient, IDecompressProvider } from './interfaces'; import { ILogger } from '../models/interfaces'; -import Constants = require('../models/constants'); +import { Constants } from '../models/constants'; import * as tmp from 'tmp'; -import {IExtensionConstants} from '../models/contracts/contracts'; +import { IExtensionConstants } from '../models/contracts/contracts'; -let fse = require('fs-extra'); +const fse = require('fs-extra'); /* * Service Download Provider class which handles downloading the SQL Tools service. diff --git a/extensions-modules/src/languageservice/serviceInstallerUtil.ts b/extensions-modules/src/languageservice/serviceInstallerUtil.ts index 948a0f9f9b..1db337a2a3 100644 --- a/extensions-modules/src/languageservice/serviceInstallerUtil.ts +++ b/extensions-modules/src/languageservice/serviceInstallerUtil.ts @@ -61,9 +61,9 @@ export class ServiceInstaller { private _serverProvider = undefined; private _extensionConstants = undefined; - constructor(extensionConstants: IExtensionConstants) { + constructor(extensionConstants: IExtensionConstants, path?: string) { this._extensionConstants = extensionConstants; - this._config = new Config(extensionConstants.extensionConfigSectionName, true); + this._config = new Config(extensionConstants.extensionConfigSectionName, path, true); this._downloadProvider = new ServiceDownloadProvider(this._config, this._logger, this._statusView, this._httpClient, this._decompressProvider, extensionConstants, true); this._serverProvider = new ServerProvider(this._downloadProvider, this._config, this._statusView, extensionConstants.extensionConfigSectionName); } diff --git a/extensions-modules/src/languageservice/serviceStatus.ts b/extensions-modules/src/languageservice/serviceStatus.ts index cf187b82d6..adf2933339 100644 --- a/extensions-modules/src/languageservice/serviceStatus.ts +++ b/extensions-modules/src/languageservice/serviceStatus.ts @@ -1,7 +1,7 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - * ------------------------------------------------------------------------------------------ */ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; import vscode = require('vscode'); diff --git a/extensions-modules/src/main.ts b/extensions-modules/src/main.ts index ae6dee9cb4..f43f2ccd5a 100644 --- a/extensions-modules/src/main.ts +++ b/extensions-modules/src/main.ts @@ -1,13 +1,15 @@ -import SqlToolsServiceClient from './languageservice/serviceClient'; -import ServerProvider from './languageservice/server'; -import VscodeWrapper from './controllers/vscodeWrapper'; -import * as SharedConstants from './models/constants'; -import * as Utils from './models/utils'; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export * from './controllers/vscodeWrapper'; +export * from './models/constants'; +export * from './models/utils'; -export {SqlToolsServiceClient, VscodeWrapper, SharedConstants, Utils}; -export {IExtensionConstants} from './models/contracts/contracts'; -export {ILanguageClientHelper} from './models/contracts/languageService'; -export {Runtime, PlatformInformation} from './models/platform'; -export {Telemetry} from './models/telemetry'; -export {LinuxDistribution} from './models/platform'; -export {ServiceInstaller} from './languageservice/serviceInstallerUtil'; \ No newline at end of file +export { SqlToolsServiceClient } from './languageservice/serviceClient'; +export { IExtensionConstants } from './models/contracts/contracts'; +export { ILanguageClientHelper } from './models/contracts/languageService'; +export { Runtime, PlatformInformation } from './models/platform'; +export { Telemetry } from './models/telemetry'; +export { LinuxDistribution } from './models/platform'; +export { ServiceInstaller } from './languageservice/serviceInstallerUtil'; \ No newline at end of file diff --git a/extensions-modules/src/models/constants.ts b/extensions-modules/src/models/constants.ts index d599ca23f9..23d07a1508 100644 --- a/extensions-modules/src/models/constants.ts +++ b/extensions-modules/src/models/constants.ts @@ -3,24 +3,23 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -//constants -export const configLogDebugInfo: string = 'logDebugInfo'; -export const serviceNotCompatibleError: string = "Client is not compatible with the service layer"; -export const serviceDownloading: string = "Downloading"; -export const serviceInstalling: string = "Installing"; -export const unsupportedPlatformErrorMessage: string = "This platform is unsupported and application services may not function correctly"; -export const extensionActivated: string = 'activated.'; -export const extensionDeactivated: string = 'de-activated.'; -export const configEnabled: string = 'enabled'; -export const configUseDebugSource = 'useDebugSource'; -export const serviceConfigKey = 'service'; -export const executableFilesConfigKey = 'executableFiles'; -export const versionConfigKey = 'version'; -export const downloadUrlConfigKey = 'downloadUrl'; -export const installDirConfigKey = 'installDir'; -export const serviceCrashButton = "View Known Issues"; -export const configDebugSourcePath = 'debugSourcePath'; -export const neverShowAgain = "Don't show again"; -export const ignorePlatformWarning = 'ignorePlatformWarning'; -export const usingDefaultPlatformMessage = "Unknown platform detected, defaulting to Linux_x64 platform"; -export const serverConnectionMetadata = "serverConnectionMetadata"; \ No newline at end of file +export namespace Constants { + //constants + export const configLogDebugInfo: string = 'logDebugInfo'; + export const serviceNotCompatibleError: string = 'Client is not compatible with the service layer'; + export const serviceDownloading: string = 'Downloading'; + export const serviceInstalling: string = 'Installing'; + export const unsupportedPlatformErrorMessage: string = 'This platform is unsupported and application services may not function correctly'; + export const serviceConfigKey = 'service'; + export const executableFilesConfigKey = 'executableFiles'; + export const versionConfigKey = 'version'; + export const downloadUrlConfigKey = 'downloadUrl'; + export const installDirConfigKey = 'installDir'; + export const serviceCrashButton = 'View Known Issues'; + export const neverShowAgain = 'Do not show again'; + export const ignorePlatformWarning = 'ignorePlatformWarning'; + export const usingDefaultPlatformMessage = 'Unknown platform detected, defaulting to Linux_x64 platform'; + export const serverConnectionMetadata = 'serverConnectionMetadata'; + export const extensionDeactivated: string = 'de-activated.'; + export const extensionActivated: string = 'activated.'; +} diff --git a/extensions-modules/src/models/contracts/contracts.ts b/extensions-modules/src/models/contracts/contracts.ts index 97e48f55ee..a96185b7e5 100644 --- a/extensions-modules/src/models/contracts/contracts.ts +++ b/extensions-modules/src/models/contracts/contracts.ts @@ -2,16 +2,16 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict' +'use strict'; -import {RequestType} from 'dataprotocol-client'; -import {Runtime, LinuxDistribution} from '../platform'; +import { RequestType } from 'dataprotocol-client'; +import { Runtime, LinuxDistribution } from '../platform'; // --------------------------------- < Version Request > ------------------------------------------------- // Version request message callback declaration export namespace VersionRequest { - export const type: RequestType = { get method(): string { return 'version'; } }; + export const type: RequestType = { get method(): string { return 'version'; } }; } // Version response format @@ -21,30 +21,30 @@ export type VersionResult = string; // Constants interface for each extension export interface IExtensionConstants { - // TODO: Fill in interface + // TODO: Fill in interface - // Definitely dependent on the extension - extensionName: string; - invalidServiceFilePath: string; - serviceName: string; - extensionConfigSectionName: string; - serviceCompatibleVersion: string; - outputChannelName: string; - languageId: string; - serviceInstallingTo: string; - serviceInitializing: string; - serviceInstalled: string; - serviceLoadingFailed: string; - serviceInstallationFailed: string; - serviceInitializingOutputChannelName: string; - commandsNotAvailableWhileInstallingTheService : string; - providerId: string; - serviceCrashMessage: string; - serviceCrashLink: string; - installFolderName: string; - telemetryExtensionName: string; + // Definitely dependent on the extension + extensionName: string; + invalidServiceFilePath: string; + serviceName: string; + extensionConfigSectionName: string; + serviceCompatibleVersion: string; + outputChannelName: string; + languageId: string; + serviceInstallingTo: string; + serviceInitializing: string; + serviceInstalled: string; + serviceLoadingFailed: string; + serviceInstallationFailed: string; + serviceInitializingOutputChannelName: string; + commandsNotAvailableWhileInstallingTheService: string; + providerId: string; + serviceCrashMessage: string; + serviceCrashLink: string; + installFolderName: string; + telemetryExtensionName: string; - getRuntimeId(platform: string, architecture: string, distribution: LinuxDistribution): Runtime; + getRuntimeId(platform: string, architecture: string, distribution: LinuxDistribution): Runtime; } diff --git a/extensions-modules/src/models/contracts/languageService.ts b/extensions-modules/src/models/contracts/languageService.ts index e366abb255..78d4821c2e 100644 --- a/extensions-modules/src/models/contracts/languageService.ts +++ b/extensions-modules/src/models/contracts/languageService.ts @@ -1,6 +1,10 @@ -import {NotificationType, ServerOptions} from 'dataprotocol-client'; -import {ITelemetryEventProperties, ITelemetryEventMeasures} from '../telemetry'; -import {Runtime} from '../platform'; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { NotificationType, ServerOptions } from 'dataprotocol-client'; +import { ITelemetryEventProperties, ITelemetryEventMeasures } from '../telemetry'; +import { Runtime } from '../platform'; // ------------------------------- < Telemetry Sent Event > ------------------------------------ @@ -8,18 +12,18 @@ import {Runtime} from '../platform'; * Event sent when the language service send a telemetry event */ export namespace TelemetryNotification { - export const type: NotificationType = { get method(): string { return 'telemetry/sqlevent'; } }; + export const type: NotificationType = { get method(): string { return 'telemetry/sqlevent'; } }; } /** * Update event parameters */ export class TelemetryParams { - public params: { - eventName: string; - properties: ITelemetryEventProperties; - measures: ITelemetryEventMeasures; - }; + public params: { + eventName: string; + properties: ITelemetryEventProperties; + measures: ITelemetryEventMeasures; + }; } // ------------------------------- ---------------------------------- @@ -30,26 +34,26 @@ export class TelemetryParams { * Event sent when the language service send a status change event */ export namespace StatusChangedNotification { - export const type: NotificationType = { get method(): string { return 'textDocument/statusChanged'; } }; + export const type: NotificationType = { get method(): string { return 'textDocument/statusChanged'; } }; } /** * Update event parameters */ export class StatusChangeParams { - /** - * URI identifying the text document - */ - public ownerUri: string; + /** + * URI identifying the text document + */ + public ownerUri: string; - /** - * The new status of the document - */ - public status: string; + /** + * The new status of the document + */ + public status: string; } // ------------------------------- ---------------------------------- export interface ILanguageClientHelper { - createServerOptions(servicePath: string, runtimeId?: Runtime): ServerOptions; + createServerOptions(servicePath: string, runtimeId?: Runtime): ServerOptions; } \ No newline at end of file diff --git a/extensions-modules/src/models/interfaces.ts b/extensions-modules/src/models/interfaces.ts index e9ec72dab1..27ab07d4a8 100644 --- a/extensions-modules/src/models/interfaces.ts +++ b/extensions-modules/src/models/interfaces.ts @@ -1,13 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; export interface ILogger { - logDebug(message: string): void; - increaseIndent(): void; - decreaseIndent(): void; - append(message?: string): void; - appendLine(message?: string): void; -} - -export interface IRuntime { - getRuntimeDisplayName(); + logDebug(message: string): void; + increaseIndent(): void; + decreaseIndent(): void; + append(message?: string): void; + appendLine(message?: string): void; } diff --git a/extensions-modules/src/models/logger.ts b/extensions-modules/src/models/logger.ts index 511d4d1cec..98163861ba 100644 --- a/extensions-modules/src/models/logger.ts +++ b/extensions-modules/src/models/logger.ts @@ -3,66 +3,67 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as os from 'os'; -import {ILogger} from './interfaces'; -import * as Utils from './utils'; -import {IExtensionConstants} from './contracts/contracts'; +import { ILogger } from './interfaces'; +import { Utils } from './utils'; +import { IExtensionConstants } from './contracts/contracts'; + /* * Logger class handles logging messages using the Util functions. */ export class Logger implements ILogger { - private _writer: (message: string) => void; - private _prefix: string; - private _extensionConstants: IExtensionConstants; + private _writer: (message: string) => void; + private _prefix: string; + private _extensionConstants: IExtensionConstants; - private _indentLevel: number = 0; - private _indentSize: number = 4; - private _atLineStart: boolean = false; + private _indentLevel: number = 0; + private _indentSize: number = 4; + private _atLineStart: boolean = false; - constructor(writer: (message: string) => void, extensionConstants: IExtensionConstants, prefix?: string) { - this._writer = writer; - this._prefix = prefix; - this._extensionConstants = extensionConstants; - } + constructor(writer: (message: string) => void, extensionConstants: IExtensionConstants, prefix?: string) { + this._writer = writer; + this._prefix = prefix; + this._extensionConstants = extensionConstants; + } - public logDebug(message: string): void { - Utils.logDebug(message, this._extensionConstants.extensionConfigSectionName); - } + public logDebug(message: string): void { + Utils.logDebug(message, this._extensionConstants.extensionConfigSectionName); + } - private _appendCore(message: string): void { - if (this._atLineStart) { - if (this._indentLevel > 0) { - const indent = ' '.repeat(this._indentLevel * this._indentSize); - this._writer(indent); - } + private _appendCore(message: string): void { + if (this._atLineStart) { + if (this._indentLevel > 0) { + const indent = ' '.repeat(this._indentLevel * this._indentSize); + this._writer(indent); + } - if (this._prefix) { - this._writer(`[${this._prefix}] `); - } + if (this._prefix) { + this._writer(`[${this._prefix}] `); + } - this._atLineStart = false; - } + this._atLineStart = false; + } - this._writer(message); - } + this._writer(message); + } - public increaseIndent(): void { - this._indentLevel += 1; - } + public increaseIndent(): void { + this._indentLevel += 1; + } - public decreaseIndent(): void { - if (this._indentLevel > 0) { - this._indentLevel -= 1; - } - } + public decreaseIndent(): void { + if (this._indentLevel > 0) { + this._indentLevel -= 1; + } + } - public append(message?: string): void { - message = message || ''; - this._appendCore(message); - } + public append(message?: string): void { + message = message || ''; + this._appendCore(message); + } - public appendLine(message?: string): void { - message = message || ''; - this._appendCore(message + os.EOL); - this._atLineStart = true; - } + public appendLine(message?: string): void { + message = message || ''; + this._appendCore(message + os.EOL); + this._atLineStart = true; + } } diff --git a/extensions-modules/src/models/platform.ts b/extensions-modules/src/models/platform.ts index bcedf9c2b1..9669016a1d 100644 --- a/extensions-modules/src/models/platform.ts +++ b/extensions-modules/src/models/platform.ts @@ -12,284 +12,229 @@ import * as os from 'os'; const unknown = 'unknown'; export enum Runtime { - UnknownRuntime = 'Unknown', - UnknownVersion = 'Unknown', - Windows_86 = 'Windows_86', - Windows_64 = 'Windows_64', - OSX = 'OSX', - CentOS_7 = 'CentOS_7', - Debian_8 = 'Debian_8', - Fedora_23 = 'Fedora_23', - OpenSUSE_13_2 = 'OpenSUSE_13_2', - SLES_12_2 = 'SLES_12_2', - RHEL_7 = 'RHEL_7', - Ubuntu_14 = 'Ubuntu_14', - Ubuntu_16 = 'Ubuntu_16', - Linux_64 = 'Linux_64', - Linux_86 = 'Linux-86' + UnknownRuntime = 'Unknown', + UnknownVersion = 'Unknown', + Windows_86 = 'Windows_86', + Windows_64 = 'Windows_64', + OSX = 'OSX', + CentOS_7 = 'CentOS_7', + Debian_8 = 'Debian_8', + Fedora_23 = 'Fedora_23', + OpenSUSE_13_2 = 'OpenSUSE_13_2', + SLES_12_2 = 'SLES_12_2', + RHEL_7 = 'RHEL_7', + Ubuntu_14 = 'Ubuntu_14', + Ubuntu_16 = 'Ubuntu_16', + Linux_64 = 'Linux_64', + Linux_86 = 'Linux-86' } export function getRuntimeDisplayName(runtime: Runtime): string { - switch (runtime) { - case Runtime.Windows_64: - return 'Windows'; - case Runtime.Windows_86: - return 'Windows'; - case Runtime.OSX: - return 'OSX'; - case Runtime.CentOS_7: - return 'Linux'; - case Runtime.Debian_8: - return 'Linux'; - case Runtime.Fedora_23: - return 'Linux'; - case Runtime.OpenSUSE_13_2: - return 'Linux'; - case Runtime.SLES_12_2: - return 'Linux'; - case Runtime.RHEL_7: - return 'Linux'; - case Runtime.Ubuntu_14: - return 'Linux'; - case Runtime.Ubuntu_16: - return 'Linux'; - case Runtime.Linux_64: - return 'Linux'; - case Runtime.Linux_86: - return 'Linux'; - default: - return 'Unknown'; - } + switch (runtime) { + case Runtime.Windows_64: + return 'Windows'; + case Runtime.Windows_86: + return 'Windows'; + case Runtime.OSX: + return 'OSX'; + case Runtime.CentOS_7: + return 'Linux'; + case Runtime.Debian_8: + return 'Linux'; + case Runtime.Fedora_23: + return 'Linux'; + case Runtime.OpenSUSE_13_2: + return 'Linux'; + case Runtime.SLES_12_2: + return 'Linux'; + case Runtime.RHEL_7: + return 'Linux'; + case Runtime.Ubuntu_14: + return 'Linux'; + case Runtime.Ubuntu_16: + return 'Linux'; + case Runtime.Linux_64: + return 'Linux'; + case Runtime.Linux_86: + return 'Linux'; + default: + return 'Unknown'; + } } export class PlatformInformation { - public runtimeId: Runtime; + public runtimeId: Runtime; - public constructor( - public platform: string, - public architecture: string, - public distribution: LinuxDistribution = undefined, - public getRuntimeId: (platform: string, architecture: string, distribution: LinuxDistribution) => Runtime) { - try { - this.runtimeId = this.getRuntimeId(platform, architecture, distribution); - } catch (err) { - this.runtimeId = undefined; - } - } + public constructor( + public platform: string, + public architecture: string, + public distribution: LinuxDistribution = undefined, + public getRuntimeId: (platform: string, architecture: string, distribution: LinuxDistribution) => Runtime) { + try { + this.runtimeId = this.getRuntimeId(platform, architecture, distribution); + } catch (err) { + this.runtimeId = undefined; + } + } - public isWindows(): boolean { - return this.platform === 'win32'; - } + public isWindows(): boolean { + return this.platform === 'win32'; + } - public isMacOS(): boolean { - return this.platform === 'darwin'; - } + public isMacOS(): boolean { + return this.platform === 'darwin'; + } - public isLinux(): boolean { - return this.platform === 'linux'; - } + public isLinux(): boolean { + return this.platform === 'linux'; + } - public isValidRuntime(): boolean { - return this.runtimeId !== undefined && this.runtimeId !== Runtime.UnknownRuntime && this.runtimeId !== Runtime.UnknownVersion; - } + public isValidRuntime(): boolean { + return this.runtimeId !== undefined && this.runtimeId !== Runtime.UnknownRuntime && this.runtimeId !== Runtime.UnknownVersion; + } - public getRuntimeDisplayName(): string { - return getRuntimeDisplayName(this.runtimeId); - } + public getRuntimeDisplayName(): string { + return getRuntimeDisplayName(this.runtimeId); + } - public toString(): string { - let result = this.platform; + public toString(): string { + let result = this.platform; - if (this.architecture) { - if (result) { - result += ', '; - } + if (this.architecture) { + if (result) { + result += ', '; + } - result += this.architecture; - } + result += this.architecture; + } - if (this.distribution) { - if (result) { - result += ', '; - } + if (this.distribution) { + if (result) { + result += ', '; + } - result += this.distribution.toString(); - } + result += this.distribution.toString(); + } - return result; - } + return result; + } - public static getCurrent(getRuntimeId: (platform: string, architecture: string, distribution: LinuxDistribution) => Runtime, - extensionName: string): Promise { - let platform = os.platform(); - let architecturePromise: Promise; - let distributionPromise: Promise; + public static getCurrent(getRuntimeId: (platform: string, architecture: string, distribution: LinuxDistribution) => Runtime, + extensionName: string): Promise { + let platform = os.platform(); + let architecturePromise: Promise; + let distributionPromise: Promise; - switch (platform) { - case 'win32': - architecturePromise = PlatformInformation.getWindowsArchitecture(); - distributionPromise = Promise.resolve(undefined); - break; + switch (platform) { + case 'win32': + architecturePromise = PlatformInformation.getWindowsArchitecture(); + distributionPromise = Promise.resolve(undefined); + break; - case 'darwin': - let osVersion = os.release(); - if (parseFloat(osVersion) < 16.0 && extensionName === 'mssql') { - return Promise.reject('The current version of macOS is not supported. Only macOS Sierra and above (>= 10.12) are supported.') - } - architecturePromise = PlatformInformation.getUnixArchitecture(); - distributionPromise = Promise.resolve(undefined); - break; + case 'darwin': + let osVersion = os.release(); + if (parseFloat(osVersion) < 16.0 && extensionName === 'mssql') { + return Promise.reject('The current version of macOS is not supported. Only macOS Sierra and above (>= 10.12) are supported.'); + } + architecturePromise = PlatformInformation.getUnixArchitecture(); + distributionPromise = Promise.resolve(undefined); + break; - case 'linux': - architecturePromise = PlatformInformation.getUnixArchitecture(); - distributionPromise = LinuxDistribution.getCurrent(); - break; + case 'linux': + architecturePromise = PlatformInformation.getUnixArchitecture(); + distributionPromise = LinuxDistribution.getCurrent(); + break; - default: - return Promise.reject(`Unsupported platform: ${platform}`); - } + default: + return Promise.reject(`Unsupported platform: ${platform}`); + } - return architecturePromise.then( arch => { - return distributionPromise.then(distro => { - return new PlatformInformation(platform, arch, distro, getRuntimeId); - }); - }); - } + return architecturePromise.then(arch => { + return distributionPromise.then(distro => { + return new PlatformInformation(platform, arch, distro, getRuntimeId); + }); + }); + } - private static getWindowsArchitecture(): Promise { - return new Promise((resolve, reject) => { - // try to get the architecture from WMIC - PlatformInformation.getWindowsArchitectureWmic().then(architecture => { - if (architecture && architecture !== unknown) { - resolve(architecture); - } else { - // sometimes WMIC isn't available on the path so then try to parse the envvar - PlatformInformation.getWindowsArchitectureEnv().then(architecture => { - resolve(architecture); - }); - } - }); - }); - } + private static getWindowsArchitecture(): Promise { + return new Promise((resolve, reject) => { + // try to get the architecture from WMIC + PlatformInformation.getWindowsArchitectureWmic().then(architecture => { + if (architecture && architecture !== unknown) { + resolve(architecture); + } else { + // sometimes WMIC isn't available on the path so then try to parse the envvar + PlatformInformation.getWindowsArchitectureEnv().then(architecture => { + resolve(architecture); + }); + } + }); + }); + } - private static getWindowsArchitectureWmic(): Promise { - return this.execChildProcess('wmic os get osarchitecture') - .then(architecture => { - if (architecture) { - let archArray: string[] = architecture.split(os.EOL); - if (archArray.length >= 2) { - let arch = archArray[1].trim(); + private static getWindowsArchitectureWmic(): Promise { + return this.execChildProcess('wmic os get osarchitecture') + .then(architecture => { + if (architecture) { + let archArray: string[] = architecture.split(os.EOL); + if (archArray.length >= 2) { + let arch = archArray[1].trim(); - // Note: This string can be localized. So, we'll just check to see if it contains 32 or 64. - if (arch.indexOf('64') >= 0) { - return 'x86_64'; - } else if (arch.indexOf('32') >= 0) { - return 'x86'; - } - } - } + // Note: This string can be localized. So, we'll just check to see if it contains 32 or 64. + if (arch.indexOf('64') >= 0) { + return 'x86_64'; + } else if (arch.indexOf('32') >= 0) { + return 'x86'; + } + } + } - return unknown; - }).catch((error) => { - return unknown; - }); - } + return unknown; + }).catch((error) => { + return unknown; + }); + } - private static getWindowsArchitectureEnv(): Promise { - return new Promise((resolve, reject) => { - if (process.env.PROCESSOR_ARCHITECTURE === 'x86' && process.env.PROCESSOR_ARCHITEW6432 === undefined) { - resolve('x86'); - } - else { - resolve('x86_64'); - } - }); - } + private static getWindowsArchitectureEnv(): Promise { + return new Promise((resolve, reject) => { + if (process.env.PROCESSOR_ARCHITECTURE === 'x86' && process.env.PROCESSOR_ARCHITEW6432 === undefined) { + resolve('x86'); + } + else { + resolve('x86_64'); + } + }); + } - private static getUnixArchitecture(): Promise { - return this.execChildProcess('uname -m') - .then(architecture => { - if (architecture) { - return architecture.trim(); - } + private static getUnixArchitecture(): Promise { + return this.execChildProcess('uname -m') + .then(architecture => { + if (architecture) { + return architecture.trim(); + } - return undefined; - }); - } + return undefined; + }); + } - private static execChildProcess(process: string): Promise { - return new Promise((resolve, reject) => { - child_process.exec(process, { maxBuffer: 500 * 1024 }, (error: Error, stdout: string, stderr: string) => { - if (error) { - reject(error); - return; - } + private static execChildProcess(process: string): Promise { + return new Promise((resolve, reject) => { + child_process.exec(process, { maxBuffer: 500 * 1024 }, (error: Error, stdout: string, stderr: string) => { + if (error) { + reject(error); + return; + } - if (stderr && stderr.length > 0) { - reject(new Error(stderr)); - return; - } + if (stderr && stderr.length > 0) { + reject(new Error(stderr)); + return; + } - resolve(stdout); - }); - }); - } - - private static getRuntimeIdHelper(distributionName: string, distributionVersion: string): Runtime { - switch (distributionName) { - case 'ubuntu': - if (distributionVersion.startsWith('14')) { - // This also works for Linux Mint - return Runtime.Ubuntu_14; - } else if (distributionVersion.startsWith('16')) { - return Runtime.Ubuntu_16; - } - - break; - case 'elementary': - case 'elementary OS': - if (distributionVersion.startsWith('0.3')) { - // Elementary OS 0.3 Freya is binary compatible with Ubuntu 14.04 - return Runtime.Ubuntu_14; - } else if (distributionVersion.startsWith('0.4')) { - // Elementary OS 0.4 Loki is binary compatible with Ubuntu 16.04 - return Runtime.Ubuntu_16; - } - - break; - case 'linuxmint': - if (distributionVersion.startsWith('18')) { - // Linux Mint 18 is binary compatible with Ubuntu 16.04 - return Runtime.Ubuntu_16; - } - - break; - case 'centos': - case 'ol': - // Oracle Linux is binary compatible with CentOS - return Runtime.CentOS_7; - case 'fedora': - return Runtime.Fedora_23; - case 'opensuse': - return Runtime.OpenSUSE_13_2; - case 'sles': - return Runtime.SLES_12_2; - case 'rhel': - return Runtime.RHEL_7; - case 'debian': - return Runtime.Debian_8; - case 'galliumos': - if (distributionVersion.startsWith('2.0')) { - return Runtime.Ubuntu_16; - } - break; - default: - return Runtime.Linux_64; - } - - return Runtime.Linux_64; - } + resolve(stdout); + }); + }); + } } /** @@ -299,71 +244,71 @@ export class PlatformInformation { * https://www.freedesktop.org/software/systemd/man/os-release.html */ export class LinuxDistribution { - public constructor( - public name: string, - public version: string, - public idLike?: string[]) { } + public constructor( + public name: string, + public version: string, + public idLike?: string[]) { } - public static getCurrent(): Promise { - // Try /etc/os-release and fallback to /usr/lib/os-release per the synopsis - // at https://www.freedesktop.org/software/systemd/man/os-release.html. - return LinuxDistribution.fromFilePath('/etc/os-release') - .catch(() => LinuxDistribution.fromFilePath('/usr/lib/os-release')) - .catch(() => Promise.resolve(new LinuxDistribution(unknown, unknown))); - } + public static getCurrent(): Promise { + // Try /etc/os-release and fallback to /usr/lib/os-release per the synopsis + // at https://www.freedesktop.org/software/systemd/man/os-release.html. + return LinuxDistribution.fromFilePath('/etc/os-release') + .catch(() => LinuxDistribution.fromFilePath('/usr/lib/os-release')) + .catch(() => Promise.resolve(new LinuxDistribution(unknown, unknown))); + } - public toString(): string { - return `name=${this.name}, version=${this.version}`; - } + public toString(): string { + return `name=${this.name}, version=${this.version}`; + } - private static fromFilePath(filePath: string): Promise { - return new Promise((resolve, reject) => { - fs.readFile(filePath, 'utf8', (error, data) => { - if (error) { - reject(error); - } else { - resolve(LinuxDistribution.fromReleaseInfo(data)); - } - }); - }); - } + private static fromFilePath(filePath: string): Promise { + return new Promise((resolve, reject) => { + fs.readFile(filePath, 'utf8', (error, data) => { + if (error) { + reject(error); + } else { + resolve(LinuxDistribution.fromReleaseInfo(data)); + } + }); + }); + } - public static fromReleaseInfo(releaseInfo: string, eol: string = os.EOL): LinuxDistribution { - let name = unknown; - let version = unknown; - let idLike: string[] = undefined; + public static fromReleaseInfo(releaseInfo: string, eol: string = os.EOL): LinuxDistribution { + let name = unknown; + let version = unknown; + let idLike: string[] = undefined; - const lines = releaseInfo.split(eol); - for (let line of lines) { - line = line.trim(); + const lines = releaseInfo.split(eol); + for (let line of lines) { + line = line.trim(); - let equalsIndex = line.indexOf('='); - if (equalsIndex >= 0) { - let key = line.substring(0, equalsIndex); - let value = line.substring(equalsIndex + 1); + let equalsIndex = line.indexOf('='); + if (equalsIndex >= 0) { + let key = line.substring(0, equalsIndex); + let value = line.substring(equalsIndex + 1); - // Strip quotes if necessary - if (value.length > 1 && value.startsWith('"') && value.endsWith('"')) { - value = value.substring(1, value.length - 1); - } else if (value.length > 1 && value.startsWith('\'') && value.endsWith('\'')) { - value = value.substring(1, value.length - 1); - } + // Strip quotes if necessary + if (value.length > 1 && value.startsWith('"') && value.endsWith('"')) { + value = value.substring(1, value.length - 1); + } else if (value.length > 1 && value.startsWith('\'') && value.endsWith('\'')) { + value = value.substring(1, value.length - 1); + } - if (key === 'ID') { - name = value; - } else if (key === 'VERSION_ID') { - version = value; - } else if (key === 'ID_LIKE') { - idLike = value.split(' '); - } + if (key === 'ID') { + name = value; + } else if (key === 'VERSION_ID') { + version = value; + } else if (key === 'ID_LIKE') { + idLike = value.split(' '); + } - if (name !== unknown && version !== unknown && idLike !== undefined) { - break; - } - } - } + if (name !== unknown && version !== unknown && idLike !== undefined) { + break; + } + } + } - return new LinuxDistribution(name, version, idLike); - } + return new LinuxDistribution(name, version, idLike); + } } diff --git a/extensions-modules/src/models/telemetry.ts b/extensions-modules/src/models/telemetry.ts index 27dedaa77b..32b4494c4c 100644 --- a/extensions-modules/src/models/telemetry.ts +++ b/extensions-modules/src/models/telemetry.ts @@ -6,13 +6,13 @@ 'use strict'; import vscode = require('vscode'); import TelemetryReporter from 'vscode-extension-telemetry'; -import Utils = require('./utils'); +import { Utils } from './utils'; import { PlatformInformation, Runtime, LinuxDistribution } from './platform'; import { IExtensionConstants } from './contracts/contracts'; export interface ITelemetryEventProperties { - [key: string]: string; - } + [key: string]: string; +} export interface ITelemetryEventMeasures { [key: string]: number; @@ -79,16 +79,16 @@ export class Telemetry { - /** - * Disable telemetry reporting - */ + /** + * Disable telemetry reporting + */ public static disable(): void { this.disabled = true; } - /** - * Initialize the telemetry reporter for use. - */ + /** + * Initialize the telemetry reporter for use. + */ public static initialize(context: vscode.ExtensionContext, extensionConstants: IExtensionConstants): void { if (typeof this.reporter === 'undefined') { // Check if the user has opted out of telemetry @@ -102,9 +102,9 @@ export class Telemetry { } } - /** - * Send a telemetry event for an exception - */ + /** + * Send a telemetry event for an exception + */ public static sendTelemetryEventForException( err: any, methodName: string, extensionConfigName: string): void { try { @@ -127,9 +127,9 @@ export class Telemetry { } } - /** - * Send a telemetry event using application insights - */ + /** + * Send a telemetry event using application insights + */ public static sendTelemetryEvent( eventName: string, properties?: ITelemetryEventProperties, @@ -157,5 +157,3 @@ export class Telemetry { }); } } - -export default Telemetry; diff --git a/extensions-modules/src/models/utils.ts b/extensions-modules/src/models/utils.ts index 6bf9c4ae6e..dd3922a33d 100644 --- a/extensions-modules/src/models/utils.ts +++ b/extensions-modules/src/models/utils.ts @@ -1,264 +1,130 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; import * as crypto from 'crypto'; import * as os from 'os'; import vscode = require('vscode'); -import Constants = require('./constants'); -import {ExtensionContext} from 'vscode'; -import fs = require('fs'); +import { Constants } from './constants'; +import { ExtensionContext } from 'vscode'; var path = require('path'); -// CONSTANTS ////////////////////////////////////////////////////////////////////////////////////// -const msInH = 3.6e6; -const msInM = 60000; -const msInS = 1000; +export namespace Utils { + // INTERFACES ///////////////////////////////////////////////////////////////////////////////////// -// INTERFACES ///////////////////////////////////////////////////////////////////////////////////// + // Interface for package.json information + export interface IPackageInfo { + name: string; + version: string; + aiKey: string; + } -// Interface for package.json information -export interface IPackageInfo { - name: string; - version: string; - aiKey: string; -} + // FUNCTIONS ////////////////////////////////////////////////////////////////////////////////////// -// FUNCTIONS ////////////////////////////////////////////////////////////////////////////////////// + // Get information from the extension's package.json file + export function getPackageInfo(context: ExtensionContext): IPackageInfo { + let extensionPackage = require(context.asAbsolutePath('./package.json')); + if (extensionPackage) { + return { + name: extensionPackage.name, + version: extensionPackage.version, + aiKey: extensionPackage.aiKey + }; + } + } -// Get information from the extension's package.json file -export function getPackageInfo(context: ExtensionContext): IPackageInfo { - let extensionPackage = require(context.asAbsolutePath('./package.json')); - if (extensionPackage) { - return { - name: extensionPackage.name, - version: extensionPackage.version, - aiKey: extensionPackage.aiKey - }; - } -} + // Generate a new GUID + export function generateGuid(): string { + let hexValues: string[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; + // c.f. rfc4122 (UUID version 4 = xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx) + let oct: string = ''; + let tmp: number; + /* tslint:disable:no-bitwise */ + for (let a: number = 0; a < 4; a++) { + tmp = (4294967296 * Math.random()) | 0; + oct += hexValues[tmp & 0xF] + + hexValues[tmp >> 4 & 0xF] + + hexValues[tmp >> 8 & 0xF] + + hexValues[tmp >> 12 & 0xF] + + hexValues[tmp >> 16 & 0xF] + + hexValues[tmp >> 20 & 0xF] + + hexValues[tmp >> 24 & 0xF] + + hexValues[tmp >> 28 & 0xF]; + } -// Generate a new GUID -export function generateGuid(): string { - let hexValues: string[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; - // c.f. rfc4122 (UUID version 4 = xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx) - let oct: string = ''; - let tmp: number; - /* tslint:disable:no-bitwise */ - for (let a: number = 0; a < 4; a++) { - tmp = (4294967296 * Math.random()) | 0; - oct += hexValues[tmp & 0xF] + - hexValues[tmp >> 4 & 0xF] + - hexValues[tmp >> 8 & 0xF] + - hexValues[tmp >> 12 & 0xF] + - hexValues[tmp >> 16 & 0xF] + - hexValues[tmp >> 20 & 0xF] + - hexValues[tmp >> 24 & 0xF] + - hexValues[tmp >> 28 & 0xF]; - } + // 'Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively' + let clockSequenceHi: string = hexValues[8 + (Math.random() * 4) | 0]; + return oct.substr(0, 8) + '-' + oct.substr(9, 4) + '-4' + oct.substr(13, 3) + '-' + clockSequenceHi + oct.substr(16, 3) + '-' + oct.substr(19, 12); + /* tslint:enable:no-bitwise */ + } - // 'Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively' - let clockSequenceHi: string = hexValues[8 + (Math.random() * 4) | 0]; - return oct.substr(0, 8) + '-' + oct.substr(9, 4) + '-4' + oct.substr(13, 3) + '-' + clockSequenceHi + oct.substr(16, 3) + '-' + oct.substr(19, 12); - /* tslint:enable:no-bitwise */ -} + // Generate a unique, deterministic ID for the current user of the extension + export function generateUserId(): Promise { + return new Promise(resolve => { + try { + let interfaces = os.networkInterfaces(); + let mac; + for (let key of Object.keys(interfaces)) { + let item = interfaces[key][0]; + if (!item.internal) { + mac = item.mac; + break; + } + } + if (mac) { + resolve(crypto.createHash('sha256').update(mac + os.homedir(), 'utf8').digest('hex')); + } else { + resolve(generateGuid()); + } + } catch (err) { + resolve(generateGuid()); // fallback + } + }); + } -// Generate a unique, deterministic ID for the current user of the extension -export function generateUserId(): Promise { - return new Promise(resolve => { - try { - let interfaces = os.networkInterfaces(); - let mac; - for(let key of Object.keys(interfaces)) { - let item = interfaces[key][0]; - if (!item.internal) { - mac = item.mac; - break; - } - } - if (mac) { - resolve(crypto.createHash('sha256').update(mac + os.homedir(), 'utf8').digest('hex')); - } else { - resolve(generateGuid()); - } - } catch (err) { - resolve(generateGuid()); // fallback - } - }); -} + // Retrieve the URI for the currently open file if there is one; otherwise return the empty string + export function getActiveTextEditorUri(): string { + if (typeof vscode.window.activeTextEditor !== 'undefined' && + typeof vscode.window.activeTextEditor.document !== 'undefined') { + return vscode.window.activeTextEditor.document.uri.toString(); + } + return ''; + } -// Return 'true' if the active editor window has a .sql file, false otherwise -export function isEditingSqlFile(languageId: string): boolean { - let sqlFile = false; - let editor = getActiveTextEditor(); - if (editor) { - if (editor.document.languageId === languageId) { - sqlFile = true; - } - } - return sqlFile; -} + // Helper to log debug messages + export function logDebug(msg: any, extensionConfigSectionName: string): void { + let config = vscode.workspace.getConfiguration(extensionConfigSectionName); + let logDebugInfo = config[Constants.configLogDebugInfo]; + if (logDebugInfo === true) { + let currentTime = new Date().toLocaleTimeString(); + let outputMsg = '[' + currentTime + ']: ' + msg ? msg.toString() : ''; + console.log(outputMsg); + } + } -// Return the active text editor if there's one -export function getActiveTextEditor(): vscode.TextEditor { - let editor = undefined; - if (vscode.window && vscode.window.activeTextEditor) { - editor = vscode.window.activeTextEditor; - } - return editor; -} + // Helper to show an error message + export function showErrorMsg(msg: string, extensionName: string): void { + vscode.window.showErrorMessage(extensionName + ': ' + msg); + } -// Retrieve the URI for the currently open file if there is one; otherwise return the empty string -export function getActiveTextEditorUri(): string { - if (typeof vscode.window.activeTextEditor !== 'undefined' && - typeof vscode.window.activeTextEditor.document !== 'undefined') { - return vscode.window.activeTextEditor.document.uri.toString(); - } - return ''; -} + export function isEmpty(str: any): boolean { + return (!str || '' === str); + } -// Helper to log messages to output channel -export function logToOutputChannel(msg: any, outputChannelName: string): void { - let outputChannel = vscode.window.createOutputChannel(outputChannelName); - outputChannel.show(); - if (msg instanceof Array) { - msg.forEach(element => { - outputChannel.appendLine(element.toString()); - }); - } else { - outputChannel.appendLine(msg.toString()); - } -} + // The function is a duplicate of \src\paths.js. IT would be better to import path.js but it doesn't + // work for now because the extension is running in different process. + export function getAppDataPath() { + var platform = process.platform; + switch (platform) { + case 'win32': return process.env['APPDATA'] || path.join(process.env['USERPROFILE'], 'AppData', 'Roaming'); + case 'darwin': return path.join(os.homedir(), 'Library', 'Application Support'); + case 'linux': return process.env['XDG_CONFIG_HOME'] || path.join(os.homedir(), '.config'); + default: throw new Error('Platform not supported'); + } + } -// Helper to log debug messages -export function logDebug(msg: any, extensionConfigSectionName: string): void { - let config = vscode.workspace.getConfiguration(extensionConfigSectionName); - let logDebugInfo = config[Constants.configLogDebugInfo]; - if (logDebugInfo === true) { - let currentTime = new Date().toLocaleTimeString(); - let outputMsg = '[' + currentTime + ']: ' + msg ? msg.toString() : ''; - console.log(outputMsg); - } -} - -// Helper to show an info message -export function showInfoMsg(msg: string, extensionName: string): void { - vscode.window.showInformationMessage(extensionName + ': ' + msg ); -} - -// Helper to show an warn message -export function showWarnMsg(msg: string, extensionName: string): void { - vscode.window.showWarningMessage(extensionName + ': ' + msg ); -} - -// Helper to show an error message -export function showErrorMsg(msg: string, extensionName: string): void { - vscode.window.showErrorMessage(extensionName + ': ' + msg ); -} - -export function isEmpty(str: any): boolean { - return (!str || '' === str); -} - -export function isNotEmpty(str: any): boolean { - return (str && '' !== str); -} - -/** - * Format a string. Behaves like C#'s string.Format() function. - */ -export function formatString(str: string, ...args: any[]): string { - // This is based on code originally from https://github.com/Microsoft/vscode/blob/master/src/vs/nls.js - // License: https://github.com/Microsoft/vscode/blob/master/LICENSE.txt - let result: string; - if (args.length === 0) { - result = str; - } else { - result = str.replace(/\{(\d+)\}/g, (match, rest) => { - let index = rest[0]; - return typeof args[index] !== 'undefined' ? args[index] : match; - }); - } - return result; -} - - -/** - * Check if a file exists on disk - */ -export function isFileExisting(filePath: string): boolean { - try { - fs.statSync(filePath); - return true; - } catch (err) { - return false; - } - } - -/** - * Takes a string in the format of HH:MM:SS.MS and returns a number representing the time in - * miliseconds - * @param value The string to convert to milliseconds - * @return False is returned if the string is an invalid format, - * the number of milliseconds in the time string is returned otherwise. - */ -export function parseTimeString(value: string): number | boolean { - if (!value) { - return false; - } - let tempVal = value.split('.'); - - if (tempVal.length !== 2) { - return false; - } - - let ms = parseInt(tempVal[1].substring(0, 3), 10); - tempVal = tempVal[0].split(':'); - - if (tempVal.length !== 3) { - return false; - } - - let h = parseInt(tempVal[0], 10); - let m = parseInt(tempVal[1], 10); - let s = parseInt(tempVal[2], 10); - - return ms + (h * msInH) + (m * msInM) + (s * msInS); -} - -/** - * Takes a number of milliseconds and converts it to a string like HH:MM:SS.fff - * @param value The number of milliseconds to convert to a timespan string - * @returns A properly formatted timespan string. - */ -export function parseNumAsTimeString(value: number): string { - let tempVal = value; - let h = Math.floor(tempVal / msInH); - tempVal %= msInH; - let m = Math.floor(tempVal / msInM); - tempVal %= msInM; - let s = Math.floor(tempVal / msInS); - tempVal %= msInS; - - let hs = h < 10 ? '0' + h : '' + h; - let ms = m < 10 ? '0' + m : '' + m; - let ss = s < 10 ? '0' + s : '' + s; - let mss = tempVal < 10 ? '00' + tempVal : tempVal < 100 ? '0' + tempVal : '' + tempVal; - - let rs = hs + ':' + ms + ':' + ss; - - return tempVal > 0 ? rs + '.' + mss : rs; -} - - -// The function is a duplicate of \src\paths.js. IT would be better to import path.js but it doesn't -// work for now because the extension is running in different process. -export function getAppDataPath() { - var platform = process.platform; - switch (platform) { - case 'win32': return process.env['APPDATA'] || path.join(process.env['USERPROFILE'], 'AppData', 'Roaming'); - case 'darwin': return path.join(os.homedir(), 'Library', 'Application Support'); - case 'linux': return process.env['XDG_CONFIG_HOME'] || path.join(os.homedir(), '.config'); - default: throw new Error('Platform not supported'); + export function getDefaultLogLocation() { + return path.join(getAppDataPath(), 'sqlops'); } } -export function getDefaultLogLocation() { - return path.join(getAppDataPath(), 'sqlops'); -} diff --git a/extensions-modules/src/utils/escapeException.ts b/extensions-modules/src/utils/escapeException.ts deleted file mode 100644 index e405084cbe..0000000000 --- a/extensions-modules/src/utils/escapeException.ts +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -export default require('error-ex')('EscapeException'); diff --git a/extensions-modules/src/utils/validationException.ts b/extensions-modules/src/utils/validationException.ts deleted file mode 100644 index 2e545798ce..0000000000 --- a/extensions-modules/src/utils/validationException.ts +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -export default require('error-ex')('ValidationException'); diff --git a/extensions-modules/src/views/statusView.ts b/extensions-modules/src/views/statusView.ts index 8f9856ebb2..7d4279f613 100644 --- a/extensions-modules/src/views/statusView.ts +++ b/extensions-modules/src/views/statusView.ts @@ -1,142 +1,146 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ import vscode = require('vscode'); -import * as Utils from '../models/utils'; +import { Utils } from '../models/utils'; // Status bar element for each file in the editor class FileStatusBar { - // Item for the connection status - public statusConnection: vscode.StatusBarItem; + // Item for the connection status + public statusConnection: vscode.StatusBarItem; - // Item for the query status - public statusQuery: vscode.StatusBarItem; + // Item for the query status + public statusQuery: vscode.StatusBarItem; - // Item for language service status - public statusLanguageService: vscode.StatusBarItem; + // Item for language service status + public statusLanguageService: vscode.StatusBarItem; - // Timer used for displaying a progress indicator on queries - public progressTimerId: NodeJS.Timer; + // Timer used for displaying a progress indicator on queries + public progressTimerId: NodeJS.Timer; - public currentLanguageServiceStatus: string; + public currentLanguageServiceStatus: string; } export default class StatusView implements vscode.Disposable { - private _statusBars: { [fileUri: string]: FileStatusBar }; - private _lastShownStatusBar: FileStatusBar; + private _statusBars: { [fileUri: string]: FileStatusBar }; + private _lastShownStatusBar: FileStatusBar; - constructor() { - this._statusBars = {}; - vscode.window.onDidChangeActiveTextEditor((params) => this.onDidChangeActiveTextEditor(params)); - vscode.workspace.onDidCloseTextDocument((params) => this.onDidCloseTextDocument(params)); - } + constructor() { + this._statusBars = {}; + vscode.window.onDidChangeActiveTextEditor((params) => this.onDidChangeActiveTextEditor(params)); + vscode.workspace.onDidCloseTextDocument((params) => this.onDidCloseTextDocument(params)); + } - dispose(): void { - for (let bar in this._statusBars) { - if (this._statusBars.hasOwnProperty(bar)) { - this._statusBars[bar].statusConnection.dispose(); - this._statusBars[bar].statusQuery.dispose(); - this._statusBars[bar].statusLanguageService.dispose(); - clearInterval(this._statusBars[bar].progressTimerId); - delete this._statusBars[bar]; - } - } - } + dispose(): void { + for (let bar in this._statusBars) { + if (this._statusBars.hasOwnProperty(bar)) { + this._statusBars[bar].statusConnection.dispose(); + this._statusBars[bar].statusQuery.dispose(); + this._statusBars[bar].statusLanguageService.dispose(); + clearInterval(this._statusBars[bar].progressTimerId); + delete this._statusBars[bar]; + } + } + } - // Create status bar item if needed - private createStatusBar(fileUri: string): void { - let bar = new FileStatusBar(); - bar.statusConnection = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); - bar.statusQuery = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); - bar.statusLanguageService = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); - this._statusBars[fileUri] = bar; - } + // Create status bar item if needed + private createStatusBar(fileUri: string): void { + let bar = new FileStatusBar(); + bar.statusConnection = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); + bar.statusQuery = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); + bar.statusLanguageService = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); + this._statusBars[fileUri] = bar; + } - private destroyStatusBar(fileUri: string): void { - let bar = this._statusBars[fileUri]; - if (bar) { - if (bar.statusConnection) { - bar.statusConnection.dispose(); - } - if (bar.statusQuery) { - bar.statusQuery.dispose(); - } - if (bar.statusLanguageService) { - bar.statusLanguageService.dispose(); - } - if (bar.progressTimerId) { - clearInterval(bar.progressTimerId); - } + private destroyStatusBar(fileUri: string): void { + let bar = this._statusBars[fileUri]; + if (bar) { + if (bar.statusConnection) { + bar.statusConnection.dispose(); + } + if (bar.statusQuery) { + bar.statusQuery.dispose(); + } + if (bar.statusLanguageService) { + bar.statusLanguageService.dispose(); + } + if (bar.progressTimerId) { + clearInterval(bar.progressTimerId); + } - delete this._statusBars[fileUri]; - } - } + delete this._statusBars[fileUri]; + } + } - private getStatusBar(fileUri: string): FileStatusBar { - if (!(fileUri in this._statusBars)) { - // Create it if it does not exist - this.createStatusBar(fileUri); - } + private getStatusBar(fileUri: string): FileStatusBar { + if (!(fileUri in this._statusBars)) { + // Create it if it does not exist + this.createStatusBar(fileUri); + } - let bar = this._statusBars[fileUri]; - if (bar.progressTimerId) { - clearInterval(bar.progressTimerId); - } - return bar; - } + let bar = this._statusBars[fileUri]; + if (bar.progressTimerId) { + clearInterval(bar.progressTimerId); + } + return bar; + } - public languageServiceStatusChanged(fileUri: string, status: string): void { - let bar = this.getStatusBar(fileUri); - bar.currentLanguageServiceStatus = status; - this.updateStatusMessage(status, - () => { return bar.currentLanguageServiceStatus; }, (message) => { - bar.statusLanguageService.text = message; - this.showStatusBarItem(fileUri, bar.statusLanguageService); - }); - } + public languageServiceStatusChanged(fileUri: string, status: string): void { + let bar = this.getStatusBar(fileUri); + bar.currentLanguageServiceStatus = status; + this.updateStatusMessage(status, + () => { return bar.currentLanguageServiceStatus; }, (message) => { + bar.statusLanguageService.text = message; + this.showStatusBarItem(fileUri, bar.statusLanguageService); + }); + } - public updateStatusMessage( - newStatus: string, - getCurrentStatus: () => string, - updateMessage: (message: string) => void): void { - } + public updateStatusMessage( + newStatus: string, + getCurrentStatus: () => string, + updateMessage: (message: string) => void): void { + } - private hideLastShownStatusBar(): void { - if (typeof this._lastShownStatusBar !== 'undefined') { - this._lastShownStatusBar.statusConnection.hide(); - this._lastShownStatusBar.statusQuery.hide(); - this._lastShownStatusBar.statusLanguageService.hide(); - } - } + private hideLastShownStatusBar(): void { + if (typeof this._lastShownStatusBar !== 'undefined') { + this._lastShownStatusBar.statusConnection.hide(); + this._lastShownStatusBar.statusQuery.hide(); + this._lastShownStatusBar.statusLanguageService.hide(); + } + } - private onDidChangeActiveTextEditor(editor: vscode.TextEditor): void { - // Hide the most recently shown status bar - this.hideLastShownStatusBar(); + private onDidChangeActiveTextEditor(editor: vscode.TextEditor): void { + // Hide the most recently shown status bar + this.hideLastShownStatusBar(); - // Change the status bar to match the open file - if (typeof editor !== 'undefined') { - const fileUri = editor.document.uri.toString(); - const bar = this._statusBars[fileUri]; - if (bar) { - this.showStatusBarItem(fileUri, bar.statusConnection); - this.showStatusBarItem(fileUri, bar.statusLanguageService); - } - } - } + // Change the status bar to match the open file + if (typeof editor !== 'undefined') { + const fileUri = editor.document.uri.toString(); + const bar = this._statusBars[fileUri]; + if (bar) { + this.showStatusBarItem(fileUri, bar.statusConnection); + this.showStatusBarItem(fileUri, bar.statusLanguageService); + } + } + } - private onDidCloseTextDocument(doc: vscode.TextDocument): void { - // Remove the status bar associated with the document - this.destroyStatusBar(doc.uri.toString()); - } + private onDidCloseTextDocument(doc: vscode.TextDocument): void { + // Remove the status bar associated with the document + this.destroyStatusBar(doc.uri.toString()); + } - private showStatusBarItem(fileUri: string, statusBarItem: vscode.StatusBarItem): void { - let currentOpenFile = Utils.getActiveTextEditorUri(); + private showStatusBarItem(fileUri: string, statusBarItem: vscode.StatusBarItem): void { + let currentOpenFile = Utils.getActiveTextEditorUri(); - // Only show the status bar if it matches the currently open file and is not empty - if (fileUri === currentOpenFile && !Utils.isEmpty(statusBarItem.text) ) { - statusBarItem.show(); - if (fileUri in this._statusBars) { - this._lastShownStatusBar = this._statusBars[fileUri]; - } - } else { - statusBarItem.hide(); - } - } + // Only show the status bar if it matches the currently open file and is not empty + if (fileUri === currentOpenFile && !Utils.isEmpty(statusBarItem.text)) { + statusBarItem.show(); + if (fileUri in this._statusBars) { + this._lastShownStatusBar = this._statusBars[fileUri]; + } + } else { + statusBarItem.hide(); + } + } } diff --git a/extensions/account-provider-azure/.gitignore b/extensions/account-provider-azure/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/extensions/account-provider-azure/.vscodeignore b/extensions/account-provider-azure/.vscodeignore new file mode 100644 index 0000000000..8aea468642 --- /dev/null +++ b/extensions/account-provider-azure/.vscodeignore @@ -0,0 +1,3 @@ +src/** +tsconfig.json +npm-shrinkwrap.json \ No newline at end of file diff --git a/extensions/account-provider-azure/npm-shrinkwrap.json b/extensions/account-provider-azure/npm-shrinkwrap.json new file mode 100644 index 0000000000..b727e66177 --- /dev/null +++ b/extensions/account-provider-azure/npm-shrinkwrap.json @@ -0,0 +1,348 @@ +{ + "name": "account-provider-azure", + "version": "0.0.1", + "dependencies": { + "@types/node": { + "version": "8.5.1", + "from": "@types/node@>=8.0.47 <9.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.1.tgz" + }, + "adal-node": { + "version": "0.1.25", + "from": "adal-node@0.1.25", + "resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.1.25.tgz" + }, + "ansi-regex": { + "version": "2.1.1", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + }, + "ansi-styles": { + "version": "2.2.1", + "from": "ansi-styles@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + }, + "asn1": { + "version": "0.1.11", + "from": "asn1@0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "async": { + "version": "2.6.0", + "from": "async@>=0.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz" + }, + "aws-sign2": { + "version": "0.5.0", + "from": "aws-sign2@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "base64url": { + "version": "2.0.0", + "from": "base64url@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz" + }, + "bl": { + "version": "1.0.3", + "from": "bl@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz" + }, + "bluebird": { + "version": "2.11.0", + "from": "bluebird@>=2.9.30 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz" + }, + "boom": { + "version": "2.10.1", + "from": "boom@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "from": "buffer-equal-constant-time@1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + }, + "caseless": { + "version": "0.11.0", + "from": "caseless@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "chalk": { + "version": "1.1.3", + "from": "chalk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" + }, + "commander": { + "version": "2.12.2", + "from": "commander@>=2.8.1 <3.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "cryptiles@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "ctype": { + "version": "0.5.3", + "from": "ctype@0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + }, + "date-utils": { + "version": "1.2.21", + "from": "date-utils@*", + "resolved": "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz" + }, + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "from": "ecdsa-sig-formatter@1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz" + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "extend": { + "version": "3.0.1", + "from": "extend@>=3.0.0 <3.1.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz" + }, + "forever-agent": { + "version": "0.6.1", + "from": "forever-agent@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + }, + "form-data": { + "version": "1.0.1", + "from": "form-data@>=1.0.0-rc1 <1.1.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz" + }, + "generate-function": { + "version": "2.0.0", + "from": "generate-function@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "generate-object-property@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" + }, + "har-validator": { + "version": "1.8.0", + "from": "har-validator@>=1.6.1 <2.0.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + }, + "hawk": { + "version": "3.1.3", + "from": "hawk@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" + }, + "hoek": { + "version": "2.16.3", + "from": "hoek@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "http-signature": { + "version": "0.11.0", + "from": "http-signature@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + }, + "is-my-json-valid": { + "version": "2.17.1", + "from": "is-my-json-valid@>=2.12.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz" + }, + "is-property": { + "version": "1.0.2", + "from": "is-property@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "isstream": { + "version": "0.1.2", + "from": "isstream@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@>=5.0.0 <5.1.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "jsonpointer": { + "version": "4.0.1", + "from": "jsonpointer@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" + }, + "jwa": { + "version": "1.1.5", + "from": "jwa@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz" + }, + "jws": { + "version": "3.1.4", + "from": "jws@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz" + }, + "lodash": { + "version": "4.17.4", + "from": "lodash@>=4.14.0 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + }, + "mime-db": { + "version": "1.30.0", + "from": "mime-db@>=1.30.0 <1.31.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz" + }, + "mime-types": { + "version": "2.1.17", + "from": "mime-types@>=2.1.2 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz" + }, + "oauth-sign": { + "version": "0.8.2", + "from": "oauth-sign@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "process-nextick-args@>=1.0.6 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "punycode": { + "version": "1.4.1", + "from": "punycode@>=1.4.1 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + }, + "qs": { + "version": "5.1.0", + "from": "qs@>=5.1.0 <5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" + }, + "readable-stream": { + "version": "2.0.6", + "from": "readable-stream@>=2.0.5 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" + }, + "request": { + "version": "2.63.0", + "from": "request@2.63.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.63.0.tgz", + "dependencies": { + "node-uuid": { + "version": "1.4.8", + "from": "node-uuid@>=1.4.0 <1.5.0", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz" + } + } + }, + "safe-buffer": { + "version": "5.1.1", + "from": "safe-buffer@>=5.0.1 <6.0.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "sntp@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "stringstream": { + "version": "0.0.5", + "from": "stringstream@>=0.0.4 <0.1.0", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + }, + "strip-ansi": { + "version": "3.0.1", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + }, + "tough-cookie": { + "version": "2.3.3", + "from": "tough-cookie@>=0.12.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz" + }, + "tunnel-agent": { + "version": "0.4.3", + "from": "tunnel-agent@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + }, + "underscore": { + "version": "1.8.3", + "from": "underscore@>=1.3.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + }, + "uuid": { + "version": "3.1.0", + "from": "uuid@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz" + }, + "vscode-nls": { + "version": "2.0.2", + "from": "vscode-nls@2.0.2", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-2.0.2.tgz" + }, + "xmldom": { + "version": "0.1.27", + "from": "xmldom@>=0.1.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz" + }, + "xpath.js": { + "version": "1.0.7", + "from": "xpath.js@>=1.0.5 <1.1.0", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.0.7.tgz" + }, + "xtend": { + "version": "4.0.1", + "from": "xtend@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + } +} diff --git a/extensions/mssql/package.disabled.json b/extensions/account-provider-azure/package.disabled.json similarity index 100% rename from extensions/mssql/package.disabled.json rename to extensions/account-provider-azure/package.disabled.json diff --git a/extensions/account-provider-azure/package.json b/extensions/account-provider-azure/package.json new file mode 100644 index 0000000000..53a230ecf3 --- /dev/null +++ b/extensions/account-provider-azure/package.json @@ -0,0 +1,55 @@ +{ + "name": "account-provider-azure", + "version": "0.0.1", + "publisher": "Microsoft", + "engines": { "vscode": "*" }, + "main": "./out/main", + "activationEvents": [ "*" ], + "scripts": { + "compile": "gulp compile-extension:account-provider-azure" + }, + "dependencies": { + "adal-node": "0.1.25", + "request": "2.63.0", + "vscode-nls": "2.0.2" + }, + "devDependencies": { + "@types/node": "^8.0.24" + }, + "contributes": { + "commands": [ + { + "command": "extension.clearTokenCache", + "title": "%extension.clearTokenCache%", + "category": "Azure Accounts" + } + ], + "configuration": { + "type": "object", + "title": "Azure Account Configuration", + "properties": { + "accounts.azure.enablePublicCloud": { + "type": "boolean", + "default": true, + "description": "%config.enablePublicCloudDescription%" + } + } + }, + "account-type": [ + { + "id": "microsoft", + "icon": { + "light": "./out/account-provider/media/microsoft_account_light.svg", + "dark": "./out/account-provider/media/microsoft_account_dark.svg" + } + }, + { + "id": "work_school", + "icon": { + "light": "./out/account-provider/media/work_school_account_light.svg", + "dark": "./out/account-provider/media/work_school_account_dark.svg" + } + } + ] + } +} diff --git a/extensions/account-provider-azure/package.nls.json b/extensions/account-provider-azure/package.nls.json new file mode 100644 index 0000000000..d7b46bd630 --- /dev/null +++ b/extensions/account-provider-azure/package.nls.json @@ -0,0 +1,7 @@ +{ + "extension.clearTokenCache": "Clear Azure Account Token Cache", + "config.enablePublicCloudDescription": "Should Azure public cloud integration be enabled", + "config.enableUsGovCloudDescription": "Should US Government Azure cloud (Fairfax) integration be enabled", + "config.enableChinaCloudDescription": "Should Azure China integration be enabled", + "config.enableGermanyCloudDescription": "Should Azure Germany integration be enabled" +} \ No newline at end of file diff --git a/extensions/mssql/client/src/account-provider/azureAccountProvider.ts b/extensions/account-provider-azure/src/account-provider/azureAccountProvider.ts similarity index 100% rename from extensions/mssql/client/src/account-provider/azureAccountProvider.ts rename to extensions/account-provider-azure/src/account-provider/azureAccountProvider.ts diff --git a/extensions/mssql/client/src/account-provider/azureAccountProviderService.ts b/extensions/account-provider-azure/src/account-provider/azureAccountProviderService.ts similarity index 91% rename from extensions/mssql/client/src/account-provider/azureAccountProviderService.ts rename to extensions/account-provider-azure/src/account-provider/azureAccountProviderService.ts index 96cf56cb64..746f1d5e63 100644 --- a/extensions/mssql/client/src/account-provider/azureAccountProviderService.ts +++ b/extensions/account-provider-azure/src/account-provider/azureAccountProviderService.ts @@ -5,16 +5,18 @@ 'use strict'; +import * as constants from '../constants'; import * as data from 'data'; import * as events from 'events'; +import * as nls from 'vscode-nls'; import * as path from 'path'; import * as vscode from 'vscode'; import CredentialServiceTokenCache from './tokenCache'; import providerSettings from './providerSettings'; import { AzureAccountProvider } from './azureAccountProvider'; import { AzureAccountProviderMetadata, ProviderSettings } from './interfaces'; -import * as nls from 'vscode-nls'; -const localize = nls.loadMessageBundle(); + +let localize = nls.loadMessageBundle(); export class AzureAccountProviderService implements vscode.Disposable { // CONSTANTS /////////////////////////////////////////////////////////////// @@ -75,14 +77,14 @@ export class AzureAccountProviderService implements vscode.Disposable { return Promise.all(promises) .then( - () => { - let message = localize('clearTokenCacheSuccess', 'Token cache successfully cleared'); - vscode.window.showInformationMessage(`mssql: ${message}`); - }, - err => { - let message = localize('clearTokenCacheFailure', 'Failed to clear token cache'); - vscode.window.showErrorMessage(`mssql: ${message}: ${err}`); - }); + () => { + let message = localize('clearTokenCacheSuccess', 'Token cache successfully cleared'); + vscode.window.showInformationMessage(`${constants.extensionName}: ${message}`); + }, + err => { + let message = localize('clearTokenCacheFailure', 'Failed to clear token cache'); + vscode.window.showErrorMessage(`${constants.extensionName}: ${message}: ${err}`); + }); } private onDidChangeConfiguration(): void { @@ -97,7 +99,7 @@ export class AzureAccountProviderService implements vscode.Disposable { // Determine what providers need to be changed let providerChanges: Thenable[] = []; - for(let provider of providerSettings) { + for (let provider of providerSettings) { // If the old config doesn't exist, then assume everything was disabled // There will always be a new config value let oldConfigValue = oldConfig @@ -138,7 +140,7 @@ export class AzureAccountProviderService implements vscode.Disposable { self._accountProviders[provider.metadata.id] = accountProvider; self._accountDisposals[provider.metadata.id] = data.accounts.registerAccountProvider(provider.metadata, accountProvider); resolve(); - } catch(e) { + } catch (e) { console.error(`Failed to register account provider: ${e}`); reject(e); } @@ -154,7 +156,7 @@ export class AzureAccountProviderService implements vscode.Disposable { delete self._accountProviders[provider.metadata.id]; delete self._accountDisposals[provider.metadata.id]; resolve(); - } catch(e) { + } catch (e) { console.error(`Failed to unregister account provider: ${e}`); reject(e); } diff --git a/extensions/mssql/client/src/account-provider/interfaces.ts b/extensions/account-provider-azure/src/account-provider/interfaces.ts similarity index 100% rename from extensions/mssql/client/src/account-provider/interfaces.ts rename to extensions/account-provider-azure/src/account-provider/interfaces.ts diff --git a/extensions/mssql/client/src/account-provider/media/microsoft_account_dark.svg b/extensions/account-provider-azure/src/account-provider/media/microsoft_account_dark.svg similarity index 100% rename from extensions/mssql/client/src/account-provider/media/microsoft_account_dark.svg rename to extensions/account-provider-azure/src/account-provider/media/microsoft_account_dark.svg diff --git a/extensions/mssql/client/src/account-provider/media/microsoft_account_light.svg b/extensions/account-provider-azure/src/account-provider/media/microsoft_account_light.svg similarity index 100% rename from extensions/mssql/client/src/account-provider/media/microsoft_account_light.svg rename to extensions/account-provider-azure/src/account-provider/media/microsoft_account_light.svg diff --git a/extensions/mssql/client/src/account-provider/media/work_school_account_dark.svg b/extensions/account-provider-azure/src/account-provider/media/work_school_account_dark.svg similarity index 100% rename from extensions/mssql/client/src/account-provider/media/work_school_account_dark.svg rename to extensions/account-provider-azure/src/account-provider/media/work_school_account_dark.svg diff --git a/extensions/mssql/client/src/account-provider/media/work_school_account_light.svg b/extensions/account-provider-azure/src/account-provider/media/work_school_account_light.svg similarity index 100% rename from extensions/mssql/client/src/account-provider/media/work_school_account_light.svg rename to extensions/account-provider-azure/src/account-provider/media/work_school_account_light.svg diff --git a/extensions/mssql/client/src/account-provider/providerSettings.ts b/extensions/account-provider-azure/src/account-provider/providerSettings.ts similarity index 99% rename from extensions/mssql/client/src/account-provider/providerSettings.ts rename to extensions/account-provider-azure/src/account-provider/providerSettings.ts index 2d315e74f7..e8bffb9e1f 100644 --- a/extensions/mssql/client/src/account-provider/providerSettings.ts +++ b/extensions/account-provider-azure/src/account-provider/providerSettings.ts @@ -32,6 +32,7 @@ const publicAzureSettings: ProviderSettings = { } }; +/* Leaving for reference const usGovAzureSettings: ProviderSettings = { configKey: 'enableUsGovCloud', metadata: { @@ -97,6 +98,7 @@ const germanyAzureSettings: ProviderSettings = { } } }; +*/ // TODO: Enable China, Germany, and US Gov clouds: (#3031) export default [publicAzureSettings, /*chinaAzureSettings, germanyAzureSettings, usGovAzureSettings*/]; diff --git a/extensions/mssql/client/src/account-provider/tokenCache.ts b/extensions/account-provider-azure/src/account-provider/tokenCache.ts similarity index 95% rename from extensions/mssql/client/src/account-provider/tokenCache.ts rename to extensions/account-provider-azure/src/account-provider/tokenCache.ts index d254b433d7..718b1586db 100644 --- a/extensions/mssql/client/src/account-provider/tokenCache.ts +++ b/extensions/account-provider-azure/src/account-provider/tokenCache.ts @@ -34,8 +34,8 @@ export default class TokenCache implements adal.TokenCache { .then(cache => self.addToCache(cache, entries)) .then(updatedCache => self.writeCache(updatedCache)) .then( - () => callback(null, false), - (err) => callback(err, true) + () => callback(null, false), + (err) => callback(err, true) ); }); } @@ -55,8 +55,8 @@ export default class TokenCache implements adal.TokenCache { } }); }) - .then(() => { return self._credentialProvider.deleteCredential(self._credentialServiceKey); }) - .then(() => {}); + .then(() => { return self._credentialProvider.deleteCredential(self._credentialServiceKey); }) + .then(() => { }); } public find(query: any, callback: (error: Error, results: any[]) => void): void { @@ -70,8 +70,8 @@ export default class TokenCache implements adal.TokenCache { ); }) .then( - results => callback(null, results), - (err) => callback(err, null) + results => callback(null, results), + (err) => callback(err, null) ); }); } @@ -104,8 +104,8 @@ export default class TokenCache implements adal.TokenCache { .then(cache => self.removeFromCache(cache, entries)) .then(updatedCache => self.writeCache(updatedCache)) .then( - () => callback(null, null), - (err) => callback(err, null) + () => callback(null, null), + (err) => callback(err, null) ); }); } @@ -189,7 +189,7 @@ export default class TokenCache implements adal.TokenCache { key: new Buffer(splitValues[0], 'hex'), initializationVector: new Buffer(splitValues[1], 'hex') }; - } catch(e) { + } catch (e) { // Swallow the error and fall through to generate new params console.warn('Failed to deserialize encryption params, new ones will be generated.'); } @@ -204,7 +204,7 @@ export default class TokenCache implements adal.TokenCache { let serializedValues = `${encryptKey.toString('hex')}|${initializationVector.toString('hex')}`; return self._credentialProvider.saveCredential(self._credentialServiceKey, serializedValues) .then(() => { - return { + return { key: encryptKey, initializationVector: initializationVector }; @@ -237,7 +237,7 @@ export default class TokenCache implements adal.TokenCache { } return cacheObj; - } catch(e) { + } catch (e) { throw e; } }) diff --git a/extensions/account-provider-azure/src/constants.ts b/extensions/account-provider-azure/src/constants.ts new file mode 100644 index 0000000000..8f6d985719 --- /dev/null +++ b/extensions/account-provider-azure/src/constants.ts @@ -0,0 +1,12 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import * as nls from 'vscode-nls'; + +const localize = nls.loadMessageBundle(); + +export const extensionName = localize('extensionName', 'Azure Accounts'); diff --git a/extensions/account-provider-azure/src/main.ts b/extensions/account-provider-azure/src/main.ts new file mode 100644 index 0000000000..6e46124a8d --- /dev/null +++ b/extensions/account-provider-azure/src/main.ts @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import * as fs from 'fs'; +import * as path from 'path'; +import * as vscode from 'vscode'; +import { Utils } from 'extensions-modules'; + +import * as constants from './constants'; +import { AzureAccountProviderService } from './account-provider/azureAccountProviderService'; + +// EXTENSION ACTIVATION //////////////////////////////////////////////////// +export function activate(context: vscode.ExtensionContext): void { + // Create the folder for storing the token caches + let storagePath = path.join(Utils.getDefaultLogLocation(), constants.extensionName); + try { + if (!fs.existsSync(storagePath)) { + fs.mkdirSync(storagePath); + console.log('Initialized Azure account extension storage.'); + } + } catch (e) { + console.error(`Initialization of Azure account extension storage failed: ${e}`); + console.error('Azure accounts will not be available'); + return; + } + + // Create the provider service and activate + const accountProviderService = new AzureAccountProviderService(context, storagePath); + context.subscriptions.push(accountProviderService); + accountProviderService.activate(); +} diff --git a/extensions/account-provider-azure/src/typings/ref.d.ts b/extensions/account-provider-azure/src/typings/ref.d.ts new file mode 100644 index 0000000000..e21045c0c8 --- /dev/null +++ b/extensions/account-provider-azure/src/typings/ref.d.ts @@ -0,0 +1,7 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/// +/// diff --git a/extensions/account-provider-azure/tsconfig.json b/extensions/account-provider-azure/tsconfig.json new file mode 100644 index 0000000000..be1e5ee9ce --- /dev/null +++ b/extensions/account-provider-azure/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compileOnSave": true, + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "./out", + "lib": [ + "es6", "es2015.promise" + ], + "sourceMap": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "declaration": true, + "types": ["node"] + }, + "exclude": [ + "./node_modules" + ] +} diff --git a/extensions/mssql/.gitignore b/extensions/mssql/.gitignore index e58344bcee..3b8c6a5a24 100644 --- a/extensions/mssql/.gitignore +++ b/extensions/mssql/.gitignore @@ -1 +1 @@ -sqltoolsservice +sqltoolsservice diff --git a/extensions/mssql/.vscodeignore b/extensions/mssql/.vscodeignore new file mode 100644 index 0000000000..f85ad4c668 --- /dev/null +++ b/extensions/mssql/.vscodeignore @@ -0,0 +1,4 @@ +client/src/** +client/tsconfig.json +npm-shrinkwrap.json +test/** \ No newline at end of file diff --git a/extensions/mssql/client/src/controllers/mainController.ts b/extensions/mssql/client/src/controllers/mainController.ts index 60d4c0c798..d793570cd3 100644 --- a/extensions/mssql/client/src/controllers/mainController.ts +++ b/extensions/mssql/client/src/controllers/mainController.ts @@ -8,183 +8,158 @@ import vscode = require('vscode'); import data = require('data'); import { Constants } from '../models/constants'; import { Serialization } from '../serialize/serialization'; -import { AzureResourceProvider } from '../resourceprovider/resourceprovider'; +import { AzureResourceProvider } from '../resourceProvider/resourceProvider'; import { CredentialStore } from '../credentialstore/credentialstore'; -import {IExtensionConstants, Telemetry, SharedConstants, SqlToolsServiceClient, VscodeWrapper, Utils, PlatformInformation} from 'extensions-modules'; +import { IExtensionConstants, Telemetry, Constants as SharedConstants, SqlToolsServiceClient, VscodeWrapper, Utils, PlatformInformation } from 'extensions-modules'; import { LanguageClient } from 'dataprotocol-client'; -import * as fs from 'fs'; import * as path from 'path'; - -import { AzureAccountProviderService } from '../account-provider/azureAccountProviderService'; - /** * The main controller class that initializes the extension */ export default class MainController implements vscode.Disposable { - private _context: vscode.ExtensionContext; - private _vscodeWrapper: VscodeWrapper; - private _initialized: boolean = false; - private _serialization: Serialization; - private _credentialStore: CredentialStore; - private static _extensionConstants: IExtensionConstants = new Constants(); - private _client: SqlToolsServiceClient; - /** - * The main controller constructor - * @constructor - */ - constructor(context: vscode.ExtensionContext, - vscodeWrapper?: VscodeWrapper) { - this._context = context; - this._vscodeWrapper = vscodeWrapper || new VscodeWrapper(MainController._extensionConstants); - SqlToolsServiceClient.constants = MainController._extensionConstants; - this._client = SqlToolsServiceClient.instance; - this._credentialStore = new CredentialStore(this._client); - this._serialization = new Serialization(this._client); - } + private _context: vscode.ExtensionContext; + private _vscodeWrapper: VscodeWrapper; + private _initialized: boolean = false; + private _serialization: Serialization; + private _credentialStore: CredentialStore; + private static _extensionConstants: IExtensionConstants = new Constants(); + private _client: SqlToolsServiceClient; + /** + * The main controller constructor + * @constructor + */ + constructor(context: vscode.ExtensionContext, + vscodeWrapper?: VscodeWrapper) { + this._context = context; + this._vscodeWrapper = vscodeWrapper || new VscodeWrapper(MainController._extensionConstants); + SqlToolsServiceClient.constants = MainController._extensionConstants; + this._client = SqlToolsServiceClient.getInstance(path.join(__dirname, '../config.json')); + this._credentialStore = new CredentialStore(this._client); + this._serialization = new Serialization(this._client); + } - /** - * Disposes the controller - */ - dispose(): void { - this.deactivate(); - } + /** + * Disposes the controller + */ + dispose(): void { + this.deactivate(); + } - /** - * Deactivates the extension - */ - public deactivate(): void { - Utils.logDebug(SharedConstants.extensionDeactivated, MainController._extensionConstants.extensionConfigSectionName); - } + /** + * Deactivates the extension + */ + public deactivate(): void { + Utils.logDebug(SharedConstants.extensionDeactivated, MainController._extensionConstants.extensionConfigSectionName); + } - /** - * Initializes the extension - */ - public activate(): Promise { - return this.initialize(); - } + /** + * Initializes the extension + */ + public activate(): Promise { + return this.initialize(); + } - /** - * Returns a flag indicating if the extension is initialized - */ - public isInitialized(): boolean { - return this._initialized; - } + /** + * Returns a flag indicating if the extension is initialized + */ + public isInitialized(): boolean { + return this._initialized; + } - private createClient( executableFiles: string[]): Promise { - return PlatformInformation.getCurrent(SqlToolsServiceClient.constants.getRuntimeId, SqlToolsServiceClient.constants.extensionName).then( platformInfo => { - return SqlToolsServiceClient.instance.createClient(this._context, platformInfo.runtimeId, undefined, executableFiles); - }); - } + private createClient(executableFiles: string[]): Promise { + return PlatformInformation.getCurrent(SqlToolsServiceClient.constants.getRuntimeId, SqlToolsServiceClient.constants.extensionName).then(platformInfo => { + return SqlToolsServiceClient.getInstance(path.join(__dirname, '../config.json')).createClient(this._context, platformInfo.runtimeId, undefined, executableFiles); + }); + } - private createCredentialClient(): Promise { - return this.createClient(['MicrosoftSqlToolsCredentials.exe', 'MicrosoftSqlToolsCredentials']); - } + private createCredentialClient(): Promise { + return this.createClient(['MicrosoftSqlToolsCredentials.exe', 'MicrosoftSqlToolsCredentials']); + } - private createSerializationClient(): Promise { - return this.createClient(['MicrosoftSqlToolsSerialization.exe', 'MicrosoftSqlToolsSerialization']); - } + private createSerializationClient(): Promise { + return this.createClient(['MicrosoftSqlToolsSerialization.exe', 'MicrosoftSqlToolsSerialization']); + } - private createResourceProviderClient(): Promise { - return this.createClient(['SqlToolsResourceProviderService.exe', 'SqlToolsResourceProviderService']); - } + private createResourceProviderClient(): Promise { + return this.createClient(['SqlToolsResourceProviderService.exe', 'SqlToolsResourceProviderService']); + } - /** - * Initializes the extension - */ - public initialize(): Promise { - const self = this; + /** + * Initializes the extension + */ + public initialize(): Promise { - // initialize language service client - return new Promise( (resolve, reject) => { + // initialize language service client + return new Promise((resolve, reject) => { + const self = this; + SqlToolsServiceClient.getInstance(path.join(__dirname, '../config.json')).initialize(self._context).then(serverResult => { - let constants = new Constants(); + // Initialize telemetry + Telemetry.initialize(self._context, new Constants()); - // Create the folder for storing the token caches - let storagePath = path.join(Utils.getDefaultLogLocation(), constants.extensionName); - try { - if (!fs.existsSync(storagePath)) { - fs.mkdirSync(storagePath); - console.log('Initialized Azure account extension storage.'); - } - } catch(e) { - console.error(`Initialization of Azure account extension storage failed: ${e}`); - console.error('Azure accounts will not be available'); - return; - } + // telemetry for activation + Telemetry.sendTelemetryEvent('ExtensionActivated', {}, + { serviceInstalled: serverResult.installedBeforeInitializing ? 1 : 0 } + ); - // Create the provider service and activate - const accountProviderService = new AzureAccountProviderService(this._context, storagePath); - this._context.subscriptions.push(accountProviderService); - accountProviderService.activate(); + self.createSerializationClient().then(serializationClient => { + // Serialization + let serializationProvider: data.SerializationProvider = { + handle: 0, + saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Thenable { + return self._serialization.saveAs(saveFormat, savePath, results, appendToFile); + } + }; + data.serialization.registerProvider(serializationProvider); + }, error => { + Utils.logDebug('Cannot find Serialization executables. error: ' + error, MainController._extensionConstants.extensionConfigSectionName); + }); - const self = this; - SqlToolsServiceClient.instance.initialize(self._context).then(serverResult => { + self.createResourceProviderClient().then(rpClient => { + let resourceProvider = new AzureResourceProvider(self._client, rpClient); + data.resources.registerResourceProvider({ + displayName: 'Azure SQL Resource Provider', // TODO Localize + id: 'Microsoft.Azure.SQL.ResourceProvider', + settings: { - // Initialize telemetry - Telemetry.initialize(self._context, new Constants()); + } + }, resourceProvider); + Utils.logDebug('resourceProvider registered', MainController._extensionConstants.extensionConfigSectionName); + }, error => { + Utils.logDebug('Cannot find ResourceProvider executables. error: ' + error, MainController._extensionConstants.extensionConfigSectionName); + }); - // telemetry for activation - Telemetry.sendTelemetryEvent('ExtensionActivated', {}, - { serviceInstalled: serverResult.installedBeforeInitializing ? 1 : 0 } - ); + self.createCredentialClient().then(credentialClient => { - self.createSerializationClient().then(serializationClient => { - let serialization = new Serialization(self._client, serializationClient); - // Serialization - let serializationProvider: data.SerializationProvider = { - handle: 0, - saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Thenable { - return self._serialization.saveAs(saveFormat, savePath, results, appendToFile); - } - }; - data.serialization.registerProvider(serializationProvider); - }, error => { - Utils.logDebug('Cannot find Serialization executables. error: ' + error , MainController._extensionConstants.extensionConfigSectionName); - }); + self._credentialStore.languageClient = credentialClient; + let credentialProvider: data.CredentialProvider = { + handle: 0, + saveCredential(credentialId: string, password: string): Thenable { + return self._credentialStore.saveCredential(credentialId, password); + }, + readCredential(credentialId: string): Thenable { + return self._credentialStore.readCredential(credentialId); + }, + deleteCredential(credentialId: string): Thenable { + return self._credentialStore.deleteCredential(credentialId); + } + }; + data.credentials.registerProvider(credentialProvider); + Utils.logDebug('credentialProvider registered', MainController._extensionConstants.extensionConfigSectionName); + }, error => { + Utils.logDebug('Cannot find credentials executables. error: ' + error, MainController._extensionConstants.extensionConfigSectionName); + }); - self.createResourceProviderClient().then(rpClient => { - let resourceProvider = new AzureResourceProvider(self._client, rpClient); - data.resources.registerResourceProvider({ - displayName: 'Azure SQL Resource Provider', // TODO Localize - id: 'Microsoft.Azure.SQL.ResourceProvider', - settings: { - } - }, resourceProvider); - Utils.logDebug('resourceProvider registered', MainController._extensionConstants.extensionConfigSectionName); - }, error => { - Utils.logDebug('Cannot find ResourceProvider executables. error: ' + error , MainController._extensionConstants.extensionConfigSectionName); - }); - self.createCredentialClient().then(credentialClient => { - - self._credentialStore.languageClient = credentialClient; - let credentialProvider: data.CredentialProvider = { - handle: 0, - saveCredential(credentialId: string, password: string): Thenable { - return self._credentialStore.saveCredential(credentialId, password); - }, - readCredential(credentialId: string): Thenable { - return self._credentialStore.readCredential(credentialId); - }, - deleteCredential(credentialId: string): Thenable { - return self._credentialStore.deleteCredential(credentialId); - } - }; - data.credentials.registerProvider(credentialProvider); - Utils.logDebug('credentialProvider registered', MainController._extensionConstants.extensionConfigSectionName); - }, error => { - Utils.logDebug('Cannot find credentials executables. error: ' + error , MainController._extensionConstants.extensionConfigSectionName); - }); - - Utils.logDebug(SharedConstants.extensionActivated, MainController._extensionConstants.extensionConfigSectionName); - self._initialized = true; - resolve(true); - }).catch(err => { - Telemetry.sendTelemetryEventForException(err, 'initialize', MainController._extensionConstants.extensionConfigSectionName); - reject(err); - }); - }); - } + Utils.logDebug(SharedConstants.extensionActivated, MainController._extensionConstants.extensionConfigSectionName); + self._initialized = true; + resolve(true); + }).catch(err => { + Telemetry.sendTelemetryEventForException(err, 'initialize', MainController._extensionConstants.extensionConfigSectionName); + reject(err); + }); + }); + } } diff --git a/extensions/mssql/client/src/credentialstore/credentialstore.ts b/extensions/mssql/client/src/credentialstore/credentialstore.ts index 2d16c0031c..ccda034b2f 100644 --- a/extensions/mssql/client/src/credentialstore/credentialstore.ts +++ b/extensions/mssql/client/src/credentialstore/credentialstore.ts @@ -1,13 +1,14 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Source EULA. See License.txt in the project root for license information. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; import * as Contracts from '../models/contracts'; import { ICredentialStore } from './icredentialstore'; import { SqlToolsServiceClient, Utils } from 'extensions-modules'; import { LanguageClient } from 'dataprotocol-client'; +import * as path from 'path'; /** * Implements a credential storage for Windows, Mac (darwin), or Linux. @@ -16,58 +17,58 @@ import { LanguageClient } from 'dataprotocol-client'; */ export class CredentialStore implements ICredentialStore { - public languageClient: LanguageClient; + public languageClient: LanguageClient; - constructor(private _client?: SqlToolsServiceClient) { - if (!this._client) { - this._client = SqlToolsServiceClient.instance; - } - } + constructor(private _client?: SqlToolsServiceClient) { + if (!this._client) { + this._client = SqlToolsServiceClient.getInstance(path.join(__dirname, '../config.json')); + } + } - /** - * Gets a credential saved in the credential store - * - * @param {string} credentialId the ID uniquely identifying this credential - * @returns {Promise} Promise that resolved to the credential, or undefined if not found - */ - public readCredential(credentialId: string): Promise { - Utils.logDebug(this.languageClient, 'MainController._extensionConstants'); - let self = this; - let cred: Contracts.Credential = new Contracts.Credential(); - cred.credentialId = credentialId; - return new Promise( (resolve, reject) => { - self._client - .sendRequest(Contracts.ReadCredentialRequest.type, cred, this.languageClient) - .then(returnedCred => { - resolve(returnedCred); - }, err => reject(err)); - }); - } + /** + * Gets a credential saved in the credential store + * + * @param {string} credentialId the ID uniquely identifying this credential + * @returns {Promise} Promise that resolved to the credential, or undefined if not found + */ + public readCredential(credentialId: string): Promise { + Utils.logDebug(this.languageClient, 'MainController._extensionConstants'); + let self = this; + let cred: Contracts.Credential = new Contracts.Credential(); + cred.credentialId = credentialId; + return new Promise((resolve, reject) => { + self._client + .sendRequest(Contracts.ReadCredentialRequest.type, cred, this.languageClient) + .then(returnedCred => { + resolve(returnedCred); + }, err => reject(err)); + }); + } - public saveCredential(credentialId: string, password: any): Promise { - let self = this; - let cred: Contracts.Credential = new Contracts.Credential(); - cred.credentialId = credentialId; - cred.password = password; - return new Promise( (resolve, reject) => { - self._client - .sendRequest(Contracts.SaveCredentialRequest.type, cred, this.languageClient) - .then(status => { - resolve(status); - }, err => reject(err)); - }); - } + public saveCredential(credentialId: string, password: any): Promise { + let self = this; + let cred: Contracts.Credential = new Contracts.Credential(); + cred.credentialId = credentialId; + cred.password = password; + return new Promise((resolve, reject) => { + self._client + .sendRequest(Contracts.SaveCredentialRequest.type, cred, this.languageClient) + .then(status => { + resolve(status); + }, err => reject(err)); + }); + } - public deleteCredential(credentialId: string): Promise { - let self = this; - let cred: Contracts.Credential = new Contracts.Credential(); - cred.credentialId = credentialId; - return new Promise( (resolve, reject) => { - self._client - .sendRequest(Contracts.DeleteCredentialRequest.type, cred, this.languageClient) - .then(status => { - resolve(status); - }, err => reject(err)); - }); - } + public deleteCredential(credentialId: string): Promise { + let self = this; + let cred: Contracts.Credential = new Contracts.Credential(); + cred.credentialId = credentialId; + return new Promise((resolve, reject) => { + self._client + .sendRequest(Contracts.DeleteCredentialRequest.type, cred, this.languageClient) + .then(status => { + resolve(status); + }, err => reject(err)); + }); + } } diff --git a/extensions/mssql/client/src/credentialstore/icredentialstore.ts b/extensions/mssql/client/src/credentialstore/icredentialstore.ts index a9df9cf64c..a9b4022919 100644 --- a/extensions/mssql/client/src/credentialstore/icredentialstore.ts +++ b/extensions/mssql/client/src/credentialstore/icredentialstore.ts @@ -1,7 +1,7 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Source EULA. See License.txt in the project root for license information. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; @@ -17,7 +17,7 @@ import { Credential } from '../models/contracts'; * @interface ICredentialStore */ export interface ICredentialStore { - readCredential(credentialId: string): Promise; - saveCredential(credentialId: string, password: any): Promise; - deleteCredential(credentialId: string): Promise; + readCredential(credentialId: string): Promise; + saveCredential(credentialId: string, password: any): Promise; + deleteCredential(credentialId: string): Promise; } diff --git a/extensions/mssql/client/src/mssqlMain.ts b/extensions/mssql/client/src/main.ts similarity index 76% rename from extensions/mssql/client/src/mssqlMain.ts rename to extensions/mssql/client/src/main.ts index 99a7127068..3fc96be21b 100644 --- a/extensions/mssql/client/src/mssqlMain.ts +++ b/extensions/mssql/client/src/main.ts @@ -7,7 +7,7 @@ import vscode = require('vscode'); import MainController from './controllers/mainController'; -let controller: MainController = undefined; +export let controller: MainController; export function activate(context: vscode.ExtensionContext) { controller = new MainController(context); @@ -17,14 +17,7 @@ export function activate(context: vscode.ExtensionContext) { // this method is called when your extension is deactivated export function deactivate(): void { - if (controller) { - controller.deactivate(); - } -} - -/** - * Exposed for testing purposes - */ -export function getController(): MainController { - return controller; + if (controller) { + controller.deactivate(); + } } diff --git a/extensions/mssql/client/src/models/constants.ts b/extensions/mssql/client/src/models/constants.ts index 61d6831d5a..5c12d93815 100644 --- a/extensions/mssql/client/src/models/constants.ts +++ b/extensions/mssql/client/src/models/constants.ts @@ -3,315 +3,141 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import {IExtensionConstants} from 'extensions-modules/lib/models/contracts/contracts'; -import {Runtime, LinuxDistribution} from 'extensions-modules/lib/models/platform'; +import { IExtensionConstants } from 'extensions-modules/lib/models/contracts/contracts'; +import { Runtime, LinuxDistribution } from 'extensions-modules/lib/models/platform'; // constants export class Constants implements IExtensionConstants { - public readonly languageId = 'sql'; - public readonly extensionName = 'mssql'; - public readonly extensionConfigSectionName = 'mssql'; - public readonly connectionApplicationName = 'vscode-mssql'; - public readonly outputChannelName = 'MSSQL'; - public readonly connectionConfigFilename = 'settings.json'; - public readonly connectionsArrayName = 'mssql.connections'; - public readonly cmdRunQuery = 'extension.runQuery'; - public readonly cmdCancelQuery = 'extension.cancelQuery'; - public readonly cmdConnect = 'extension.connect'; - public readonly cmdDisconnect = 'extension.disconnect'; - public readonly cmdChooseDatabase = 'extension.chooseDatabase'; - public readonly cmdShowReleaseNotes = 'extension.showReleaseNotes'; - public readonly cmdShowGettingStarted = 'extension.showGettingStarted'; - public readonly cmdNewQuery = 'extension.newQuery'; - public readonly cmdManageConnectionProfiles = 'extension.manageProfiles'; - public readonly sqlDbPrefix = '.database.windows.net'; - public readonly defaultConnectionTimeout = 15; - public readonly azureSqlDbConnectionTimeout = 30; - public readonly azureDatabase = 'Azure'; - public readonly defaultPortNumber = 1433; - public readonly sqlAuthentication = 'SqlLogin'; - public readonly defaultDatabase = 'master'; - public readonly errorPasswordExpired = 18487; - public readonly errorPasswordNeedsReset = 18488; - public readonly maxDisplayedStatusTextLength = 50; - public readonly outputContentTypeRoot = 'root'; - public readonly outputContentTypeMessages = 'messages'; - public readonly outputContentTypeResultsetMeta = 'resultsetsMeta'; - public readonly outputContentTypeColumns = 'columns'; - public readonly outputContentTypeRows = 'rows'; - public readonly outputContentTypeConfig = 'config'; - public readonly outputContentTypeSaveResults = 'saveResults'; - public readonly outputContentTypeOpenLink = 'openLink'; - public readonly outputContentTypeCopy = 'copyResults'; - public readonly outputContentTypeEditorSelection = 'setEditorSelection'; - public readonly outputContentTypeShowError = 'showError'; - public readonly outputContentTypeShowWarning = 'showWarning'; - public readonly outputServiceLocalhost = 'http://localhost:'; - public readonly msgContentProviderSqlOutputHtml = 'dist/html/sqlOutput.ejs'; - public readonly contentProviderMinFile = 'dist/js/app.min.js'; - public readonly configLogDebugInfo = 'logDebugInfo'; - public readonly providerId = 'MSSQL'; - public readonly installFolderName = 'sqltoolsservice'; - public readonly telemetryExtensionName = 'carbon-mssql'; + public readonly languageId = 'sql'; + public readonly extensionName = 'mssql'; + public readonly extensionConfigSectionName = 'mssql'; + public readonly outputChannelName = 'MSSQL'; + public readonly providerId = 'MSSQL'; + public readonly installFolderName = 'sqltoolsservice'; + public readonly telemetryExtensionName = 'carbon-mssql'; - // localizable strings - public readonly configMyConnectionsNoServerName = 'Missing server name in user preferences connection: '; - public readonly msgLocalWebserviceStaticContent = 'LocalWebService: added static html content path: '; - public readonly msgLocalWebserviceStarted = 'LocalWebService listening on port '; - public readonly msgRunQueryAllBatchesExecuted = 'runQuery: all batches executed'; - public readonly msgStartedExecute = 'Started query execution for document "{0}"'; - public readonly msgFinishedExecute = 'Finished query execution for document "{0}"'; - public readonly msgRunQueryError = 'runQuery: error: '; - public readonly msgRunQueryExecutingBatch = 'runQuery: executeBatch called with SQL: '; - public readonly msgRunQueryAddBatchResultsets = 'runQuery: adding resultsets for batch: '; - public readonly msgRunQueryAddBatchError = 'runQuery: adding error message for batch: '; - public readonly msgRunQueryConnectionActive = 'runQuery: active connection is connected, using it to run query'; - public readonly msgRunQueryConnectionDisconnected = 'runQuery: active connection is disconnected, reconnecting'; - public readonly msgRunQueryNoConnection = 'runQuery: no active connection - prompting for user'; - public readonly msgRunQueryInProgress = 'A query is already running for this editor session. Please cancel this query or wait for its completion.'; - public readonly runQueryBatchStartMessage = 'Started executing query at '; - public readonly runQueryBatchStartLine = 'Line {0}'; - public readonly msgCancelQueryFailed = 'Canceling the query failed: {0}'; - public readonly msgCancelQueryNotRunning = 'Cannot cancel query as no query is running.'; - public readonly msgCancelQuerySuccess = 'Successfully canceled the query.'; - public readonly msgContentProviderOnContentUpdated = 'Content provider: onContentUpdated called'; - public readonly msgContentProviderAssociationFailure = 'Content provider: Unable to associate status view for current file'; - public readonly msgContentProviderOnRootEndpoint = 'LocalWebService: Root end-point called'; - public readonly msgContentProviderOnResultsEndpoint = 'LocalWebService: ResultsetsMeta endpoint called'; - public readonly msgContentProviderOnMessagesEndpoint = 'LocalWebService: Messages end-point called'; - public readonly msgContentProviderOnColumnsEndpoint = 'LocalWebService: Columns end-point called for index = '; - public readonly msgContentProviderOnRowsEndpoint = 'LocalWebService: Rows end-point called for index = '; - public readonly msgContentProviderOnClear = 'Content provider: clear called'; - public readonly msgContentProviderOnUpdateContent = 'Content provider: updateContent called'; - public readonly msgContentProviderProvideContent = 'Content provider: provideTextDocumentContent called: '; - public readonly msgChooseDatabaseNotConnected = 'No connection was found. Please connect to a server first.'; - public readonly msgChooseDatabasePlaceholder = 'Choose a database from the list below'; - public readonly msgConnectionError = 'Error {0}: {1}'; - public readonly msgConnectionError2 = 'Failed to connect: {0}'; - public readonly msgConnectionErrorPasswordExpired = 'Error {0}: {1} Please login as a different user and change the password using ALTER LOGIN.'; - public readonly connectionErrorChannelName = 'Connection Errors'; - public readonly msgPromptCancelConnect = 'Server connection in progress. Do you want to cancel?'; - public readonly msgPromptClearRecentConnections = 'Confirm to clear recent connections list'; - public readonly msgOpenSqlFile = 'To use this command, Open a .sql file -or- ' + - 'Change editor language to "SQL" -or- ' + - 'Select T-SQL text in the active SQL editor.'; - public readonly recentConnectionsPlaceholder = 'Choose a connection profile from the list below'; - public readonly msgNoConnectionsInSettings = 'To use this command, add connection profile to User Settings.'; - public readonly labelOpenGlobalSettings = 'Open Global Settings'; - public readonly labelOpenWorkspaceSettings = 'Open Workspace Settings'; - public readonly CreateProfileFromConnectionsListLabel = 'Create Connection Profile'; - public readonly CreateProfileLabel = 'Create'; - public readonly ClearRecentlyUsedLabel = 'Clear Recent Connections List'; - public readonly EditProfilesLabel = 'Edit'; - public readonly RemoveProfileLabel = 'Remove'; - public readonly ManageProfilesPrompt = 'Manage Connection Profiles'; - public readonly SampleServerName = '{{put-server-name-here}}'; - public readonly serverPrompt = 'Server name'; - public readonly serverPlaceholder = 'hostname\\instance or .database.windows.net'; - public readonly databasePrompt = 'Database name'; - public readonly databasePlaceholder = '[Optional] Database to connect (press Enter to connect to database)'; - public readonly databaseDefaultValue = 'master'; - public readonly authTypePrompt = 'Authentication Type'; - public readonly authTypeIntegrated = 'Integrated'; - public readonly authTypeSql = 'SQL Login'; - public readonly authTypeAdUniversal = 'Active Directory Universal'; - public readonly usernamePrompt = 'User name'; - public readonly usernamePlaceholder = 'User name (SQL Login)'; - public readonly passwordPrompt = 'Password'; - public readonly passwordPlaceholder = 'Password (SQL Login)'; - public readonly msgSavePassword = 'Save Password? If \'No\', password will be required each time you connect'; - public readonly profileNamePrompt = 'Profile Name'; - public readonly profileNamePlaceholder = '[Optional] Enter a name for this profile'; - public readonly filepathPrompt = 'File path'; - public readonly filepathPlaceholder = 'File name'; - public readonly filepathMessage = 'File name'; - public readonly overwritePrompt = 'A file with this name already exists. Do you want to replace the existing file?'; - public readonly overwritePlaceholder = 'A file with this name already exists'; - public readonly msgSaveResultInProgress = 'A save request is already executing. Please wait for its completion.'; - public readonly msgCannotOpenContent = 'Error occurred opening content in editor.'; - public readonly msgSaveStarted = 'Started saving results to '; - public readonly msgSaveFailed = 'Failed to save results. '; - public readonly msgSaveSucceeded = 'Successfully saved results to '; - public readonly msgSelectProfile = 'Select connection profile'; - public readonly msgSelectProfileToRemove = 'Select profile to remove'; - public readonly confirmRemoveProfilePrompt = 'Confirm to remove this profile.'; - public readonly msgNoProfilesSaved = 'No connection profile to remove.'; - public readonly msgProfileRemoved = 'Profile removed successfully'; - public readonly msgProfileCreated = 'Profile created successfully'; - public readonly msgProfileCreatedAndConnected = 'Profile created and connected'; - public readonly msgClearedRecentConnections = 'Recent connections list cleared'; - public readonly msgSelectionIsRequired = 'Selection is required.'; - public readonly msgIsRequired = ' is required.'; - public readonly msgRetry = 'Retry'; - public readonly msgError = 'Error: '; - public readonly msgYes = 'Yes'; - public readonly msgNo = 'No'; - public readonly defaultDatabaseLabel = ''; - public readonly notConnectedLabel = 'Disconnected'; - public readonly notConnectedTooltip = 'Click to connect to a database'; - public readonly connectingLabel = 'Connecting'; - public readonly connectingTooltip = 'Connecting to: '; - public readonly connectedLabel = 'Connected.'; - public readonly connectErrorLabel = 'Connection error'; - public readonly connectErrorTooltip = 'Error connecting to: '; - public readonly connectErrorCode = 'Errorcode: '; - public readonly connectErrorMessage = 'ErrorMessage: '; - public readonly executeQueryLabel = 'Executing query '; - public readonly cancelingQueryLabel = 'Canceling query '; - public readonly updatingIntelliSenseLabel = 'Updating IntelliSense...'; - public readonly unfoundResult = 'Data was disposed when text editor was closed; to view data please reexecute query.'; - public readonly serviceCompatibleVersion = '1.0.0'; - public readonly serviceNotCompatibleError = 'Client is not compatible with the service layer'; - public readonly serviceInstallingTo = 'Installing SQL tools service to'; - public readonly serviceInitializing = 'Initializing SQL tools service for the mssql extension.'; - public readonly commandsNotAvailableWhileInstallingTheService = 'Note: mssql commands will be available after installing the service.'; - public readonly serviceInstalled = 'Sql Tools Service installed'; - public readonly serviceInstallationFailed = 'Failed to install Sql Tools Service'; - public readonly serviceLoadingFailed = 'Failed to load Sql Tools Service'; - public readonly invalidServiceFilePath = 'Invalid file path for Sql Tools Service'; - public readonly extensionNotInitializedError = 'Unable to execute the command while the extension is initializing. Please try again later.'; - public readonly untitledScheme = 'untitled'; - public readonly untitledSaveTimeThreshold = 10.0; - public readonly renamedOpenTimeThreshold = 10.0; - public readonly msgChangeLanguageMode = 'To use this command, you must set the language to \"SQL\". Confirm to change language mode.'; - public readonly timeToWaitForLanguageModeChange = 10000.0; - public readonly msgChangedDatabaseContext = 'Changed database context to \"{0}\" for document \"{1}\"'; - public readonly msgPromptRetryCreateProfile = 'Error: Unable to connect using the connection information provided. Retry profile creation?'; - public readonly retryLabel = 'Retry'; - public readonly msgConnecting = 'Connecting to server \"{0}\" on document \"{1}\".'; - public readonly msgConnectedServerInfo = 'Connected to server \"{0}\" on document \"{1}\". Server information: {2}'; - public readonly msgConnectionFailed = 'Error connecting to server \"{0}\". Details: {1}'; - public readonly msgChangingDatabase = 'Changing database context to \"{0}\" on server \"{1}\" on document \"{2}\".'; - public readonly msgChangedDatabase = 'Changed database context to \"{0}\" on server \"{1}\" on document \"{2}\".'; - public readonly msgDisconnected = 'Disconnected on document \"{0}\"'; - public readonly msgErrorReadingConfigFile = 'Error: Unable to load connection profiles from [{0}]. Check if the file is formatted correctly.'; - public readonly msgErrorOpeningConfigFile = 'Error: Unable to open connection profile settings file.'; - public readonly extConfigResultKeys = ['shortcuts', 'messagesDefaultOpen']; - public readonly extConfigResultFontFamily = 'resultsFontFamily'; - public readonly extConfigResultFontSize = 'resultsFontSize'; - public readonly titleResultsPane = 'Results: {0}'; - public readonly macOpenSslErrorMessage = `OpenSSL version >=1.0.1 is required to connect.`; - public readonly macOpenSslHelpButton = 'Help'; - public readonly macOpenSslHelpLink = 'https://github.com/Microsoft/vscode-mssql/wiki/OpenSSL-Configuration'; - public readonly serviceName = 'SQLToolsService'; - public readonly serviceInitializingOutputChannelName = 'SqlToolsService Initialization'; - public readonly gettingStartedGuideLink = 'https://aka.ms/mssql-getting-started'; - public readonly serviceCrashMessage = 'SQL Tools Service component exited unexpectedly. Please restart SQL Operations Studio.'; - public readonly serviceCrashLink = 'https://github.com/Microsoft/vscode-mssql/wiki/SqlToolsService-Known-Issues'; - public readonly gettingDefinitionMessage = 'Getting definition ...'; - public readonly definitionRequestedStatus = 'DefinitionRequested'; - public readonly definitionRequestCompletedStatus = 'DefinitionRequestCompleted'; - public readonly updatingIntelliSenseStatus = 'updatingIntelliSense'; - public readonly intelliSenseUpdatedStatus = 'intelliSenseUpdated'; + // localizable strings + public readonly serviceCompatibleVersion = '1.0.0'; + public readonly serviceInstallingTo = 'Installing SQL tools service to'; + public readonly serviceInitializing = 'Initializing SQL tools service for the mssql extension.'; + public readonly commandsNotAvailableWhileInstallingTheService = 'Note: mssql commands will be available after installing the service.'; + public readonly serviceInstalled = 'Sql Tools Service installed'; + public readonly serviceInstallationFailed = 'Failed to install Sql Tools Service'; + public readonly serviceLoadingFailed = 'Failed to load Sql Tools Service'; + public readonly invalidServiceFilePath = 'Invalid file path for Sql Tools Service'; + public readonly serviceName = 'SQLToolsService'; + public readonly serviceInitializingOutputChannelName = 'SqlToolsService Initialization'; + public readonly serviceCrashMessage = 'SQL Tools Service component exited unexpectedly. Please restart SQL Operations Studio.'; + public readonly serviceCrashLink = 'https://github.com/Microsoft/vscode-mssql/wiki/SqlToolsService-Known-Issues'; - /** - * Returns a supported .NET Core Runtime ID (RID) for the current platform. The list of Runtime IDs - * is available at https://github.com/dotnet/corefx/tree/master/pkg/Microsoft.NETCore.Platforms. - */ - public getRuntimeId(platform: string, architecture: string, distribution: LinuxDistribution): Runtime { - switch (platform) { - case 'win32': - switch (architecture) { - case 'x86': return Runtime.Windows_86; - case 'x86_64': return Runtime.Windows_64; - default: - } + /** + * Returns a supported .NET Core Runtime ID (RID) for the current platform. The list of Runtime IDs + * is available at https://github.com/dotnet/corefx/tree/master/pkg/Microsoft.NETCore.Platforms. + */ + public getRuntimeId(platform: string, architecture: string, distribution: LinuxDistribution): Runtime { + switch (platform) { + case 'win32': + switch (architecture) { + case 'x86': return Runtime.Windows_86; + case 'x86_64': return Runtime.Windows_64; + default: + } - throw new Error(`Unsupported Windows architecture: ${architecture}`); + throw new Error(`Unsupported Windows architecture: ${architecture}`); - case 'darwin': - if (architecture === 'x86_64') { - // Note: We return the El Capitan RID for Sierra - return Runtime.OSX; - } + case 'darwin': + if (architecture === 'x86_64') { + // Note: We return the El Capitan RID for Sierra + return Runtime.OSX; + } - throw new Error(`Unsupported macOS architecture: ${architecture}`); + throw new Error(`Unsupported macOS architecture: ${architecture}`); - case 'linux': - if (architecture === 'x86_64') { + case 'linux': + if (architecture === 'x86_64') { - // First try the distribution name - let runtimeId = Constants.getRuntimeIdHelper(distribution.name, distribution.version); + // First try the distribution name + let runtimeId = Constants.getRuntimeIdHelper(distribution.name, distribution.version); - // If the distribution isn't one that we understand, but the 'ID_LIKE' field has something that we understand, use that - // - // NOTE: 'ID_LIKE' doesn't specify the version of the 'like' OS. So we will use the 'VERSION_ID' value. This will restrict - // how useful ID_LIKE will be since it requires the version numbers to match up, but it is the best we can do. - if (runtimeId === Runtime.UnknownRuntime && distribution.idLike && distribution.idLike.length > 0) { - for (let id of distribution.idLike) { - runtimeId = Constants.getRuntimeIdHelper(id, distribution.version); - if (runtimeId !== Runtime.UnknownRuntime) { - break; - } - } - } + // If the distribution isn't one that we understand, but the 'ID_LIKE' field has something that we understand, use that + // + // NOTE: 'ID_LIKE' doesn't specify the version of the 'like' OS. So we will use the 'VERSION_ID' value. This will restrict + // how useful ID_LIKE will be since it requires the version numbers to match up, but it is the best we can do. + if (runtimeId === Runtime.UnknownRuntime && distribution.idLike && distribution.idLike.length > 0) { + for (let id of distribution.idLike) { + runtimeId = Constants.getRuntimeIdHelper(id, distribution.version); + if (runtimeId !== Runtime.UnknownRuntime) { + break; + } + } + } - if (runtimeId !== Runtime.UnknownRuntime && runtimeId !== Runtime.UnknownVersion) { - return runtimeId; - } - } + if (runtimeId !== Runtime.UnknownRuntime && runtimeId !== Runtime.UnknownVersion) { + return runtimeId; + } + } - // If we got here, this is not a Linux distro or architecture that we currently support. - throw new Error(`Unsupported Linux distro: ${distribution.name}, ${distribution.version}, ${architecture}`); - default : - // If we got here, we've ended up with a platform we don't support like 'freebsd' or 'sunos'. - // Chances are, VS Code doesn't support these platforms either. - throw Error('Unsupported platform ' + platform); - } - } + // If we got here, this is not a Linux distro or architecture that we currently support. + throw new Error(`Unsupported Linux distro: ${distribution.name}, ${distribution.version}, ${architecture}`); + default: + // If we got here, we've ended up with a platform we don't support like 'freebsd' or 'sunos'. + // Chances are, VS Code doesn't support these platforms either. + throw Error('Unsupported platform ' + platform); + } + } - private static getRuntimeIdHelper(distributionName: string, distributionVersion: string): Runtime { - switch (distributionName) { - case 'ubuntu': - if (distributionVersion.startsWith('14')) { - // This also works for Linux Mint - return Runtime.Ubuntu_14; - } else if (distributionVersion.startsWith('16')) { - return Runtime.Ubuntu_16; - } + private static getRuntimeIdHelper(distributionName: string, distributionVersion: string): Runtime { + switch (distributionName) { + case 'ubuntu': + if (distributionVersion.startsWith('14')) { + // This also works for Linux Mint + return Runtime.Ubuntu_14; + } else if (distributionVersion.startsWith('16')) { + return Runtime.Ubuntu_16; + } - break; - case 'elementary': - case 'elementary OS': - if (distributionVersion.startsWith('0.3')) { - // Elementary OS 0.3 Freya is binary compatible with Ubuntu 14.04 - return Runtime.Ubuntu_14; - } else if (distributionVersion.startsWith('0.4')) { - // Elementary OS 0.4 Loki is binary compatible with Ubuntu 16.04 - return Runtime.Ubuntu_16; - } + break; + case 'elementary': + case 'elementary OS': + if (distributionVersion.startsWith('0.3')) { + // Elementary OS 0.3 Freya is binary compatible with Ubuntu 14.04 + return Runtime.Ubuntu_14; + } else if (distributionVersion.startsWith('0.4')) { + // Elementary OS 0.4 Loki is binary compatible with Ubuntu 16.04 + return Runtime.Ubuntu_16; + } - break; - case 'linuxmint': - if (distributionVersion.startsWith('18')) { - // Linux Mint 18 is binary compatible with Ubuntu 16.04 - return Runtime.Ubuntu_16; - } + break; + case 'linuxmint': + if (distributionVersion.startsWith('18')) { + // Linux Mint 18 is binary compatible with Ubuntu 16.04 + return Runtime.Ubuntu_16; + } - break; - case 'centos': - case 'ol': - // Oracle Linux is binary compatible with CentOS - return Runtime.CentOS_7; - case 'fedora': - return Runtime.Fedora_23; - case 'opensuse': - return Runtime.OpenSUSE_13_2; - case 'sles': - return Runtime.SLES_12_2; - case 'rhel': - return Runtime.RHEL_7; - case 'debian': - return Runtime.Debian_8; - case 'galliumos': - if (distributionVersion.startsWith('2.0')) { - return Runtime.Ubuntu_16; - } - break; - default: - return Runtime.UnknownRuntime; - } + break; + case 'centos': + case 'ol': + // Oracle Linux is binary compatible with CentOS + return Runtime.CentOS_7; + case 'fedora': + return Runtime.Fedora_23; + case 'opensuse': + return Runtime.OpenSUSE_13_2; + case 'sles': + return Runtime.SLES_12_2; + case 'rhel': + return Runtime.RHEL_7; + case 'debian': + return Runtime.Debian_8; + case 'galliumos': + if (distributionVersion.startsWith('2.0')) { + return Runtime.Ubuntu_16; + } + break; + default: + return Runtime.UnknownRuntime; + } - return Runtime.UnknownVersion; - } + return Runtime.UnknownVersion; + } } \ No newline at end of file diff --git a/extensions/mssql/client/src/models/contracts.ts b/extensions/mssql/client/src/models/contracts.ts index a66b19b434..5292118e58 100644 --- a/extensions/mssql/client/src/models/contracts.ts +++ b/extensions/mssql/client/src/models/contracts.ts @@ -1,10 +1,10 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Source EULA. See License.txt in the project root for license information. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; -import {RequestType} from 'dataprotocol-client'; +import { RequestType } from 'dataprotocol-client'; import * as data from 'data'; // DEV-NOTE: Still finalizing what we'll need as part of this interface @@ -16,37 +16,35 @@ import * as data from 'data'; * @param {boolean} appendToFile Whether we should append or overwrite the file in savePath */ export class SaveResultsInfo { - - - constructor(public saveFormat: string, public savePath: string, public results: string, - public appendToFile: boolean) { - } + constructor(public saveFormat: string, public savePath: string, public results: string, + public appendToFile: boolean) { + } } export namespace SaveAsRequest { - export const type: RequestType = { get method(): string { return 'query/saveAs'; } }; + export const type: RequestType = { get method(): string { return 'query/saveAs'; } }; } // --------------------------------- < Read Credential Request > ------------------------------------------------- // Read Credential request message callback declaration export namespace ReadCredentialRequest { - export const type: RequestType = { get method(): string { return 'credential/read'; } }; + export const type: RequestType = { get method(): string { return 'credential/read'; } }; } /** * Parameters to initialize a connection to a database */ export class Credential { - /** - * Unique ID identifying the credential - */ - public credentialId: string; + /** + * Unique ID identifying the credential + */ + public credentialId: string; - /** - * password - */ - public password: string; + /** + * password + */ + public password: string; } // --------------------------------- ------------------------------------------------- @@ -55,7 +53,7 @@ export class Credential { // Save Credential request message callback declaration export namespace SaveCredentialRequest { - export const type: RequestType = { get method(): string { return 'credential/save'; } }; + export const type: RequestType = { get method(): string { return 'credential/save'; } }; } // --------------------------------- ------------------------------------------------- @@ -64,7 +62,7 @@ export namespace SaveCredentialRequest { // Delete Credential request message callback declaration export namespace DeleteCredentialRequest { - export const type: RequestType = { get method(): string { return 'credential/delete'; } }; + export const type: RequestType = { get method(): string { return 'credential/delete'; } }; } // --------------------------------- ------------------------------------------------- @@ -101,4 +99,3 @@ export interface HandleFirewallRuleResponse { result: boolean; ipAddress: string; } - diff --git a/extensions/mssql/client/src/resourceprovider/resourceprovider.ts b/extensions/mssql/client/src/resourceprovider/resourceprovider.ts index 5cae4173fc..9954480676 100644 --- a/extensions/mssql/client/src/resourceprovider/resourceprovider.ts +++ b/extensions/mssql/client/src/resourceprovider/resourceprovider.ts @@ -1,13 +1,14 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Source EULA. See License.txt in the project root for license information. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; import * as Contracts from '../models/contracts'; import { SqlToolsServiceClient } from 'extensions-modules'; import { LanguageClient } from 'dataprotocol-client'; import * as data from 'data'; +import * as path from 'path'; /** @@ -17,47 +18,47 @@ import * as data from 'data'; */ export class AzureResourceProvider implements data.ResourceProvider { - public languageClient: LanguageClient; + public languageClient: LanguageClient; - constructor(private _client?: SqlToolsServiceClient, langClient?: LanguageClient) { - if (!this._client) { - this._client = SqlToolsServiceClient.instance; - } - this.languageClient = langClient; - } + constructor(private _client?: SqlToolsServiceClient, langClient?: LanguageClient) { + if (!this._client) { + this._client = SqlToolsServiceClient.getInstance(path.join(__dirname, '../config.json')); + } + this.languageClient = langClient; + } - public createFirewallRule(account: data.Account, firewallruleInfo: data.FirewallRuleInfo): Thenable { - let self = this; - return new Promise((resolve, reject) => { - self._client. - sendRequest(Contracts.CreateFirewallRuleRequest.type, self.asCreateFirewallRuleParams(account, firewallruleInfo), self.languageClient) - .then(response => { - resolve(response); - }, err => reject(err)); - }); - } + public createFirewallRule(account: data.Account, firewallruleInfo: data.FirewallRuleInfo): Thenable { + let self = this; + return new Promise((resolve, reject) => { + self._client. + sendRequest(Contracts.CreateFirewallRuleRequest.type, self.asCreateFirewallRuleParams(account, firewallruleInfo), self.languageClient) + .then(response => { + resolve(response); + }, err => reject(err)); + }); + } - public handleFirewallRule(errorCode: number, errorMessage: string, connectionTypeId: string): Thenable { - let self = this; - return new Promise((resolve, reject) => { - let params: Contracts.HandleFirewallRuleParams = { errorCode: errorCode, errorMessage: errorMessage, connectionTypeId: connectionTypeId }; + public handleFirewallRule(errorCode: number, errorMessage: string, connectionTypeId: string): Thenable { + let self = this; + return new Promise((resolve, reject) => { + let params: Contracts.HandleFirewallRuleParams = { errorCode: errorCode, errorMessage: errorMessage, connectionTypeId: connectionTypeId }; - self._client. - sendRequest(Contracts.HandleFirewallRuleRequest.type, params, self.languageClient) - .then(response => { - resolve(response); - }, err => reject(err)); - }); - } + self._client. + sendRequest(Contracts.HandleFirewallRuleRequest.type, params, self.languageClient) + .then(response => { + resolve(response); + }, err => reject(err)); + }); + } - private asCreateFirewallRuleParams(account: data.Account, params: data.FirewallRuleInfo): Contracts.CreateFirewallRuleParams { - return { - account: account, - serverName: params.serverName, - startIpAddress: params.startIpAddress, - endIpAddress: params.endIpAddress, - securityTokenMappings: params.securityTokenMappings - }; - } + private asCreateFirewallRuleParams(account: data.Account, params: data.FirewallRuleInfo): Contracts.CreateFirewallRuleParams { + return { + account: account, + serverName: params.serverName, + startIpAddress: params.startIpAddress, + endIpAddress: params.endIpAddress, + securityTokenMappings: params.securityTokenMappings + }; + } } diff --git a/extensions/mssql/client/src/serialize/iserialization.ts b/extensions/mssql/client/src/serialize/iserialization.ts index f0be34c67c..904ed4a9fe 100644 --- a/extensions/mssql/client/src/serialize/iserialization.ts +++ b/extensions/mssql/client/src/serialize/iserialization.ts @@ -1,10 +1,9 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Source EULA. See License.txt in the project root for license information. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { SaveResultsInfo } from '../models/contracts'; import * as data from 'data'; /** @@ -14,5 +13,5 @@ import * as data from 'data'; * @interface ISerialization */ export interface ISerialization { - saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Promise; + saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Promise; } diff --git a/extensions/mssql/client/src/serialize/serialization.ts b/extensions/mssql/client/src/serialize/serialization.ts index a41b062756..6a9a353b23 100644 --- a/extensions/mssql/client/src/serialize/serialization.ts +++ b/extensions/mssql/client/src/serialize/serialization.ts @@ -1,7 +1,7 @@ /*--------------------------------------------------------------------------------------------- -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Source EULA. See License.txt in the project root for license information. -*--------------------------------------------------------------------------------------------*/ + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ 'use strict'; import * as Contracts from '../models/contracts'; @@ -9,33 +9,34 @@ import { ISerialization } from './iserialization'; import { SqlToolsServiceClient } from 'extensions-modules'; import * as data from 'data'; import { LanguageClient } from 'dataprotocol-client'; +import * as path from 'path'; /** * Implements serializer for query results */ export class Serialization implements ISerialization { - constructor(private _client?: SqlToolsServiceClient, private _languageClient?: LanguageClient) { - if (!this._client) { - this._client = SqlToolsServiceClient.instance; - } - } + constructor(private _client?: SqlToolsServiceClient, private _languageClient?: LanguageClient) { + if (!this._client) { + this._client = SqlToolsServiceClient.getInstance(path.join(__dirname, '../config.json')); + } + } - /** - * Saves results as a specified path - * - * @param {string} credentialId the ID uniquely identifying this credential - * @returns {Promise} Promise that resolved to the credential, or undefined if not found - */ - public saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Promise { - let self = this; - let resultsInfo: Contracts.SaveResultsInfo = new Contracts.SaveResultsInfo(saveFormat, savePath, results, appendToFile); - return new Promise( (resolve, reject) => { - self._client - .sendRequest(Contracts.SaveAsRequest.type, resultsInfo, this._languageClient) - .then(result => { - resolve(result); - }, err => reject(err)); - }); - } + /** + * Saves results as a specified path + * + * @param {string} credentialId the ID uniquely identifying this credential + * @returns {Promise} Promise that resolved to the credential, or undefined if not found + */ + public saveAs(saveFormat: string, savePath: string, results: string, appendToFile: boolean): Promise { + let self = this; + let resultsInfo: Contracts.SaveResultsInfo = new Contracts.SaveResultsInfo(saveFormat, savePath, results, appendToFile); + return new Promise((resolve, reject) => { + self._client + .sendRequest(Contracts.SaveAsRequest.type, resultsInfo, this._languageClient) + .then(result => { + resolve(result); + }, err => reject(err)); + }); + } } diff --git a/extensions/mssql/client/src/typings/ref.d.ts b/extensions/mssql/client/src/typings/ref.d.ts index ec45bfab40..ab20470402 100644 --- a/extensions/mssql/client/src/typings/ref.d.ts +++ b/extensions/mssql/client/src/typings/ref.d.ts @@ -4,4 +4,5 @@ *--------------------------------------------------------------------------------------------*/ /// -/// \ No newline at end of file +/// +/// \ No newline at end of file diff --git a/extensions/mssql/npm-shrinkwrap.json b/extensions/mssql/npm-shrinkwrap.json index faf540c5cf..855401593d 100644 --- a/extensions/mssql/npm-shrinkwrap.json +++ b/extensions/mssql/npm-shrinkwrap.json @@ -2,303 +2,6 @@ "name": "mssql", "version": "0.1.0", "dependencies": { - "@types/node": { - "version": "8.5.1", - "from": "@types/node@>=8.0.47 <9.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.1.tgz" - }, - "adal-node": { - "version": "0.1.25", - "from": "adal-node@0.1.25", - "resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.1.25.tgz" - }, - "agent-base": { - "version": "4.1.1", - "from": "agent-base@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.1.1.tgz" - }, - "ajv": { - "version": "5.5.1", - "from": "ajv@>=5.1.0 <6.0.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz" - }, - "amdefine": { - "version": "1.0.1", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" - }, - "ansi-gray": { - "version": "0.1.1", - "from": "ansi-gray@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz" - }, - "ansi-regex": { - "version": "2.1.1", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - }, - "ansi-styles": { - "version": "2.2.1", - "from": "ansi-styles@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "ansi-wrap": { - "version": "0.1.0", - "from": "ansi-wrap@0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" - }, - "applicationinsights": { - "version": "0.18.0", - "from": "applicationinsights@0.18.0", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-0.18.0.tgz" - }, - "arr-diff": { - "version": "2.0.0", - "from": "arr-diff@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" - }, - "arr-flatten": { - "version": "1.1.0", - "from": "arr-flatten@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - }, - "array-differ": { - "version": "1.0.0", - "from": "array-differ@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz" - }, - "array-find-index": { - "version": "1.0.2", - "from": "array-find-index@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" - }, - "array-union": { - "version": "1.0.2", - "from": "array-union@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - }, - "array-uniq": { - "version": "1.0.3", - "from": "array-uniq@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - }, - "array-unique": { - "version": "0.2.1", - "from": "array-unique@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "arrify": { - "version": "1.0.1", - "from": "arrify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "asn1@0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "async": { - "version": "2.6.0", - "from": "async@>=0.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz" - }, - "asynckit": { - "version": "0.4.0", - "from": "asynckit@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - }, - "aws-sign2": { - "version": "0.5.0", - "from": "aws-sign2@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "aws4": { - "version": "1.6.0", - "from": "aws4@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz" - }, - "balanced-match": { - "version": "1.0.0", - "from": "balanced-match@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - }, - "base64-js": { - "version": "0.0.8", - "from": "base64-js@0.0.8", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" - }, - "base64url": { - "version": "2.0.0", - "from": "base64url@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "from": "bcrypt-pbkdf@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz" - }, - "beeper": { - "version": "1.1.1", - "from": "beeper@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz" - }, - "bl": { - "version": "1.2.1", - "from": "bl@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz" - }, - "block-stream": { - "version": "0.0.9", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" - }, - "bluebird": { - "version": "3.5.0", - "from": "bluebird@>=3.5.0 <4.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "brace-expansion": { - "version": "1.1.8", - "from": "brace-expansion@>=1.1.7 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" - }, - "braces": { - "version": "1.8.5", - "from": "braces@>=1.8.2 <2.0.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" - }, - "buffer": { - "version": "3.6.0", - "from": "buffer@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz" - }, - "buffer-crc32": { - "version": "0.2.13", - "from": "buffer-crc32@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "from": "buffer-equal-constant-time@1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" - }, - "builtin-modules": { - "version": "1.1.1", - "from": "builtin-modules@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - }, - "camelcase": { - "version": "2.1.1", - "from": "camelcase@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - }, - "camelcase-keys": { - "version": "2.1.0", - "from": "camelcase-keys@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "chalk": { - "version": "1.1.3", - "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - }, - "clone": { - "version": "1.0.3", - "from": "clone@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz" - }, - "clone-buffer": { - "version": "1.0.0", - "from": "clone-buffer@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz" - }, - "clone-stats": { - "version": "0.0.1", - "from": "clone-stats@>=0.0.1 <0.0.2", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" - }, - "cloneable-readable": { - "version": "1.0.0", - "from": "cloneable-readable@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz" - }, - "co": { - "version": "4.6.0", - "from": "co@>=4.6.0 <5.0.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - }, - "color-support": { - "version": "1.1.3", - "from": "color-support@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "commander": { - "version": "2.8.1", - "from": "commander@>=2.8.1 <2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "convert-source-map": { - "version": "1.5.1", - "from": "convert-source-map@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "ctype": { - "version": "0.5.3", - "from": "ctype@0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - }, - "currently-unhandled": { - "version": "0.4.1", - "from": "currently-unhandled@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" - }, - "dashdash": { - "version": "1.14.1", - "from": "dashdash@>=1.12.0 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, "dataprotocol-client": { "version": "2.6.3", "from": "..\\..\\dataprotocol-node\\client", @@ -313,1939 +16,6 @@ "version": "1.0.4", "from": "..\\..\\dataprotocol-node\\types", "resolved": "file:..\\..\\dataprotocol-node\\types" - }, - "date-utils": { - "version": "1.2.21", - "from": "date-utils@*", - "resolved": "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz" - }, - "dateformat": { - "version": "2.2.0", - "from": "dateformat@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz" - }, - "debug": { - "version": "2.6.8", - "from": "debug@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "decamelize@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "decompress": { - "version": "4.2.0", - "from": "decompress@>=4.2.0 <5.0.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz" - }, - "decompress-tar": { - "version": "4.1.1", - "from": "decompress-tar@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz" - }, - "decompress-tarbz2": { - "version": "4.1.1", - "from": "decompress-tarbz2@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "dependencies": { - "file-type": { - "version": "6.1.0", - "from": "file-type@>=6.1.0 <7.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.1.0.tgz" - } - } - }, - "decompress-targz": { - "version": "4.1.1", - "from": "decompress-targz@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz" - }, - "decompress-unzip": { - "version": "4.0.1", - "from": "decompress-unzip@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "dependencies": { - "file-type": { - "version": "3.9.0", - "from": "file-type@>=3.8.0 <4.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" - } - } - }, - "deep-assign": { - "version": "1.0.0", - "from": "deep-assign@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz" - }, - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "diff": { - "version": "1.4.0", - "from": "diff@1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz" - }, - "duplexer": { - "version": "0.1.1", - "from": "duplexer@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz" - }, - "duplexer2": { - "version": "0.0.2", - "from": "duplexer2@0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "readable-stream@>=1.1.9 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } - }, - "duplexify": { - "version": "3.5.1", - "from": "duplexify@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - }, - "ecdsa-sig-formatter": { - "version": "1.0.9", - "from": "ecdsa-sig-formatter@1.0.9", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz" - }, - "end-of-stream": { - "version": "1.4.0", - "from": "end-of-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz" - }, - "error-ex": { - "version": "1.3.1", - "from": "error-ex@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" - }, - "es6-promise": { - "version": "4.1.1", - "from": "es6-promise@>=4.0.3 <5.0.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz" - }, - "es6-promisify": { - "version": "5.0.0", - "from": "es6-promisify@>=5.0.0 <6.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "event-stream": { - "version": "3.3.4", - "from": "event-stream@>=3.3.4 <3.4.0", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz" - }, - "expand-brackets": { - "version": "0.1.5", - "from": "expand-brackets@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" - }, - "expand-range": { - "version": "1.8.2", - "from": "expand-range@>=1.8.1 <2.0.0", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" - }, - "extend": { - "version": "3.0.1", - "from": "extend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz" - }, - "extend-shallow": { - "version": "2.0.1", - "from": "extend-shallow@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - }, - "extensions-modules": { - "version": "0.1.0", - "from": "../../extensions-modules", - "resolved": "file:../../extensions-modules" - }, - "extglob": { - "version": "0.3.2", - "from": "extglob@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - } - } - }, - "extsprintf": { - "version": "1.3.0", - "from": "extsprintf@1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - }, - "fancy-log": { - "version": "1.3.2", - "from": "fancy-log@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz" - }, - "fast-deep-equal": { - "version": "1.0.0", - "from": "fast-deep-equal@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "from": "fast-json-stable-stringify@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz" - }, - "fd-slicer": { - "version": "1.0.1", - "from": "fd-slicer@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz" - }, - "file-type": { - "version": "5.2.0", - "from": "file-type@>=5.2.0 <6.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz" - }, - "filename-regex": { - "version": "2.0.1", - "from": "filename-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" - }, - "fill-range": { - "version": "2.2.3", - "from": "fill-range@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" - }, - "find-up": { - "version": "1.1.2", - "from": "find-up@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - }, - "first-chunk-stream": { - "version": "1.0.0", - "from": "first-chunk-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz" - }, - "for-in": { - "version": "1.0.2", - "from": "for-in@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - }, - "for-own": { - "version": "0.1.5", - "from": "for-own@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.1", - "from": "form-data@>=1.0.0-rc1 <1.1.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz" - }, - "from": { - "version": "0.1.7", - "from": "from@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz" - }, - "fs-extra": { - "version": "2.1.2", - "from": "fs-extra@>=2.1.2 <3.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz" - }, - "fs-extra-promise": { - "version": "1.0.1", - "from": "fs-extra-promise@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/fs-extra-promise/-/fs-extra-promise-1.0.1.tgz" - }, - "fs.realpath": { - "version": "1.0.0", - "from": "fs.realpath@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "fstream": { - "version": "0.1.31", - "from": "fstream@>=0.1.28 <0.2.0", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "dependencies": { - "graceful-fs": { - "version": "3.0.11", - "from": "graceful-fs@>=3.0.2 <3.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz" - } - } - }, - "generate-function": { - "version": "2.0.0", - "from": "generate-function@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "get-stream": { - "version": "2.3.1", - "from": "get-stream@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" - }, - "getpass": { - "version": "0.1.7", - "from": "getpass@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "glob": { - "version": "5.0.15", - "from": "glob@>=5.0.15 <6.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - }, - "glob-base": { - "version": "0.3.0", - "from": "glob-base@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "from": "glob-parent@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - } - } - }, - "glob-parent": { - "version": "3.1.0", - "from": "glob-parent@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - }, - "glob-stream": { - "version": "5.3.5", - "from": "glob-stream@>=5.3.2 <6.0.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "dependencies": { - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - } - } - }, - "glogg": { - "version": "1.0.0", - "from": "glogg@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz" - }, - "graceful-fs": { - "version": "4.1.11", - "from": "graceful-fs@>=4.1.10 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" - }, - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>=1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "growl": { - "version": "1.9.2", - "from": "growl@1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz" - }, - "gulp-chmod": { - "version": "1.3.0", - "from": "gulp-chmod@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-1.3.0.tgz" - }, - "gulp-filter": { - "version": "4.0.0", - "from": "gulp-filter@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-4.0.0.tgz" - }, - "gulp-gunzip": { - "version": "0.0.3", - "from": "gulp-gunzip@0.0.3", - "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-0.0.3.tgz", - "dependencies": { - "clone": { - "version": "0.2.0", - "from": "clone@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.5 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "vinyl": { - "version": "0.4.6", - "from": "vinyl@>=0.4.6 <0.5.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - } - } - }, - "gulp-remote-src": { - "version": "0.4.3", - "from": "gulp-remote-src@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.3.tgz", - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "clone-stats": { - "version": "1.0.0", - "from": "clone-stats@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz" - }, - "commander": { - "version": "2.12.2", - "from": "commander@>=2.9.0 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz" - }, - "form-data": { - "version": "2.1.4", - "from": "form-data@>=2.1.1 <2.2.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz" - }, - "har-validator": { - "version": "2.0.6", - "from": "har-validator@>=2.0.6 <2.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz" - }, - "http-signature": { - "version": "1.1.1", - "from": "http-signature@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" - }, - "qs": { - "version": "6.3.2", - "from": "qs@>=6.3.0 <6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz" - }, - "replace-ext": { - "version": "1.0.0", - "from": "replace-ext@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz" - }, - "request": { - "version": "2.79.0", - "from": "request@>=2.79.0 <2.80.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz" - }, - "vinyl": { - "version": "2.0.2", - "from": "vinyl@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz" - } - } - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "from": "gulp-sourcemaps@1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "dependencies": { - "vinyl": { - "version": "1.2.0", - "from": "vinyl@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz" - } - } - }, - "gulp-symdest": { - "version": "1.1.0", - "from": "gulp-symdest@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz" - }, - "gulp-untar": { - "version": "0.0.4", - "from": "gulp-untar@0.0.4", - "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.4.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "ansi-regex@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - }, - "ansi-styles": { - "version": "1.1.0", - "from": "ansi-styles@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "chalk": { - "version": "0.5.1", - "from": "chalk@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz" - }, - "dateformat": { - "version": "1.0.12", - "from": "dateformat@>=1.0.7-1.2.3 <2.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz" - }, - "event-stream": { - "version": "3.1.7", - "from": "event-stream@>=3.1.5 <3.2.0", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz" - }, - "gulp-util": { - "version": "2.2.20", - "from": "gulp-util@>=2.2.14 <2.3.0", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", - "dependencies": { - "through2": { - "version": "0.5.1", - "from": "through2@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz" - } - } - }, - "has-ansi": { - "version": "0.1.0", - "from": "has-ansi@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "lodash._reinterpolate": { - "version": "2.4.1", - "from": "lodash._reinterpolate@>=2.4.1 <3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz" - }, - "lodash.escape": { - "version": "2.4.1", - "from": "lodash.escape@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz" - }, - "lodash.keys": { - "version": "2.4.1", - "from": "lodash.keys@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz" - }, - "lodash.template": { - "version": "2.4.1", - "from": "lodash.template@>=2.4.1 <3.0.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz" - }, - "lodash.templatesettings": { - "version": "2.4.1", - "from": "lodash.templatesettings@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz" - }, - "minimist": { - "version": "0.2.0", - "from": "minimist@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.17 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "split": { - "version": "0.2.10", - "from": "split@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "strip-ansi": { - "version": "0.3.0", - "from": "strip-ansi@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz" - }, - "supports-color": { - "version": "0.2.0", - "from": "supports-color@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - }, - "through2": { - "version": "0.4.2", - "from": "through2@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "dependencies": { - "xtend": { - "version": "2.1.2", - "from": "xtend@>=2.1.1 <2.2.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" - } - } - }, - "vinyl": { - "version": "0.2.3", - "from": "vinyl@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz" - }, - "xtend": { - "version": "3.0.0", - "from": "xtend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz" - } - } - }, - "gulp-util": { - "version": "3.0.8", - "from": "gulp-util@>=3.0.6 <4.0.0", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "dependencies": { - "object-assign": { - "version": "3.0.0", - "from": "object-assign@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" - } - } - }, - "gulp-vinyl-zip": { - "version": "1.4.0", - "from": "gulp-vinyl-zip@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-1.4.0.tgz", - "dependencies": { - "clone": { - "version": "0.2.0", - "from": "clone@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.3 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "vinyl": { - "version": "0.4.6", - "from": "vinyl@>=0.4.6 <0.5.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - } - } - }, - "gulplog": { - "version": "1.0.0", - "from": "gulplog@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz" - }, - "har-schema": { - "version": "2.0.0", - "from": "har-schema@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - }, - "har-validator": { - "version": "1.8.0", - "from": "har-validator@>=1.6.1 <2.0.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", - "dependencies": { - "bluebird": { - "version": "2.11.0", - "from": "bluebird@>=2.9.30 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz" - } - } - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "has-gulplog": { - "version": "0.1.0", - "from": "has-gulplog@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz" - }, - "hawk": { - "version": "3.1.3", - "from": "hawk@>=3.1.0 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" - }, - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "hosted-git-info": { - "version": "2.5.0", - "from": "hosted-git-info@>=2.1.4 <3.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz" - }, - "http-proxy-agent": { - "version": "2.0.0", - "from": "http-proxy-agent@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.0.0.tgz" - }, - "http-signature": { - "version": "0.11.0", - "from": "http-signature@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz" - }, - "https-proxy-agent": { - "version": "2.1.0", - "from": "https-proxy-agent@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz" - }, - "ieee754": { - "version": "1.1.8", - "from": "ieee754@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" - }, - "indent-string": { - "version": "2.1.0", - "from": "indent-string@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@>=2.0.3 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "is": { - "version": "3.2.1", - "from": "is@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz" - }, - "is-arrayish": { - "version": "0.2.1", - "from": "is-arrayish@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - }, - "is-buffer": { - "version": "1.1.6", - "from": "is-buffer@>=1.1.5 <2.0.0", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - }, - "is-builtin-module": { - "version": "1.0.0", - "from": "is-builtin-module@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz" - }, - "is-dotfile": { - "version": "1.0.3", - "from": "is-dotfile@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" - }, - "is-equal-shallow": { - "version": "0.1.3", - "from": "is-equal-shallow@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-extendable": { - "version": "0.1.1", - "from": "is-extendable@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - }, - "is-extglob": { - "version": "2.1.1", - "from": "is-extglob@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - }, - "is-finite": { - "version": "1.0.2", - "from": "is-finite@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" - }, - "is-glob": { - "version": "3.1.0", - "from": "is-glob@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - }, - "is-my-json-valid": { - "version": "2.16.1", - "from": "is-my-json-valid@>=2.12.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz" - }, - "is-natural-number": { - "version": "4.0.1", - "from": "is-natural-number@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz" - }, - "is-number": { - "version": "2.1.0", - "from": "is-number@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - }, - "is-obj": { - "version": "1.0.1", - "from": "is-obj@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - }, - "is-posix-bracket": { - "version": "0.1.1", - "from": "is-posix-bracket@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "is-primitive@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - }, - "is-property": { - "version": "1.0.2", - "from": "is-property@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - }, - "is-stream": { - "version": "1.1.0", - "from": "is-stream@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "is-utf8": { - "version": "0.2.1", - "from": "is-utf8@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - }, - "is-valid-glob": { - "version": "0.3.0", - "from": "is-valid-glob@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "isarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "isobject": { - "version": "2.1.0", - "from": "isobject@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "jade": { - "version": "0.26.3", - "from": "jade@0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "dependencies": { - "commander": { - "version": "0.6.1", - "from": "commander@0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "mkdirp@0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - } - } - }, - "jsbn": { - "version": "0.1.1", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - }, - "json-schema": { - "version": "0.2.3", - "from": "json-schema@0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" - }, - "json-schema-traverse": { - "version": "0.3.1", - "from": "json-schema-traverse@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz" - }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.0 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "jsonfile": { - "version": "2.4.0", - "from": "jsonfile@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" - }, - "jsonify": { - "version": "0.0.0", - "from": "jsonify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - }, - "jsonpointer": { - "version": "4.0.1", - "from": "jsonpointer@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" - }, - "jsprim": { - "version": "1.4.1", - "from": "jsprim@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "jwa": { - "version": "1.1.5", - "from": "jwa@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz" - }, - "jws": { - "version": "3.1.4", - "from": "jws@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz" - }, - "kind-of": { - "version": "3.2.2", - "from": "kind-of@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - }, - "lazystream": { - "version": "1.0.0", - "from": "lazystream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz" - }, - "load-json-file": { - "version": "1.1.0", - "from": "load-json-file@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - }, - "lodash": { - "version": "4.17.4", - "from": "lodash@>=4.14.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - }, - "lodash._basecopy": { - "version": "3.0.1", - "from": "lodash._basecopy@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" - }, - "lodash._basetostring": { - "version": "3.0.1", - "from": "lodash._basetostring@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._basevalues": { - "version": "3.0.0", - "from": "lodash._basevalues@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz" - }, - "lodash._escapehtmlchar": { - "version": "2.4.1", - "from": "lodash._escapehtmlchar@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz" - }, - "lodash._escapestringchar": { - "version": "2.4.1", - "from": "lodash._escapestringchar@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz" - }, - "lodash._getnative": { - "version": "3.9.1", - "from": "lodash._getnative@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" - }, - "lodash._htmlescapes": { - "version": "2.4.1", - "from": "lodash._htmlescapes@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" - }, - "lodash._isnative": { - "version": "2.4.1", - "from": "lodash._isnative@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz" - }, - "lodash._objecttypes": { - "version": "2.4.1", - "from": "lodash._objecttypes@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz" - }, - "lodash._reescape": { - "version": "3.0.0", - "from": "lodash._reescape@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz" - }, - "lodash._reevaluate": { - "version": "3.0.0", - "from": "lodash._reevaluate@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "from": "lodash._reinterpolate@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - }, - "lodash._reunescapedhtml": { - "version": "2.4.1", - "from": "lodash._reunescapedhtml@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "from": "lodash.keys@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz" - } - } - }, - "lodash._root": { - "version": "3.0.1", - "from": "lodash._root@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz" - }, - "lodash._shimkeys": { - "version": "2.4.1", - "from": "lodash._shimkeys@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz" - }, - "lodash.defaults": { - "version": "2.4.1", - "from": "lodash.defaults@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "from": "lodash.keys@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz" - } - } - }, - "lodash.escape": { - "version": "3.2.0", - "from": "lodash.escape@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" - }, - "lodash.isarguments": { - "version": "3.1.0", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" - }, - "lodash.isarray": { - "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - }, - "lodash.isequal": { - "version": "4.5.0", - "from": "lodash.isequal@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - }, - "lodash.isobject": { - "version": "2.4.1", - "from": "lodash.isobject@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz" - }, - "lodash.keys": { - "version": "3.1.2", - "from": "lodash.keys@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" - }, - "lodash.restparam": { - "version": "3.6.1", - "from": "lodash.restparam@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz" - }, - "lodash.template": { - "version": "3.6.2", - "from": "lodash.template@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz" - }, - "lodash.templatesettings": { - "version": "3.1.1", - "from": "lodash.templatesettings@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz" - }, - "lodash.values": { - "version": "2.4.1", - "from": "lodash.values@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "from": "lodash.keys@>=2.4.1 <2.5.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz" - } - } - }, - "loud-rejection": { - "version": "1.6.0", - "from": "loud-rejection@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" - }, - "lru-cache": { - "version": "2.7.3", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "make-dir": { - "version": "1.0.0", - "from": "make-dir@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz" - }, - "map-obj": { - "version": "1.0.1", - "from": "map-obj@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - }, - "map-stream": { - "version": "0.1.0", - "from": "map-stream@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz" - }, - "meow": { - "version": "3.7.0", - "from": "meow@>=3.3.0 <4.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" - }, - "merge-stream": { - "version": "1.0.1", - "from": "merge-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz" - }, - "micromatch": { - "version": "2.3.11", - "from": "micromatch@>=2.3.7 <3.0.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - } - } - }, - "mime-db": { - "version": "1.30.0", - "from": "mime-db@>=1.30.0 <1.31.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz" - }, - "mime-types": { - "version": "2.1.17", - "from": "mime-types@>=2.1.2 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz" - }, - "minimatch": { - "version": "3.0.4", - "from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "mocha": { - "version": "2.5.3", - "from": "mocha@>=2.3.3 <3.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "dependencies": { - "commander": { - "version": "2.3.0", - "from": "commander@2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.2", - "from": "escape-string-regexp@1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" - }, - "glob": { - "version": "3.2.11", - "from": "glob@3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "minimatch@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "supports-color": { - "version": "1.2.0", - "from": "supports-color@1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz" - } - } - }, - "ms": { - "version": "2.0.0", - "from": "ms@2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - }, - "multimatch": { - "version": "2.1.0", - "from": "multimatch@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz" - }, - "multipipe": { - "version": "0.1.2", - "from": "multipipe@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz" - }, - "natives": { - "version": "1.1.1", - "from": "natives@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz" - }, - "node.extend": { - "version": "1.1.6", - "from": "node.extend@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz" - }, - "normalize-package-data": { - "version": "2.4.0", - "from": "normalize-package-data@>=2.3.4 <3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz" - }, - "normalize-path": { - "version": "2.1.1", - "from": "normalize-path@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - }, - "number-is-nan": { - "version": "1.0.1", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "oauth-sign@>=0.8.0 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "object-assign": { - "version": "4.1.1", - "from": "object-assign@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - }, - "object-keys": { - "version": "0.4.0", - "from": "object-keys@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" - }, - "object.omit": { - "version": "2.0.1", - "from": "object.omit@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" - }, - "once": { - "version": "1.4.0", - "from": "once@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - }, - "opener": { - "version": "1.4.3", - "from": "opener@>=1.4.3 <2.0.0", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz" - }, - "ordered-read-streams": { - "version": "0.3.0", - "from": "ordered-read-streams@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz" - }, - "os-tmpdir": { - "version": "1.0.2", - "from": "os-tmpdir@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - }, - "parse-glob": { - "version": "3.0.4", - "from": "parse-glob@>=3.0.4 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - } - } - }, - "parse-json": { - "version": "2.2.0", - "from": "parse-json@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - }, - "path-dirname": { - "version": "1.0.2", - "from": "path-dirname@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - }, - "path-exists": { - "version": "2.1.0", - "from": "path-exists@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - }, - "path-type": { - "version": "1.1.0", - "from": "path-type@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - }, - "pause-stream": { - "version": "0.0.11", - "from": "pause-stream@0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz" - }, - "pend": { - "version": "1.2.0", - "from": "pend@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - }, - "performance-now": { - "version": "2.1.0", - "from": "performance-now@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - }, - "pify": { - "version": "2.3.0", - "from": "pify@>=2.3.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie": { - "version": "2.0.4", - "from": "pinkie@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "pinkie-promise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - }, - "preserve": { - "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "punycode": { - "version": "1.4.1", - "from": "punycode@>=1.4.1 <2.0.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - }, - "qs": { - "version": "5.1.0", - "from": "qs@>=5.1.0 <5.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" - }, - "queue": { - "version": "3.1.0", - "from": "queue@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz" - }, - "randomatic": { - "version": "1.1.7", - "from": "randomatic@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "dependencies": { - "is-number": { - "version": "3.0.0", - "from": "is-number@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "dependencies": { - "kind-of": { - "version": "3.2.2", - "from": "kind-of@^3.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - } - } - }, - "kind-of": { - "version": "4.0.0", - "from": "kind-of@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - } - } - }, - "read-pkg": { - "version": "1.1.0", - "from": "read-pkg@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - }, - "read-pkg-up": { - "version": "1.0.1", - "from": "read-pkg-up@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - }, - "readable-stream": { - "version": "2.3.3", - "from": "readable-stream@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" - }, - "redent": { - "version": "1.0.0", - "from": "redent@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" - }, - "regex-cache": { - "version": "0.4.4", - "from": "regex-cache@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" - }, - "remove-trailing-separator": { - "version": "1.1.0", - "from": "remove-trailing-separator@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "repeat-element@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - }, - "repeat-string": { - "version": "1.6.1", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - }, - "repeating": { - "version": "2.0.1", - "from": "repeating@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" - }, - "replace-ext": { - "version": "0.0.1", - "from": "replace-ext@0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" - }, - "request": { - "version": "2.63.0", - "from": "request@2.63.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.63.0.tgz", - "dependencies": { - "bl": { - "version": "1.0.3", - "from": "bl@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz" - }, - "node-uuid": { - "version": "1.4.8", - "from": "node-uuid@>=1.4.0 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz" - }, - "readable-stream": { - "version": "2.0.6", - "from": "readable-stream@>=2.0.5 <2.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } - }, - "rimraf": { - "version": "2.6.2", - "from": "rimraf@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "dependencies": { - "glob": { - "version": "7.1.2", - "from": "glob@>=7.0.5 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" - } - } - }, - "safe-buffer": { - "version": "5.1.1", - "from": "safe-buffer@>=5.1.1 <5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" - }, - "seek-bzip": { - "version": "1.0.5", - "from": "seek-bzip@>=1.0.5 <2.0.0", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz" - }, - "semver": { - "version": "5.4.1", - "from": "semver@>=5.1.0 <6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - }, - "signal-exit": { - "version": "3.0.2", - "from": "signal-exit@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - }, - "source-map": { - "version": "0.1.32", - "from": "source-map@0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz" - }, - "source-map-support": { - "version": "0.3.3", - "from": "source-map-support@>=0.3.2 <0.4.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz" - }, - "sparkles": { - "version": "1.0.0", - "from": "sparkles@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" - }, - "spdx-correct": { - "version": "1.0.2", - "from": "spdx-correct@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz" - }, - "spdx-expression-parse": { - "version": "1.0.4", - "from": "spdx-expression-parse@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" - }, - "spdx-license-ids": { - "version": "1.2.2", - "from": "spdx-license-ids@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" - }, - "split": { - "version": "0.3.3", - "from": "split@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz" - }, - "sshpk": { - "version": "1.13.1", - "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "stat-mode": { - "version": "0.2.2", - "from": "stat-mode@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz" - }, - "stream-combiner": { - "version": "0.0.4", - "from": "stream-combiner@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz" - }, - "stream-shift": { - "version": "1.0.0", - "from": "stream-shift@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz" - }, - "streamfilter": { - "version": "1.0.7", - "from": "streamfilter@>=1.0.5 <2.0.0", - "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz" - }, - "streamifier": { - "version": "0.1.1", - "from": "streamifier@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz" - }, - "string_decoder": { - "version": "1.0.3", - "from": "string_decoder@>=1.0.3 <1.1.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "strip-ansi": { - "version": "3.0.1", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "strip-bom": { - "version": "2.0.0", - "from": "strip-bom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - }, - "strip-bom-stream": { - "version": "1.0.0", - "from": "strip-bom-stream@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz" - }, - "strip-dirs": { - "version": "2.0.0", - "from": "strip-dirs@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.0.0.tgz" - }, - "strip-indent": { - "version": "1.0.1", - "from": "strip-indent@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "tar": { - "version": "0.1.20", - "from": "tar@>=0.1.19 <0.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz" - }, - "tar-stream": { - "version": "1.5.4", - "from": "tar-stream@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz" - }, - "through": { - "version": "2.3.8", - "from": "through@>=2.3.6 <3.0.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "through2": { - "version": "2.0.3", - "from": "through2@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz" - }, - "through2-filter": { - "version": "2.0.0", - "from": "through2-filter@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz" - }, - "time-stamp": { - "version": "1.1.0", - "from": "time-stamp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz" - }, - "tmp": { - "version": "0.0.33", - "from": "tmp@0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - }, - "to-absolute-glob": { - "version": "0.1.1", - "from": "to-absolute-glob@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz" - }, - "to-iso-string": { - "version": "0.0.2", - "from": "to-iso-string@0.0.2", - "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz" - }, - "tough-cookie": { - "version": "2.3.3", - "from": "tough-cookie@>=0.12.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz" - }, - "trim-newlines": { - "version": "1.0.0", - "from": "trim-newlines@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - }, - "tweetnacl": { - "version": "0.14.5", - "from": "tweetnacl@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - }, - "unbzip2-stream": { - "version": "1.2.5", - "from": "unbzip2-stream@>=1.0.9 <2.0.0", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz" - }, - "underscore": { - "version": "1.8.3", - "from": "underscore@>=1.3.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - }, - "unique-stream": { - "version": "2.2.1", - "from": "unique-stream@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "uuid": { - "version": "3.1.0", - "from": "uuid@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz" - }, - "vali-date": { - "version": "1.0.0", - "from": "vali-date@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "from": "validate-npm-package-license@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" - }, - "verror": { - "version": "1.10.0", - "from": "verror@1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "from": "assert-plus@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - } - } - }, - "vinyl": { - "version": "0.5.3", - "from": "vinyl@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz" - }, - "vinyl-fs": { - "version": "2.4.4", - "from": "vinyl-fs@>=2.4.3 <3.0.0", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "dependencies": { - "vinyl": { - "version": "1.2.0", - "from": "vinyl@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz" - } - } - }, - "vinyl-source-stream": { - "version": "1.1.0", - "from": "vinyl-source-stream@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz", - "dependencies": { - "clone": { - "version": "0.2.0", - "from": "clone@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "through2": { - "version": "0.6.5", - "from": "through2@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "vinyl": { - "version": "0.4.6", - "from": "vinyl@>=0.4.3 <0.5.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - } - } - }, - "vscode-extension-telemetry": { - "version": "0.0.8", - "from": "vscode-extension-telemetry@0.0.8", - "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.0.8.tgz" - }, - "vscode-nls": { - "version": "2.0.2", - "from": "vscode-nls@2.0.2", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-2.0.2.tgz" - }, - "winreg": { - "version": "1.2.3", - "from": "winreg@1.2.3", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.3.tgz" - }, - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - }, - "xmldom": { - "version": "0.1.27", - "from": "xmldom@>=0.1.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz" - }, - "xpath.js": { - "version": "1.0.7", - "from": "xpath.js@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.0.7.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - }, - "yauzl": { - "version": "2.8.0", - "from": "yauzl@>=2.4.2 <3.0.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz" - }, - "yazl": { - "version": "2.4.3", - "from": "yazl@>=2.2.1 <3.0.0", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.3.tgz" } } } diff --git a/extensions/mssql/package.json b/extensions/mssql/package.json index 4cca64dd92..300cb6acd9 100644 --- a/extensions/mssql/package.json +++ b/extensions/mssql/package.json @@ -9,13 +9,14 @@ "activationEvents": [ "*" ], - "main": "./client/out/mssqlMain", + "main": "./client/out/main", "extensionDependencies": [ "vscode.sql" ], "scripts": { "compile": "gulp compile-extension:mssql-client", - "postinstall": "node ./node_modules/vscode/bin/install" + "postinstall": "node ./node_modules/vscode/bin/install", + "update-grammar": "node ../../build/npm/update-grammar.js Microsoft/vscode-mssql syntaxes/SQL.plist ./syntaxes/sql.tmLanguage.json" }, "contributes": { "languages": [ @@ -26,15 +27,7 @@ ], "aliases": [ "SQL" - ], - "configuration": "./syntaxes/sql.configuration.json" - } - ], - "grammars": [ - { - "language": "sql", - "scopeName": "source.sql", - "path": "./syntaxes/SQL.plist" + ] } ], "outputChannels": [ @@ -46,38 +39,10 @@ "path": "./snippets/mssql.json" } ], - "commands": [ - { - "command": "extension.clearTokenCache", - "title": "%extension.clearTokenCache%", - "category": "Azure Accounts" - } - ], - "account-type": [ - { - "id": "microsoft", - "icon": { - "light": "./out/account-provider/media/microsoft_account_light.svg", - "dark": "./out/account-provider/media/microsoft_account_dark.svg" - } - }, - { - "id": "work_school", - "icon": { - "light": "./out/account-provider/media/work_school_account_light.svg", - "dark": "./out/account-provider/media/work_school_account_dark.svg" - } - } - ], "configuration": { "type": "object", "title": "MSSQL configuration", "properties": { - "accounts.azure.enablePublicCloud": { - "type": "boolean", - "default": true, - "description": "%config.enablePublicCloudDescription%" - }, "mssql.query.displayBitAsNumber": { "type": "boolean", "default": true, @@ -227,18 +192,9 @@ } }, "dependencies": { - "dataprotocol-client": "file:../../dataprotocol-node/client", - "extensions-modules": "file:../../extensions-modules", - "adal-node": "0.1.25", - "decompress": "^4.0.0", - "fs-extra-promise": "^1.0.1", - "opener": "1.4.3", - "request": "2.63.0", - "vscode-extension-telemetry": "^0.0.8", - "vscode-nls": "2.0.2" + "dataprotocol-client": "file:../../dataprotocol-node/client" }, "devDependencies": { - "vscode": "1.0.1", - "@types/node": "^8.0.24" + "vscode": "1.0.1" } } diff --git a/extensions/mssql/package.nls.json b/extensions/mssql/package.nls.json index d7b46bd630..46fe51b221 100644 --- a/extensions/mssql/package.nls.json +++ b/extensions/mssql/package.nls.json @@ -1,7 +1,8 @@ { - "extension.clearTokenCache": "Clear Azure Account Token Cache", - "config.enablePublicCloudDescription": "Should Azure public cloud integration be enabled", - "config.enableUsGovCloudDescription": "Should US Government Azure cloud (Fairfax) integration be enabled", - "config.enableChinaCloudDescription": "Should Azure China integration be enabled", - "config.enableGermanyCloudDescription": "Should Azure Germany integration be enabled" + "json.schemas.desc": "Associate schemas to JSON files in the current project", + "json.schemas.url.desc": "A URL to a schema or a relative path to a schema in the current directory", + "json.schemas.fileMatch.desc": "An array of file patterns to match against when resolving JSON files to schemas.", + "json.schemas.fileMatch.item.desc": "A file pattern that can contain '*' to match against when resolving JSON files to schemas.", + "json.schemas.schema.desc": "The schema definition for the given URL. The schema only needs to be provided to avoid accesses to the schema URL.", + "json.format.enable.desc": "Enable/disable default JSON formatter (requires restart)" } \ No newline at end of file diff --git a/extensions/mssql/snippets/mssql.json b/extensions/mssql/snippets/mssql.json index ba4c8f34f6..2fc11e7e0b 100644 --- a/extensions/mssql/snippets/mssql.json +++ b/extensions/mssql/snippets/mssql.json @@ -208,10 +208,10 @@ "body": [ "-- Get a list of tables and views in the current database", "SELECT table_catalog [database], table_schema [schema], table_name name, table_type type", - "FROM INFORMATION_SCHEMA.TABLES", + "FROM information_schema.tables", "GO" ], - "description": "List tables and views in the current database" + "description": "List tables and vies in the current database" }, "List databases": { @@ -229,15 +229,15 @@ "body": [ "-- List columns in all tables whose name is like '${1:TableName}'", "SELECT ", - "\tTableName = tbl.TABLE_SCHEMA + '.' + tbl.TABLE_NAME, ", - "\tColumnName = col.COLUMN_NAME, ", - "\tColumnDataType = col.DATA_TYPE", - "FROM INFORMATION_SCHEMA.TABLES tbl", - "INNER JOIN INFORMATION_SCHEMA.COLUMNS col ", - "\tON col.TABLE_NAME = tbl.TABLE_NAME", - "\tAND col.TABLE_SCHEMA = tbl.TABLE_SCHEMA", + "\tTableName = tbl.table_schema + '.' + tbl.table_name, ", + "\tColumnName = col.column_name, ", + "\tColumnDataType = col.data_type", + "FROM information_schema.tables tbl", + "INNER JOIN information_schema.columns col ", + "\tON col.table_name = tbl.table_name", + "\tAND col.table_schema = tbl.table_schema", "", - "WHERE tbl.TABLE_TYPE = 'BASE TABLE' and tbl.TABLE_NAME like '%${1:TableName}%'", + "WHERE tbl.table_type = 'base table' and tbl.table_name like '%${1:TableName}%'", "GO" ], "description": "Lists all the columns and their types for tables matching a LIKE statement" diff --git a/extensions/mssql/syntaxes/SQL.plist b/extensions/mssql/syntaxes/SQL.plist deleted file mode 100644 index 2f3861d244..0000000000 --- a/extensions/mssql/syntaxes/SQL.plist +++ /dev/null @@ -1,771 +0,0 @@ - - - - - fileTypes - - sql - ddl - dml - - keyEquivalent - ^~S - name - SQL - patterns - - - match - \b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference |automatic|autopilot|availability|availability_mode|backup_priority|base64|basic|batches|batchsize|before|bigint|binary|binding|bit|block|blocksize|bmk|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|cast|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|cleanup_policy|clear|clear_port|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create|credential|cross|cryptographic|cryptographic_provider|cube|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|days|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|elements|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|exec|executable|exists|expand|expiredate|expiry_date|explicit|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hours|http|identity|identity_value|if|ifnull|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kilobytes_per_batch|labelonly|langid|language|last|lastrow|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minutes|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|procedure_name|profile|provider|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|restart|restore|restricted_user|resume|retaindays|retention|return|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|schemabinding|scoped|scroll|scroll_locks|sddl|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics_incremental|statistics_norecompute|statistics_only|statman|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|tran|transaction|transfer|triple_des|triple_des_3key|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|webmethod|weekday|weight|well_formed_xml|when|widechar|widechar_ansi|widenative|windows|with|within|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|zone)\b - name - keyword.other.sql - - - include - #comments - - - captures - - 1 - - name - keyword.other.create.sql - - 2 - - name - keyword.other.sql - - 5 - - name - entity.name.function.sql - - - match - (?i:^\s*(create(?:\s+or\s+replace)?)\s+(aggregate|conversion|database|domain|function|group|(unique\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\s+)(['"`]?)(\w+)\4 - name - meta.create.sql - - - captures - - 1 - - name - keyword.other.create.sql - - 2 - - name - keyword.other.sql - - - match - (?i:^\s*(drop)\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)) - name - meta.drop.sql - - - captures - - 1 - - name - keyword.other.create.sql - - 2 - - name - keyword.other.table.sql - - 3 - - name - entity.name.function.sql - - 4 - - name - keyword.other.cascade.sql - - - match - (?i:\s*(drop)\s+(table)\s+(\w+)(\s+cascade)?\b) - name - meta.drop.sql - - - captures - - 1 - - name - keyword.other.create.sql - - 2 - - name - keyword.other.table.sql - - - match - (?i:^\s*(alter)\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\s+) - name - meta.alter.sql - - - captures - - 1 - - name - storage.type.sql - - 10 - - name - constant.numeric.sql - - 11 - - name - storage.type.sql - - 12 - - name - storage.type.sql - - 13 - - name - storage.type.sql - - 14 - - name - constant.numeric.sql - - 15 - - name - storage.type.sql - - 2 - - name - storage.type.sql - - 3 - - name - constant.numeric.sql - - 4 - - name - storage.type.sql - - 5 - - name - constant.numeric.sql - - 6 - - name - storage.type.sql - - 7 - - name - constant.numeric.sql - - 8 - - name - constant.numeric.sql - - 9 - - name - storage.type.sql - - - match - (?xi) - - # normal stuff, capture 1 - \b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\b - - # numeric suffix, capture 2 + 3i - |\b(bit\svarying|character\s(?:varying)?|tinyint|var\schar|float|interval)\((\d+)\) - - # optional numeric suffix, capture 4 + 5i - |\b(char|number|varchar\d?)\b(?:\((\d+)\))? - - # special case, capture 6 + 7i + 8i - |\b(numeric|decimal)\b(?:\((\d+),(\d+)\))? - - # special case, captures 9, 10i, 11 - |\b(times?)\b(?:\((\d+)\))?(\swith(?:out)?\stime\szone\b)? - - # special case, captures 12, 13, 14i, 15 - |\b(timestamp)(?:(s|tz))?\b(?:\((\d+)\))?(\s(with|without)\stime\szone\b)? - - - - - match - (?i:\b((?:primary|foreign)\s+key|references|on\sdelete(\s+cascade)?|check|constraint)\b) - name - storage.modifier.sql - - - match - \b\d+\b - name - constant.numeric.sql - - - match - (?i:\b(select(\s+distinct)?|insert\s+(ignore\s+)?into|update|delete|from|set|where|group\sby|or|like|and|union(\s+all)?|having|order\sby|limit|(inner|cross)\s+join|join|straight_join|(left|right)(\s+outer)?\s+join|natural(\s+(left|right)(\s+outer)?)?\s+join)\b) - name - keyword.other.DML.sql - - - match - (?i:\b(on|((is\s+)?not\s+)?null)\b) - name - keyword.other.DDL.create.II.sql - - - match - (?i:\bvalues\b) - name - keyword.other.DML.II.sql - - - match - (?i:\b(begin(\s+work)?|start\s+transaction|commit(\s+work)?|rollback(\s+work)?)\b) - name - keyword.other.LUW.sql - - - match - (?i:\b(grant(\swith\sgrant\soption)?|revoke)\b) - name - keyword.other.authorization.sql - - - match - (?i:\bin\b) - name - keyword.other.data-integrity.sql - - - match - (?i:^\s*(comment\s+on\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\s+.*?\s+(is)\s+) - name - keyword.other.object-comments.sql - - - match - (?i)\bAS\b - name - keyword.other.alias.sql - - - match - (?i)\b(DESC|ASC)\b - name - keyword.other.order.sql - - - match - \* - name - keyword.operator.star.sql - - - match - [!<>]?=|<>|<|> - name - keyword.operator.comparison.sql - - - match - -|\+|/ - name - keyword.operator.math.sql - - - match - \|\| - name - keyword.operator.concatenator.sql - - - comment - List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html - match - (?i)\b(CURRENT_(DATE|TIME(STAMP)?|USER)|(SESSION|SYSTEM)_USER)\b - name - support.function.scalar.sql - - - comment - List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html - match - (?i)\b(AVG|COUNT|MIN|MAX|SUM)(?=\s*\() - name - support.function.aggregate.sql - - - match - (?i)\b(CONCATENATE|CONVERT|LOWER|SUBSTRING|TRANSLATE|TRIM|UPPER)\b - name - support.function.string.sql - - - captures - - 1 - - name - constant.other.database-name.sql - - 2 - - name - constant.other.table-name.sql - - - match - (\w+?)\.(\w+) - - - include - #strings - - - include - #regexps - - - captures - - 1 - - name - punctuation.section.scope.begin.sql - - 2 - - name - punctuation.section.scope.end.sql - - - comment - Allow for special ↩ behavior - match - (\()(\)) - name - meta.block.sql - - - repository - - comments - - patterns - - - begin - (^[ \t]+)?(?=--) - beginCaptures - - 1 - - name - punctuation.whitespace.comment.leading.sql - - - end - (?!\G) - patterns - - - begin - -- - beginCaptures - - 0 - - name - punctuation.definition.comment.sql - - - end - \n - name - comment.line.double-dash.sql - - - - - begin - (^[ \t]+)?(?=#) - beginCaptures - - 1 - - name - punctuation.whitespace.comment.leading.sql - - - end - (?!\G) - patterns - - - begin - # - beginCaptures - - 0 - - name - punctuation.definition.comment.sql - - - end - \n - name - comment.line.number-sign.sql - - - - - begin - /\* - captures - - 0 - - name - punctuation.definition.comment.sql - - - end - \*/ - name - comment.block.c - - - - regexps - - patterns - - - begin - /(?=\S.*/) - beginCaptures - - 0 - - name - punctuation.definition.string.begin.sql - - - end - / - endCaptures - - 0 - - name - punctuation.definition.string.end.sql - - - name - string.regexp.sql - patterns - - - include - #string_interpolation - - - match - \\/ - name - constant.character.escape.slash.sql - - - - - begin - %r\{ - beginCaptures - - 0 - - name - punctuation.definition.string.begin.sql - - - comment - We should probably handle nested bracket pairs!?! -- Allan - end - \} - endCaptures - - 0 - - name - punctuation.definition.string.end.sql - - - name - string.regexp.modr.sql - patterns - - - include - #string_interpolation - - - - - - string_escape - - match - \\. - name - constant.character.escape.sql - - string_interpolation - - captures - - 1 - - name - punctuation.definition.string.begin.sql - - 3 - - name - punctuation.definition.string.end.sql - - - match - (#\{)([^\}]*)(\}) - name - string.interpolated.sql - - strings - - patterns - - - captures - - 1 - - name - punctuation.definition.string.begin.sql - - 2 - - name - punctuation.definition.string.end.sql - - - comment - this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines. - match - (')[^']*(') - name - string.quoted.single.sql - - - begin - ' - beginCaptures - - 0 - - name - punctuation.definition.string.begin.sql - - - end - ' - endCaptures - - 0 - - name - punctuation.definition.string.end.sql - - - name - string.quoted.single.sql - patterns - - - include - #string_escape - - - - - captures - - 1 - - name - punctuation.definition.string.begin.sql - - 2 - - name - punctuation.definition.string.end.sql - - - comment - this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines. - match - (`)[^`\\]*(`) - name - string.quoted.other.backtick.sql - - - begin - ` - beginCaptures - - 0 - - name - punctuation.definition.string.begin.sql - - - end - ` - endCaptures - - 0 - - name - punctuation.definition.string.end.sql - - - name - string.quoted.other.backtick.sql - patterns - - - include - #string_escape - - - - - captures - - 1 - - name - punctuation.definition.string.begin.sql - - 2 - - name - punctuation.definition.string.end.sql - - - comment - this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines. - match - (")[^"#]*(") - name - string.quoted.double.sql - - - begin - " - beginCaptures - - 0 - - name - punctuation.definition.string.begin.sql - - - end - " - endCaptures - - 0 - - name - punctuation.definition.string.end.sql - - - name - string.quoted.double.sql - patterns - - - include - #string_interpolation - - - - - begin - %\{ - beginCaptures - - 0 - - name - punctuation.definition.string.begin.sql - - - end - \} - endCaptures - - 0 - - name - punctuation.definition.string.end.sql - - - name - string.other.quoted.brackets.sql - patterns - - - include - #string_interpolation - - - - - - - scopeName - source.sql - uuid - C49120AC-6ECC-11D9-ACC8-000D93589AF6 - - diff --git a/extensions/mssql/syntaxes/sql.configuration.json b/extensions/mssql/syntaxes/sql.configuration.json deleted file mode 100644 index 0e0dcd235c..0000000000 --- a/extensions/mssql/syntaxes/sql.configuration.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/extensions/npm-shrinkwrap.json b/extensions/npm-shrinkwrap.json deleted file mode 100644 index 4349563cff..0000000000 --- a/extensions/npm-shrinkwrap.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "vscode-extensions", - "version": "0.0.1", - "dependencies": { - "typescript": { - "version": "2.6.1", - "from": "typescript@2.6.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz" - } - } -} diff --git a/extensions/package.json b/extensions/package.json index 0e88657116..fdd80b290d 100644 --- a/extensions/package.json +++ b/extensions/package.json @@ -3,7 +3,8 @@ "version": "0.0.1", "description": "Dependencies shared by all extensions", "dependencies": { - "typescript": "2.6.1" + "typescript": "2.6.1", + "extensions-modules": "file:../extensions-modules" }, "scripts": { "postinstall": "node ./postinstall" diff --git a/extensions/sql/syntaxes/SQL.plist b/extensions/sql/syntaxes/SQL.plist index 9f2ade3754..76b90bd93d 100644 --- a/extensions/sql/syntaxes/SQL.plist +++ b/extensions/sql/syntaxes/SQL.plist @@ -16,7 +16,7 @@ match - \b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|alias|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference |automatic|autopilot|availability|availability_mode|backup_priority|base64|basic|batches|batchsize|before|bigint|binary|binding|bit|block|blocksize|bmk|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|cast|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|cleanup_policy|clear|clear_port|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create|credential|cross|cryptographic|cryptographic_provider|cube|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|days|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|diagnostics|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|elements|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|exec|executable|exists|expand|expiredate|expiry_date|explicit|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|foreach|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hours|http|identity|identity_value|if|ifnull|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|immutable|implicit_transactions|include|include_null_values|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kilobytes_per_batch|labelonly|langid|language|last|lastrow|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minutes|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|perform|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|procedure_name|profile|provider|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|restart|restore|restricted_user|resume|retaindays|retention|return|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|schemabinding|scoped|scroll|scroll_locks|sddl|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|stable|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics_incremental|statistics_norecompute|statistics_only|statman|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|tran|transaction|transfer|triple_des|triple_des_3key|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|volatile|webmethod|weekday|weight|well_formed_xml|when|widechar|widechar_ansi|widenative|windows|with|within|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|zone)\b + \b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|alias|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference |automatic|autopilot|availability|availability_mode|backup_priority|base64|basic|batches|batchsize|before|bigint|binary|binding|bit|block|blocksize|bmk|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|cast|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|cleanup_policy|clear|clear_port|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create|credential|cross|cryptographic|cryptographic_provider|cube|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|days|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|diagnostics|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|elements|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|exec|executable|exists|expand|expiredate|expiry_date|explicit|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|foreach|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hours|http|identity_value|if|ifnull|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|immutable|implicit_transactions|include|include_null_values|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kilobytes_per_batch|labelonly|langid|language|last|lastrow|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minutes|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|perform|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|procedure_name|profile|provider|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|restart|restore|restricted_user|resume|retaindays|retention|return|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|schemabinding|scoped|scroll|scroll_locks|sddl|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|stable|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics_incremental|statistics_norecompute|statistics_only|statman|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|tran|transaction|transfer|triple_des|triple_des_3key|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|volatile|webmethod|weekday|weight|well_formed_xml|when|widechar|widechar_ansi|widenative|windows|with|within|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|zone)\b name keyword.other.sql diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 091b50865b..219eca8038 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,12 +1,7 @@ { "name": "sqlops", - "version": "0.24.0", + "version": "0.24.1", "dependencies": { - "zone.js": { - "version": "0.8.11", - "from": "zone.js@>=0.8.4 <0.9.0", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.11.tgz" - }, "@angular/animations": { "version": "4.1.3", "from": "@angular/animations@>=4.1.3 <4.2.0", @@ -62,20 +57,20 @@ "from": "agent-base@>=1.0.1 <1.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-1.0.2.tgz" }, - "angular2-slickgrid": { - "version": "1.3.4", - "from": "git://github.com/Microsoft/angular2-slickgrid.git#1.3.5", - "resolved": "git://github.com/Microsoft/angular2-slickgrid.git#d122015f2f3e4023394a7e485079da62f20b8356" - }, "angular2-grid": { "version": "2.0.6", "from": "angular2-grid@2.0.6", "resolved": "https://registry.npmjs.org/angular2-grid/-/angular2-grid-2.0.6.tgz" }, + "angular2-slickgrid": { + "version": "1.2.3", + "from": "git://github.com/Microsoft/angular2-slickgrid.git#1.3.5", + "resolved": "git://github.com/Microsoft/angular2-slickgrid.git#d122015f2f3e4023394a7e485079da62f20b8356" + }, "anymatch": { - "version": "1.3.0", + "version": "1.3.2", "from": "anymatch@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz" + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" }, "applicationinsights": { "version": "0.17.1", @@ -88,19 +83,19 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" }, "arr-flatten": { - "version": "1.0.3", + "version": "1.1.0", "from": "arr-flatten@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz" + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" }, "array-unique": { "version": "0.2.1", "from": "array-unique@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" }, - "arrify": { - "version": "1.0.1", - "from": "arrify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + "asap": { + "version": "2.0.6", + "from": "asap@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" }, "async-each": { "version": "1.0.1", @@ -108,25 +103,25 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz" }, "balanced-match": { - "version": "0.4.2", - "from": "balanced-match@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "version": "1.0.0", + "from": "balanced-match@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" }, "binary-extensions": { - "version": "1.8.0", + "version": "1.11.0", "from": "binary-extensions@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz" + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz" }, "bindings": { - "version": "1.2.1", + "version": "1.3.0", "from": "bindings@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", "optional": true }, "brace-expansion": { - "version": "1.1.7", + "version": "1.1.8", "from": "brace-expansion@>=1.1.7 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz" + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" }, "braces": { "version": "1.8.5", @@ -138,35 +133,32 @@ "from": "buffer-crc32@>=0.2.3 <0.3.0", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" }, - "buffer-shims": { - "version": "1.0.0", - "from": "buffer-shims@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, "caniuse-db": { - "version": "1.0.30000676", + "version": "1.0.30000783", "from": "caniuse-db@>=1.0.30000161 <2.0.0", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000676.tgz" + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000783.tgz" }, "chart.js": { - "version": "2.6.0", + "version": "2.7.1", "from": "chart.js@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.6.0.tgz" + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.1.tgz", + "dependencies": { + "moment": { + "version": "2.18.1", + "from": "moment@>=2.18.0 <2.19.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz" + } + } }, "chartjs-color": { - "version": "2.1.0", - "from": "chartjs-color@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.1.0.tgz" + "version": "2.2.0", + "from": "chartjs-color@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz" }, "chartjs-color-string": { - "version": "0.4.0", - "from": "chartjs-color-string@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.4.0.tgz" - }, - "chokidar": { - "version": "1.6.1", - "from": "bpasero/chokidar#vscode", - "resolved": "git://github.com/bpasero/chokidar.git#4c167ce0c29dae1727518998ecad63a049433e35" + "version": "0.5.0", + "from": "chartjs-color-string@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz" }, "color-convert": { "version": "0.5.3", @@ -174,14 +166,9 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz" }, "color-name": { - "version": "1.1.2", - "from": "color-name@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz" - }, - "comment-json": { "version": "1.1.3", - "from": "comment-json@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-1.1.3.tgz" + "from": "color-name@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" }, "concat-map": { "version": "0.0.1", @@ -189,9 +176,9 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" }, "core-js": { - "version": "2.4.1", + "version": "2.5.3", "from": "core-js@>=2.4.1 <3.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz" }, "core-util-is": { "version": "1.0.2", @@ -199,9 +186,9 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "from": "debug@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz" + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" }, "emmet": { "version": "1.3.2", @@ -218,11 +205,6 @@ "from": "escape-string-regexp@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" }, - "esprima": { - "version": "2.7.3", - "from": "esprima@>=2.7.0 <3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" - }, "expand-brackets": { "version": "0.1.5", "from": "expand-brackets@>=0.1.4 <0.2.0", @@ -269,9 +251,9 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" }, "for-in": { - "version": "0.1.5", - "from": "for-in@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.5.tgz" + "version": "1.0.2", + "from": "for-in@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" }, "for-own": { "version": "0.1.5", @@ -283,15 +265,14 @@ "from": "fs-extra@>=3.0.1 <4.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz" }, - "fsevents": { - "version": "0.3.8", - "from": "bpasero/fsevents#vscode", - "resolved": "git+https://github.com/bpasero/fsevents.git#fe2aaccaaffbd69a23374cf46a8c6bafe8e51b01", - "optional": true + "fs.realpath": { + "version": "1.0.0", + "from": "fs.realpath@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" }, "gc-signals": { "version": "0.0.1", - "from": "gc-signals@0.0.1", + "from": "gc-signals@>=0.0.1 <0.0.2", "resolved": "https://registry.npmjs.org/gc-signals/-/gc-signals-0.0.1.tgz" }, "getmac": { @@ -316,7 +297,7 @@ }, "html-query-plan": { "version": "1.0.0", - "from": "git://github.com/anthonydresser/html-query-plan.git#v2.2.5", + "from": "git://github.com/anthonydresser/html-query-plan.git#2.2.5", "resolved": "git://github.com/anthonydresser/html-query-plan.git#fbf8beac00b3870c0d3f4e95de979f7f1ec7af5d" }, "http-proxy-agent": { @@ -334,9 +315,14 @@ "from": "iconv-lite@0.4.15", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz" }, + "inflight": { + "version": "1.0.6", + "from": "inflight@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + }, "inherits": { "version": "2.0.3", - "from": "inherits@>=2.0.1 <3.0.0", + "from": "inherits@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" }, "is-arrayish": { @@ -350,9 +336,9 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" }, "is-buffer": { - "version": "1.1.5", + "version": "1.1.6", "from": "is-buffer@>=1.1.5 <2.0.0", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" }, "is-dotfile": { "version": "1.0.3", @@ -411,45 +397,43 @@ }, "jquery-ui": { "version": "1.12.1", - "from": "jquery-ui@>=1.12.1 <2.0.0", + "from": "jquery-ui@>=1.8.0", "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz" }, - "jquery.event.drag": { - "version": "2.2.2", - "from": "jquery.event.drag@2.2.2", - "resolved": "https://registry.npmjs.org/jquery.event.drag/-/jquery.event.drag-2.2.2.tgz" - }, "jschardet": { - "version": "1.5.1", + "version": "1.6.0", "from": "jschardet@>=1.5.1 <2.0.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz" - }, - "json-parser": { - "version": "1.1.5", - "from": "json-parser@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-1.1.5.tgz" + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz" }, "jsonfile": { - "version": "3.0.0", + "version": "3.0.1", "from": "jsonfile@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.0.tgz" + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz" }, "keytar": { - "version": "4.0.5", - "from": "keytar@latest", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-4.0.5.tgz", - "dependencies": { - "nan": { - "version": "2.5.1", - "from": "nan@2.5.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz" - } - } + "version": "4.1.0", + "from": "keytar@>=4.0.5 <5.0.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-4.1.0.tgz" }, "kind-of": { - "version": "3.0.4", + "version": "3.2.2", "from": "kind-of@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz" + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + }, + "klaw": { + "version": "1.3.1", + "from": "klaw@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + }, + "lodash.isinteger": { + "version": "4.0.4", + "from": "lodash.isinteger@>=4.0.4 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + }, + "lodash.isundefined": { + "version": "3.0.1", + "from": "lodash.isundefined@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz" }, "make-error": { "version": "1.3.0", @@ -461,20 +445,15 @@ "from": "micromatch@>=2.1.5 <3.0.0", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" }, - "minimatch": { - "version": "3.0.3", - "from": "minimatch@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" - }, "minimist": { "version": "1.2.0", "from": "minimist@1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" }, "moment": { - "version": "2.18.1", + "version": "2.20.0", "from": "moment@>=2.15.1 <3.0.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz" + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.0.tgz" }, "ms": { "version": "2.0.0", @@ -482,9 +461,9 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" }, "nan": { - "version": "2.5.0", - "from": "nan@2.5.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" + "version": "2.5.1", + "from": "nan@2.5.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz" }, "native-keymap": { "version": "1.2.5", @@ -502,27 +481,94 @@ "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-1.6.0.tgz" }, "node-pty": { - "version": "0.7.3", - "from": "node-pty@0.7.3", - "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-0.7.3.tgz", + "version": "0.7.0", + "from": "node-pty@0.7.0", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-0.7.0.tgz", "dependencies": { "nan": { - "version": "2.5.0", - "from": "nan@2.5.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" + "version": "2.8.0", + "from": "nan@>=2.6.2 <3.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz" } } }, + "nodegit-promise": { + "version": "4.0.0", + "from": "nodegit-promise@>=4.0.0 <4.1.0", + "resolved": "https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-4.0.0.tgz" + }, "normalize-path": { "version": "2.1.1", - "from": "normalize-path@>=2.0.1 <3.0.0", + "from": "normalize-path@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" }, + "nsfw": { + "version": "1.0.16", + "from": "nsfw@1.0.16", + "resolved": "https://registry.npmjs.org/nsfw/-/nsfw-1.0.16.tgz", + "dependencies": { + "fs-extra": { + "version": "0.26.7", + "from": "fs-extra@>=0.26.5 <0.27.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz" + }, + "jsonfile": { + "version": "2.4.0", + "from": "jsonfile@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" + } + } + }, + "object.omit": { + "version": "2.0.1", + "from": "object.omit@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" + }, + "once": { + "version": "1.4.0", + "from": "once@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + }, + "oniguruma": { + "version": "6.2.1", + "from": "oniguruma@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/oniguruma/-/oniguruma-6.2.1.tgz" + }, + "parse-glob": { + "version": "3.0.4", + "from": "parse-glob@>=3.0.4 <4.0.0", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" + }, + "path-is-absolute": { + "version": "1.0.1", + "from": "path-is-absolute@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + }, + "pend": { + "version": "1.2.0", + "from": "pend@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + }, + "preserve": { + "version": "0.2.0", + "from": "preserve@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + }, "pretty-data": { "version": "0.40.0", "from": "pretty-data@>=0.40.0 <0.41.0", "resolved": "https://registry.npmjs.org/pretty-data/-/pretty-data-0.40.0.tgz" }, + "process-nextick-args": { + "version": "1.0.7", + "from": "process-nextick-args@>=1.0.6 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "promisify-node": { + "version": "0.3.0", + "from": "promisify-node@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/promisify-node/-/promisify-node-0.3.0.tgz" + }, "pty.js": { "version": "0.3.0", "from": "https://github.com/Tyriar/pty.js/tarball/c75c2dcb6dcad83b0cb3ef2ae42d0448fb912642", @@ -540,195 +586,99 @@ } } }, - "nsfw": { - "version": "1.0.16", - "from": "nsfw@1.0.16", - "resolved": "https://registry.npmjs.org/nsfw/-/nsfw-1.0.16.tgz", + "randomatic": { + "version": "1.1.7", + "from": "randomatic@>=1.1.3 <2.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "dependencies": { - "asap": { - "version": "2.0.5", - "from": "asap@>=2.0.3 <2.1.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz" + "is-number": { + "version": "3.0.0", + "from": "is-number@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "dependencies": { + "kind-of": { + "version": "3.2.2", + "from": "kind-of@^3.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + } + } }, - "balanced-match": { - "version": "1.0.0", - "from": "balanced-match@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - }, - "brace-expansion": { - "version": "1.1.8", - "from": "brace-expansion@>=1.1.7 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "fs-extra": { - "version": "0.26.7", - "from": "fs-extra@>=0.26.5 <0.27.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz" - }, - "fs.realpath": { - "version": "1.0.0", - "from": "fs.realpath@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "glob": { - "version": "7.1.2", - "from": "glob@>=7.0.5 <8.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" - }, - "graceful-fs": { - "version": "4.1.11", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" - }, - "inflight": { - "version": "1.0.6", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "jsonfile": { - "version": "2.4.0", - "from": "jsonfile@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" - }, - "klaw": { - "version": "1.3.1", - "from": "klaw@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" - }, - "lodash": { - "version": "4.17.4", - "from": "lodash@>=4.6.1 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" - }, - "lodash.isinteger": { - "version": "4.0.4", - "from": "lodash.isinteger@>=4.0.4 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" - }, - "lodash.isundefined": { - "version": "3.0.1", - "from": "lodash.isundefined@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz" - }, - "minimatch": { - "version": "3.0.4", - "from": "minimatch@>=3.0.4 <4.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - }, - "nan": { - "version": "2.6.2", - "from": "nan@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz" - }, - "nodegit-promise": { + "kind-of": { "version": "4.0.0", - "from": "nodegit-promise@>=4.0.0 <4.1.0", - "resolved": "https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-4.0.0.tgz" - }, - "once": { - "version": "1.4.0", - "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - }, - "path-is-absolute": { - "version": "1.0.1", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - }, - "promisify-node": { - "version": "0.3.0", - "from": "promisify-node@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/promisify-node/-/promisify-node-0.3.0.tgz" - }, - "rimraf": { - "version": "2.6.1", - "from": "rimraf@>=2.2.8 <3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" - }, - "wrappy": { - "version": "1.0.2", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "kind-of@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" } } }, - "object.omit": { - "version": "2.0.0", - "from": "object.omit@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz" - }, - "oniguruma": { - "version": "6.1.1", - "from": "oniguruma@>=6.0.1 <7.0.0", - "resolved": "https://registry.npmjs.org/oniguruma/-/oniguruma-6.1.1.tgz" - }, - "parse-glob": { - "version": "3.0.4", - "from": "parse-glob@>=3.0.4 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "path-is-absolute@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "pend": { - "version": "1.2.0", - "from": "pend@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - }, - "preserve": { - "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "process-nextick-args@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "readable-stream": { + "version": "2.3.3", + "from": "readable-stream@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" }, "readdirp": { "version": "2.1.0", "from": "readdirp@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "dependencies": { - "balanced-match": { - "version": "1.0.0", - "from": "balanced-match@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - }, - "brace-expansion": { - "version": "1.1.8", - "from": "brace-expansion@>=1.1.7 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" - }, "minimatch": { "version": "3.0.4", - "from": "minimatch@>=3.0.2 <4.0.0", + "from": "minimatch@^3.0.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" } } }, + "reflect-metadata": { + "version": "0.1.10", + "from": "reflect-metadata@>=0.1.8 <0.2.0", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz" + }, "regex-cache": { - "version": "0.4.3", + "version": "0.4.4", "from": "regex-cache@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz" + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "from": "remove-trailing-separator@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" }, "repeat-element": { "version": "1.1.2", "from": "repeat-element@>=1.1.2 <2.0.0", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" }, + "repeat-string": { + "version": "1.6.1", + "from": "repeat-string@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + }, + "rimraf": { + "version": "2.6.2", + "from": "rimraf@>=2.2.8 <3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "dependencies": { + "glob": { + "version": "7.1.2", + "from": "glob@>=7.0.5 <8.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@>=3.0.4 <4.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + } + } + }, + "rxjs": { + "version": "5.4.0", + "from": "rxjs@5.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.0.tgz" + }, + "safe-buffer": { + "version": "5.1.1", + "from": "safe-buffer@>=5.1.1 <5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + }, "semver": { "version": "4.3.6", "from": "semver@4.3.6", @@ -739,11 +689,46 @@ "from": "set-immediate-shim@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" }, + "slickgrid": { + "version": "2.3.4", + "from": "anthonydresser/SlickGrid#2.3.7", + "resolved": "git://github.com/anthonydresser/SlickGrid.git#fa7911c34b5449f9ce1e7148480fbc24fd20743a" + }, + "string_decoder": { + "version": "1.0.3", + "from": "string_decoder@>=1.0.3 <1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz" + }, + "svg.js": { + "version": "2.6.3", + "from": "svg.js@>=2.2.5 <3.0.0", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.6.3.tgz" + }, + "symbol-observable": { + "version": "1.1.0", + "from": "symbol-observable@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz" + }, + "systemjs": { + "version": "0.19.40", + "from": "systemjs@0.19.40", + "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.40.tgz" + }, "typechecker": { "version": "2.0.8", "from": "typechecker@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.0.8.tgz" }, + "underscore": { + "version": "1.8.3", + "from": "underscore@>=1.8.3 <2.0.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + }, + "universalify": { + "version": "0.1.1", + "from": "universalify@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz" + }, "util-deprecate": { "version": "1.0.2", "from": "util-deprecate@>=1.0.1 <1.1.0", @@ -754,6 +739,11 @@ "from": "jrieken/v8-profiler#vscode", "resolved": "git://github.com/jrieken/v8-profiler.git#5e4a336693e1d5b079c7aecd286a1abcfbc10421" }, + "vscode-chokidar": { + "version": "1.6.2", + "from": "vscode-chokidar@1.6.2", + "resolved": "https://registry.npmjs.org/vscode-chokidar/-/vscode-chokidar-1.6.2.tgz" + }, "vscode-debugprotocol": { "version": "1.24.0", "from": "vscode-debugprotocol@1.24.0", @@ -766,94 +756,9 @@ }, "vscode-textmate": { "version": "3.2.0", - "from": "vscode-textmate@3.2.0", + "from": "vscode-textmate@>=3.2.0 <4.0.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-3.2.0.tgz" }, - "winreg": { - "version": "1.2.0", - "from": "winreg@1.2.0", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.0.tgz" - }, - "windows-process-tree": { - "version": "0.1.6", - "from": "windows-process-tree@0.1.6", - "resolved": "https://registry.npmjs.org/windows-process-tree/-/windows-process-tree-0.1.6.tgz" - }, - "xterm": { - "version": "2.9.1", - "from": "Tyriar/xterm.js#vscode-release/1.18", - "resolved": "git+https://github.com/Tyriar/xterm.js.git#074dbb562062423e322300a513869eed1836a9ba" - }, - "yauzl": { - "version": "2.8.0", - "from": "yauzl@2.8.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz" - }, - "randomatic": { - "version": "1.1.6", - "from": "randomatic@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz" - }, - "readable-stream": { - "version": "2.2.10", - "from": "readable-stream@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz" - }, - "reflect-metadata": { - "version": "0.1.10", - "from": "reflect-metadata@>=0.1.8 <0.2.0", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz" - }, - "remove-trailing-separator": { - "version": "1.0.1", - "from": "remove-trailing-separator@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz" - }, - "repeat-string": { - "version": "1.6.1", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.4.tgz" - }, - "rxjs": { - "version": "5.4.0", - "from": "rxjs@5.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.0.tgz" - }, - "safe-buffer": { - "version": "5.1.0", - "from": "safe-buffer@>=5.0.1 <6.0.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz" - }, - "slickgrid": { - "version": "2.3.6", - "from": "anthonydresser/SlickGrid#2.3.7", - "resolved": "git://github.com/anthonydresser/SlickGrid.git#fa7911c34b5449f9ce1e7148480fbc24fd20743a" - }, - "string_decoder": { - "version": "1.0.1", - "from": "string_decoder@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz" - }, - "symbol-observable": { - "version": "1.0.4", - "from": "symbol-observable@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz" - }, - "systemjs": { - "version": "0.19.40", - "from": "systemjs@0.19.40", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.40.tgz" - }, - "underscore": { - "version": "1.8.3", - "from": "underscore@>=1.8.3 <2.0.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - }, - "universalify": { - "version": "0.1.0", - "from": "universalify@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.0.tgz" - }, "when": { "version": "3.7.8", "from": "when@>=3.7.5 <4.0.0", @@ -870,6 +775,45 @@ "from": "windows-mutex@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/windows-mutex/-/windows-mutex-0.2.0.tgz", "optional": true + }, + "windows-process-tree": { + "version": "0.1.6", + "from": "windows-process-tree@0.1.6", + "resolved": "https://registry.npmjs.org/windows-process-tree/-/windows-process-tree-0.1.6.tgz", + "optional": true, + "dependencies": { + "nan": { + "version": "2.8.0", + "from": "nan@>=2.6.2 <3.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "optional": true + } + } + }, + "winreg": { + "version": "1.2.0", + "from": "winreg@1.2.0", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.0.tgz" + }, + "wrappy": { + "version": "1.0.2", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + }, + "xterm": { + "version": "2.9.1", + "from": "Tyriar/xterm.js#vscode-release/1.18", + "resolved": "git://github.com/Tyriar/xterm.js.git#074dbb562062423e322300a513869eed1836a9ba" + }, + "yauzl": { + "version": "2.8.0", + "from": "yauzl@2.8.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz" + }, + "zone.js": { + "version": "0.8.18", + "from": "zone.js@>=0.8.4 <0.9.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz" } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index dc95ca6e60..7000a231f7 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,6 @@ "angular2-slickgrid": "git://github.com/Microsoft/angular2-slickgrid.git#1.3.5", "applicationinsights": "0.17.1", "chart.js": "^2.6.0", - "chokidar": "bpasero/chokidar#vscode", - "comment-json": "^1.1.3", "core-js": "^2.4.1", "emmet": "ramya-rao-a/emmet#vscode", "error-ex": "^1.3.0", @@ -47,13 +45,11 @@ "gc-signals": "^0.0.1", "getmac": "1.0.7", "graceful-fs": "4.1.11", - "html-query-plan": "git://github.com/anthonydresser/html-query-plan.git#v2.2.5", + "html-query-plan": "git://github.com/anthonydresser/html-query-plan.git#2.2.5", "http-proxy-agent": "0.2.7", "https-proxy-agent": "0.3.6", "iconv-lite": "0.4.15", "jquery": "^2.2.0", - "jquery-ui": "^1.12.1", - "jquery.event.drag": "2.2.2", "make-error": "^1.1.1", "jschardet": "^1.5.1", "keytar": "^4.0.5", @@ -74,6 +70,7 @@ "systemjs": "0.19.40", "underscore": "^1.8.3", "v8-profiler": "jrieken/v8-profiler#vscode", + "vscode-chokidar": "1.6.2", "vscode-debugprotocol": "1.24.0", "vscode-ripgrep": "0.6.0-patch.0.2", "vscode-textmate": "^3.2.0", @@ -150,7 +147,6 @@ "typescript-formatter": "4.0.1", "uglify-js": "mishoo/UglifyJS2#harmony-v2.8.22", "uglify-es": "^3.0.18", - "underscore": "^1.8.2", "vinyl": "^0.4.5", "vinyl-fs": "^2.4.3", "vsce": "^1.25.1", diff --git a/src/typings/chokidar.d.ts b/src/typings/chokidar.d.ts index 89816f46ea..86b76cfa36 100644 --- a/src/typings/chokidar.d.ts +++ b/src/typings/chokidar.d.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -declare module 'chokidar' { +declare module 'vscode-chokidar' { /** * takes paths to be watched recursively and options diff --git a/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts b/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts index 94fb84d461..ef7fdaa2ae 100644 --- a/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/unix/chokidarWatcherService.ts @@ -5,7 +5,7 @@ 'use strict'; -import chokidar = require('chokidar'); +import chokidar = require('vscode-chokidar'); import fs = require('fs'); import gracefulFs = require('graceful-fs');