diff --git a/img/logo.png b/img/logo.png
new file mode 100644
index 0000000..a37e5a6
Binary files /dev/null and b/img/logo.png differ
diff --git a/img/logo.svg b/img/logo.svg
deleted file mode 100644
index 297a7ea..0000000
--- a/img/logo.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/node_modules/vscode/.npmignore b/node_modules/vscode/.npmignore
deleted file mode 100644
index 7c3afda..0000000
--- a/node_modules/vscode/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.vscode
-tsconfig.json
-lib/*.ts
-vscode.d.ts
-typings/vscode.raw.d.ts
\ No newline at end of file
diff --git a/node_modules/vscode/LICENSE b/node_modules/vscode/LICENSE
deleted file mode 100644
index 285053e..0000000
--- a/node_modules/vscode/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-vscode-extension-vscode
-
-The MIT License (MIT)
-
-Copyright (c) Microsoft Corporation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/node_modules/vscode/README.md b/node_modules/vscode/README.md
deleted file mode 100644
index c9fed25..0000000
--- a/node_modules/vscode/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# vscode-extension-vscode
-The vscode.d.ts node module
-
-# History
-
-* 1.0.0: Extension developement is based on TypeScript 2.0.3
-
-* 0.10.x: Extension developement is based on TypeScript 1.8.10
-
-# License
-[MIT](LICENSE)
diff --git a/node_modules/vscode/bin/compile b/node_modules/vscode/bin/compile
deleted file mode 100644
index 8a4db14..0000000
--- a/node_modules/vscode/bin/compile
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env node
-
-console.log('The vscode extension module got updated to TypeScript 2.0.x.');
-console.log('Please see https://code.visualstudio.com/updates/v1_6#_extension-authoring for instruction on how to migrate your extension.');
-
-process.exit(1);
\ No newline at end of file
diff --git a/node_modules/vscode/bin/install b/node_modules/vscode/bin/install
deleted file mode 100644
index dd693b0..0000000
--- a/node_modules/vscode/bin/install
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/env node
-
-var semver = require('semver');
-var fs = require('fs');
-var path = require('path');
-var shared = require('../lib/shared');
-
-process.on('uncaughtException', function (err) {
- exitWithError(err);
-});
-
-var engine = process.env.npm_package_engines_vscode;
-if (!engine) {
- exitWithError('Missing VSCode engine declaration in package.json.');
-}
-
-var vscodeDtsTypescriptPath = path.join(path.dirname(__dirname), 'vscode.d.ts');
-
-console.log('Detected VS Code engine version: ' + engine);
-
-getURLMatchingEngine(engine, function (error, data) {
- console.log('Fetching vscode.d.ts from: ' + data.url);
-
- shared.getContents(data.url, process.env.GITHUB_TOKEN, function (error, contents) {
- if (error) {
- exitWithError(error);
- }
-
- if (contents === 'Not Found') {
- exitWithError(new Error('Could not find vscode.d.ts at the provided URL. Please report this to https://github.com/Microsoft/vscode/issues'));
- }
-
- if (data.version !== '*' && semver.lt(data.version, '1.7.0')) {
- // Older versions of vscode.d.ts need a massage to play nice.
- contents = vscodeDtsToTypescript(contents);
- }
-
- fs.writeFileSync(vscodeDtsTypescriptPath, contents);
-
- console.log('vscode.d.ts successfully installed!\n');
- });
-});
-
-function vscodeDtsToTypescript(contents) {
- var markerHit = false;
- var lines = contents.split('\n').filter(function (line) {
- if (!markerHit && (line === '// when used for JS*' || line === 'declare module \'vscode\' {')) {
- markerHit = true;
- }
-
- return !markerHit;
- });
-
- lines.unshift('/// ')
- lines.push('export = vscode;'); // this is to enable TS module resolution support
-
- return lines.join('\n');
-}
-
-function getURLMatchingEngine(engine, callback) {
- if (engine === '*') {
- // master
- return callback(null, {
- url: 'https://raw.githubusercontent.com/Microsoft/vscode/master/src/vs/vscode.d.ts',
- version: '*'
- });
- }
-
- shared.getContents('https://vscode-update.azurewebsites.net/api/releases/stable', null, function (error, tagsRaw) {
- if (error) {
- exitWithError(error);
- }
-
- var tags;
- try {
- tags = JSON.parse(tagsRaw);
- } catch (error) {
- exitWithError(error);
- }
-
- var tag = minSatisfying(tags, engine);
-
- // check if master is on the version specified
- if (!tag) {
- return shared.getContents('https://raw.githubusercontent.com/Microsoft/vscode/master/package.json', process.env.GITHUB_TOKEN, function (error, packageJson) {
- if (error) {
- exitWithError(error);
- }
-
- var version = JSON.parse(packageJson).version;
- if (semver.satisfies(version, engine)) {
- // master
- return callback(null, {
- url: 'https://raw.githubusercontent.com/Microsoft/vscode/master/src/vs/vscode.d.ts',
- version: version
- });
- }
-
- exitWithError('Could not find satifying VSCode for version ' + engine + ' in the tags: [' + tags.join(', ') + '] or on master: ' + version);
- });
- }
-
- console.log('Found minimal version that qualifies engine range: ' + tag);
-
- return callback(null, {
- url: 'https://raw.githubusercontent.com/Microsoft/vscode/' + tag + '/src/vs/vscode.d.ts',
- version: tag
- });
- });
-}
-
-function minSatisfying(versions, range) {
- return versions.filter(function (version) {
- try {
- return semver.satisfies(version, range);
- } catch (error) {
- return false; // version might be invalid so we return as not matching
- };
- }).sort(function (a, b) {
- return semver.compare(a, b);
- })[0] || null;
-}
-
-function exitWithError(error) {
- console.error('Error installing vscode.d.ts: ' + error.toString());
- process.exit(1);
-}
\ No newline at end of file
diff --git a/node_modules/vscode/bin/test b/node_modules/vscode/bin/test
deleted file mode 100644
index c658b11..0000000
--- a/node_modules/vscode/bin/test
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/env node
-
-var remote = require('gulp-remote-src');
-var vzip = require('gulp-vinyl-zip');
-var symdest = require('gulp-symdest');
-var untar = require('gulp-untar');
-var gunzip = require('gulp-gunzip');
-var chmod = require('gulp-chmod');
-var filter = require('gulp-filter');
-var path = require('path');
-var cp = require('child_process');
-var fs = require('fs');
-var shared = require('../lib/shared');
-var request = require('request');
-var source = require('vinyl-source-stream');
-
-var testRunFolder = '.vscode-test';
-var testRunFolderAbsolute = path.join(process.cwd(), testRunFolder);
-
-var version = process.env.CODE_VERSION || '*';
-
-var downloadPlatform = (process.platform === 'darwin') ? 'darwin' : process.platform === 'win32' ? 'win32-archive' : 'linux-x64';
-
-var windowsExecutable = path.join(testRunFolderAbsolute, 'Code');
-var darwinExecutable = path.join(testRunFolderAbsolute, 'Visual Studio Code.app', 'Contents', 'MacOS', 'Electron');
-var linuxExecutable = path.join(testRunFolderAbsolute, 'VSCode-linux-x64', 'code');
-if (['0.10.1', '0.10.2', '0.10.3', '0.10.4', '0.10.5', '0.10.6', '0.10.7', '0.10.8', '0.10.9'].indexOf(version) >= 0) {
- linuxExecutable = path.join(testRunFolderAbsolute, 'VSCode-linux-x64', 'Code');
-}
-
-var testsFolder;
-if (process.env.CODE_TESTS_PATH) {
- testsFolder = process.env.CODE_TESTS_PATH;
-} else if (fs.existsSync(path.join(process.cwd(), 'out', 'test'))) {
- testsFolder = path.join(process.cwd(), 'out', 'test'); // TS extension
-} else {
- testsFolder = path.join(process.cwd(), 'test'); // JS extension
-}
-
-var testsWorkspace = process.env.CODE_TESTS_WORKSPACE || testsFolder;
-
-console.log('### VS Code Extension Test Run ###');
-console.log('Current working directory: ' + process.cwd());
-
-function runTests() {
- var executable = (process.platform === 'darwin') ? darwinExecutable : process.platform === 'win32' ? windowsExecutable : linuxExecutable;
- var args = [
- testsWorkspace,
- '--extensionDevelopmentPath=' + process.cwd(),
- '--extensionTestsPath=' + testsFolder
- ];
-
- console.log('Running extension tests: ' + [executable, args.join(' ')].join(' '));
-
- var cmd = cp.spawn(executable, args);
-
- cmd.stdout.on('data', function (data) {
- console.log(data.toString());
- });
-
- cmd.stderr.on('data', function (data) {
- console.error(data.toString());
- });
-
- cmd.on('error', function (data) {
- console.log('Failed to execute tests: ' + data.toString());
- });
-
- cmd.on('close', function (code) {
- console.log('Tests exited with code: ' + code);
-
- if (code !== 0) {
- process.exit(code); // propagate exit code to outer runner
- }
- });
-}
-
-function downloadExecutableAndRunTests() {
- getDownloadUrl(function (downloadUrl) {
- console.log('Downloading VS Code into "' + testRunFolderAbsolute + '" from: ' + downloadUrl);
-
- var version = downloadUrl.match(/\d+\.\d+\.\d+/)[0].split('\.');
- var isTarGz = downloadUrl.match(/linux/) && version[0] >= 1 && version[1] >= 5;
-
- var stream;
- if (isTarGz) {
- var gulpFilter = filter('VSCode-linux-x64/code', { restore: true });
- stream = request(downloadUrl)
- .pipe(source(path.basename(downloadUrl)))
- .pipe(gunzip())
- .pipe(untar())
- .pipe(gulpFilter)
- .pipe(chmod(755))
- .pipe(gulpFilter.restore)
- .pipe(symdest(testRunFolder));
- } else {
- stream = remote('', { base: downloadUrl })
- .pipe(vzip.src())
- .pipe(symdest(testRunFolder));
- }
-
- stream.on('end', runTests);
- });
-}
-
-function getDownloadUrl(clb) {
- if (process.env.CODE_DOWNLOAD_URL) {
- return clb(process.env.CODE_DOWNLOAD_URL);
- }
-
- getTag(function (tag) {
- return clb(['https://vscode-update.azurewebsites.net', tag, downloadPlatform, 'stable'].join('/'));
- });
-}
-
-function getTag(clb) {
- if (version !== '*') {
- return clb(version);
- }
-
- shared.getContents('https://vscode-update.azurewebsites.net/api/releases/stable/' + downloadPlatform, null, function (error, tagsRaw) {
- if (error) {
- exitWithError(error);
- }
-
- try {
- clb(JSON.parse(tagsRaw)[0]); // first one is latest
- } catch (error) {
- exitWithError(error);
- }
- });
-}
-
-fs.exists(testRunFolderAbsolute, function (exists) {
- if (exists) {
- runTests();
- } else {
- downloadExecutableAndRunTests();
- }
-});
-
-function exitWithError(error) {
- console.error('Error running tests: ' + error.toString());
- process.exit(1);
-}
diff --git a/node_modules/vscode/lib/shared.js b/node_modules/vscode/lib/shared.js
deleted file mode 100644
index a573a97..0000000
--- a/node_modules/vscode/lib/shared.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-var request = require('request');
-function getContents(url, token, callback) {
- var headers = {
- 'user-agent': 'nodejs'
- };
- if (token) {
- headers['Authorization'] = 'token ' + token;
- }
- var options = {
- url: url,
- headers: headers
- };
- request.get(options, function (error, response, body) {
- if (!error && response && response.statusCode >= 400) {
- error = new Error('Request returned status code: ' + response.statusCode + '\nDetails: ' + response.body);
- }
- callback(error, body);
- });
-}
-exports.getContents = getContents;
diff --git a/node_modules/vscode/lib/testrunner.js b/node_modules/vscode/lib/testrunner.js
deleted file mode 100644
index 6b54d4d..0000000
--- a/node_modules/vscode/lib/testrunner.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-var paths = require("path");
-var glob = require("glob");
-// Linux: prevent a weird NPE when mocha on Linux requires the window size from the TTY
-// Since we are not running in a tty environment, we just implementt he method statically
-var tty = require('tty');
-if (!tty.getWindowSize) {
- tty.getWindowSize = function () { return [80, 75]; };
-}
-var Mocha = require("mocha");
-var mocha = new Mocha({
- ui: 'tdd',
- useColors: true
-});
-function configure(opts) {
- mocha = new Mocha(opts);
-}
-exports.configure = configure;
-function run(testsRoot, clb) {
- // Enable source map support
- require('source-map-support').install();
- // Glob test files
- glob('**/**.test.js', { cwd: testsRoot }, function (error, files) {
- if (error) {
- return clb(error);
- }
- try {
- // Fill into Mocha
- files.forEach(function (f) { return mocha.addFile(paths.join(testsRoot, f)); });
- // Run the tests
- mocha.run(function (failures) {
- clb(null, failures);
- });
- }
- catch (error) {
- return clb(error);
- }
- });
-}
-exports.run = run;
diff --git a/node_modules/vscode/package.json b/node_modules/vscode/package.json
deleted file mode 100644
index af074c5..0000000
--- a/node_modules/vscode/package.json
+++ /dev/null
@@ -1,133 +0,0 @@
-{
- "_args": [
- [
- {
- "raw": "vscode@^1.0.5",
- "scope": null,
- "escapedName": "vscode",
- "name": "vscode",
- "rawSpec": "^1.0.5",
- "spec": ">=1.0.5 <2.0.0",
- "type": "range"
- },
- "C:\\Users\\Jan Brodersen\\.vscode\\extensions\\Examples\\vscode-languageserver-node-example\\client"
- ]
- ],
- "_from": "vscode@>=1.0.5 <2.0.0",
- "_id": "vscode@1.0.5",
- "_inCache": true,
- "_installable": true,
- "_location": "/vscode",
- "_nodeVersion": "6.9.2",
- "_npmOperationalInternal": {
- "host": "packages-18-east.internal.npmjs.com",
- "tmp": "tmp/vscode-1.0.5.tgz_1488440030758_0.6885614851489663"
- },
- "_npmUser": {
- "name": "bpasero",
- "email": "benjpas@microsoft.com"
- },
- "_npmVersion": "3.10.9",
- "_phantomChildren": {},
- "_requested": {
- "raw": "vscode@^1.0.5",
- "scope": null,
- "escapedName": "vscode",
- "name": "vscode",
- "rawSpec": "^1.0.5",
- "spec": ">=1.0.5 <2.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "#DEV:/"
- ],
- "_resolved": "https://registry.npmjs.org/vscode/-/vscode-1.0.5.tgz",
- "_shasum": "2cabfbd55e4800882597f224390f515be0965302",
- "_shrinkwrap": null,
- "_spec": "vscode@^1.0.5",
- "_where": "C:\\Users\\Jan Brodersen\\.vscode\\extensions\\Examples\\vscode-languageserver-node-example\\client",
- "author": {
- "name": "Visual Studio Code Team"
- },
- "bugs": {
- "url": "https://github.com/Microsoft/vscode-extension-vscode/issues"
- },
- "dependencies": {
- "glob": "^5.0.15",
- "gulp-chmod": "^1.3.0",
- "gulp-filter": "^4.0.0",
- "gulp-gunzip": "0.0.3",
- "gulp-remote-src": "^0.4.0",
- "gulp-symdest": "^1.0.0",
- "gulp-untar": "0.0.5",
- "gulp-vinyl-zip": "^1.1.2",
- "mocha": "^2.3.3",
- "request": "^2.67.0",
- "semver": "^5.1.0",
- "source-map-support": "^0.3.2",
- "vinyl-source-stream": "^1.1.0"
- },
- "description": "The vscode.d.ts node module",
- "devDependencies": {
- "@types/glob": "^5.0.30",
- "@types/mocha": "^2.2.32",
- "@types/node": "^6.0.41",
- "typescript": "^2.0.3"
- },
- "directories": {},
- "dist": {
- "shasum": "2cabfbd55e4800882597f224390f515be0965302",
- "tarball": "https://registry.npmjs.org/vscode/-/vscode-1.0.5.tgz"
- },
- "gitHead": "e196fd581af31c432a72fdbeecd09d08295daa8f",
- "homepage": "https://github.com/Microsoft/vscode-extension-vscode#readme",
- "license": "MIT",
- "maintainers": [
- {
- "name": "alexandrudima",
- "email": "alexdima@microsoft.com"
- },
- {
- "name": "bpasero",
- "email": "benjpas@microsoft.com"
- },
- {
- "name": "chrisdias",
- "email": "cdias@microsoft.com"
- },
- {
- "name": "dbaeumer",
- "email": "dirk.baeumer@gmail.com"
- },
- {
- "name": "egamma",
- "email": "egamma@microsoft.com"
- },
- {
- "name": "joaomoreno.ms",
- "email": "joao.moreno@microsoft.com"
- },
- {
- "name": "jrieken",
- "email": "jrieken@microsoft.com"
- },
- {
- "name": "microsoft",
- "email": "npmjs@microsoft.com"
- }
- ],
- "name": "vscode",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/Microsoft/vscode-extension-vscode.git"
- },
- "scripts": {
- "compile": "tsc -p ./",
- "prepublish": "tsc -p ./",
- "watch": "tsc -watch -p ./"
- },
- "typings": "vscode.d.ts",
- "version": "1.0.5"
-}
diff --git a/node_modules/vscode/thenable.d.ts b/node_modules/vscode/thenable.d.ts
deleted file mode 100644
index 11e1060..0000000
--- a/node_modules/vscode/thenable.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-interface Thenable extends PromiseLike {}
\ No newline at end of file
diff --git a/node_modules/vscode/thirdpartynotices.txt b/node_modules/vscode/thirdpartynotices.txt
deleted file mode 100644
index 860eb8a..0000000
--- a/node_modules/vscode/thirdpartynotices.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
-For Microsoft vscode-extension-vscode
-
-This project incorporates material from the project(s) listed below (collectively, “Third Party Code”). Microsoft is not the original author of the Third Party Code. The original copyright notice and license under which Microsoft received such Third Party Code are set out below. This Third Party Code is licensed to you under their original license terms set forth below. Microsoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise.
-
-1. DefinitelyTyped version 0.0.1 (https://github.com/borisyankov/DefinitelyTyped)
-
-This project is licensed under the MIT license.
-Copyrights are respective of each contributor listed at the beginning of each definition file.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/vscode/tslint.json b/node_modules/vscode/tslint.json
deleted file mode 100644
index 4ea88cd..0000000
--- a/node_modules/vscode/tslint.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "rules": {
- "no-unused-expression": true,
- "no-unreachable": true,
- "no-duplicate-variable": true,
- "no-duplicate-key": true,
- "no-unused-variable": true,
- "curly": true,
- "class-name": true,
- "semicolon": true,
- "triple-equals": true,
- "no-unexternalized-strings": [
- true,
- {
- "signatures": ["localize", "nls.localize"],
- "keyIndex": 0,
- "messageIndex": 1
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/node_modules/vscode/vscode.d.ts b/node_modules/vscode/vscode.d.ts
deleted file mode 100644
index 1b82751..0000000
--- a/node_modules/vscode/vscode.d.ts
+++ /dev/null
@@ -1,4536 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare module 'vscode' {
-
- /**
- * The version of the editor.
- */
- export const version: string;
-
- /**
- * Represents a reference to a command. Provides a title which
- * will be used to represent a command in the UI and, optionally,
- * an array of arguments which will be passed to the command handler
- * function when invoked.
- */
- export interface Command {
- /**
- * Title of the command, like `save`.
- */
- title: string;
-
- /**
- * The identifier of the actual command handler.
- * @see [commands.registerCommand](#commands.registerCommand).
- */
- command: string;
-
- /**
- * Arguments that the command handler should be
- * invoked with.
- */
- arguments?: any[];
- }
-
- /**
- * Represents a line of text, such as a line of source code.
- *
- * TextLine objects are __immutable__. When a [document](#TextDocument) changes,
- * previously retrieved lines will not represent the latest state.
- */
- export interface TextLine {
-
- /**
- * The zero-based line number.
- */
- readonly lineNumber: number;
-
- /**
- * The text of this line without the line separator characters.
- */
- readonly text: string;
-
- /**
- * The range this line covers without the line separator characters.
- */
- readonly range: Range;
-
- /**
- * The range this line covers with the line separator characters.
- */
- readonly rangeIncludingLineBreak: Range;
-
- /**
- * The offset of the first character which is not a whitespace character as defined
- * by `/\s/`. **Note** that if a line is all whitespaces the length of the line is returned.
- */
- readonly firstNonWhitespaceCharacterIndex: number;
-
- /**
- * Whether this line is whitespace only, shorthand
- * for [TextLine.firstNonWhitespaceCharacterIndex](#TextLine.firstNonWhitespaceCharacterIndex) === [TextLine.text.length](#TextLine.text).
- */
- readonly isEmptyOrWhitespace: boolean;
- }
-
- /**
- * Represents a text document, such as a source file. Text documents have
- * [lines](#TextLine) and knowledge about an underlying resource like a file.
- */
- export interface TextDocument {
-
- /**
- * The associated URI for this document. Most documents have the __file__-scheme, indicating that they
- * represent files on disk. However, some documents may have other schemes indicating that they are not
- * available on disk.
- */
- readonly uri: Uri;
-
- /**
- * The file system path of the associated resource. Shorthand
- * notation for [TextDocument.uri.fsPath](#TextDocument.uri). Independent of the uri scheme.
- */
- readonly fileName: string;
-
- /**
- * Is this document representing an untitled file.
- */
- readonly isUntitled: boolean;
-
- /**
- * The identifier of the language associated with this document.
- */
- readonly languageId: string;
-
- /**
- * The version number of this document (it will strictly increase after each
- * change, including undo/redo).
- */
- readonly version: number;
-
- /**
- * true if there are unpersisted changes.
- */
- readonly isDirty: boolean;
-
- /**
- * Save the underlying file.
- *
- * @return A promise that will resolve to true when the file
- * has been saved. If the file was not dirty or the save failed,
- * will return false.
- */
- save(): Thenable;
-
- /**
- * The number of lines in this document.
- */
- readonly lineCount: number;
-
- /**
- * Returns a text line denoted by the line number. Note
- * that the returned object is *not* live and changes to the
- * document are not reflected.
- *
- * @param line A line number in [0, lineCount).
- * @return A [line](#TextLine).
- */
- lineAt(line: number): TextLine;
-
- /**
- * Returns a text line denoted by the position. Note
- * that the returned object is *not* live and changes to the
- * document are not reflected.
- *
- * The position will be [adjusted](#TextDocument.validatePosition).
- *
- * @see [TextDocument.lineAt](#TextDocument.lineAt)
- * @param position A position.
- * @return A [line](#TextLine).
- */
- lineAt(position: Position): TextLine;
-
- /**
- * Converts the position to a zero-based offset.
- *
- * The position will be [adjusted](#TextDocument.validatePosition).
- *
- * @param position A position.
- * @return A valid zero-based offset.
- */
- offsetAt(position: Position): number;
-
- /**
- * Converts a zero-based offset to a position.
- *
- * @param offset A zero-based offset.
- * @return A valid [position](#Position).
- */
- positionAt(offset: number): Position;
-
- /**
- * Get the text of this document. A substring can be retrieved by providing
- * a range. The range will be [adjusted](#TextDocument.validateRange).
- *
- * @param range Include only the text included by the range.
- * @return The text inside the provided range or the entire text.
- */
- getText(range?: Range): string;
-
- /**
- * Get a word-range at the given position. By default words are defined by
- * common separators, like space, -, _, etc. In addition, per languge custom
- * [word definitions](#LanguageConfiguration.wordPattern) can be defined. It
- * is also possible to provide a custom regular expression.
- *
- * The position will be [adjusted](#TextDocument.validatePosition).
- *
- * @param position A position.
- * @param regex Optional regular expression that describes what a word is.
- * @return A range spanning a word, or `undefined`.
- */
- getWordRangeAtPosition(position: Position, regex?: RegExp): Range | undefined;
-
- /**
- * Ensure a range is completely contained in this document.
- *
- * @param range A range.
- * @return The given range or a new, adjusted range.
- */
- validateRange(range: Range): Range;
-
- /**
- * Ensure a position is contained in the range of this document.
- *
- * @param position A position.
- * @return The given position or a new, adjusted position.
- */
- validatePosition(position: Position): Position;
- }
-
- /**
- * Represents a line and character position, such as
- * the position of the cursor.
- *
- * Position objects are __immutable__. Use the [with](#Position.with) or
- * [translate](#Position.translate) methods to derive new positions
- * from an existing position.
- */
- export class Position {
-
- /**
- * The zero-based line value.
- */
- readonly line: number;
-
- /**
- * The zero-based character value.
- */
- readonly character: number;
-
- /**
- * @param line A zero-based line value.
- * @param character A zero-based character value.
- */
- constructor(line: number, character: number);
-
- /**
- * Check if `other` is before this position.
- *
- * @param other A position.
- * @return `true` if position is on a smaller line
- * or on the same line on a smaller character.
- */
- isBefore(other: Position): boolean;
-
- /**
- * Check if `other` is before or equal to this position.
- *
- * @param other A position.
- * @return `true` if position is on a smaller line
- * or on the same line on a smaller or equal character.
- */
- isBeforeOrEqual(other: Position): boolean;
-
- /**
- * Check if `other` is after this position.
- *
- * @param other A position.
- * @return `true` if position is on a greater line
- * or on the same line on a greater character.
- */
- isAfter(other: Position): boolean;
-
- /**
- * Check if `other` is after or equal to this position.
- *
- * @param other A position.
- * @return `true` if position is on a greater line
- * or on the same line on a greater or equal character.
- */
- isAfterOrEqual(other: Position): boolean;
-
- /**
- * Check if `other` equals this position.
- *
- * @param other A position.
- * @return `true` if the line and character of the given position are equal to
- * the line and character of this position.
- */
- isEqual(other: Position): boolean;
-
- /**
- * Compare this to `other`.
- *
- * @param other A position.
- * @return A number smaller than zero if this position is before the given position,
- * a number greater than zero if this position is after the given position, or zero when
- * this and the given position are equal.
- */
- compareTo(other: Position): number;
-
- /**
- * Create a new position relative to this position.
- *
- * @param lineDelta Delta value for the line value, default is `0`.
- * @param characterDelta Delta value for the character value, default is `0`.
- * @return A position which line and character is the sum of the current line and
- * character and the corresponding deltas.
- */
- translate(lineDelta?: number, characterDelta?: number): Position;
-
- /**
- * Derived a new position relative to this position.
- *
- * @param change An object that describes a delta to this position.
- * @return A position that reflects the given delta. Will return `this` position if the change
- * is not changing anything.
- */
- translate(change: { lineDelta?: number; characterDelta?: number; }): Position;
-
- /**
- * Create a new position derived from this position.
- *
- * @param line Value that should be used as line value, default is the [existing value](#Position.line)
- * @param character Value that should be used as character value, default is the [existing value](#Position.character)
- * @return A position where line and character are replaced by the given values.
- */
- with(line?: number, character?: number): Position;
-
- /**
- * Derived a new position from this position.
- *
- * @param change An object that describes a change to this position.
- * @return A position that reflects the given change. Will return `this` position if the change
- * is not changing anything.
- */
- with(change: { line?: number; character?: number; }): Position;
- }
-
- /**
- * A range represents an ordered pair of two positions.
- * It is guaranteed that [start](#Range.start).isBeforeOrEqual([end](#Range.end))
- *
- * Range objects are __immutable__. Use the [with](#Range.with),
- * [intersection](#Range.intersection), or [union](#Range.union) methods
- * to derive new ranges from an existing range.
- */
- export class Range {
-
- /**
- * The start position. It is before or equal to [end](#Range.end).
- */
- readonly start: Position;
-
- /**
- * The end position. It is after or equal to [start](#Range.start).
- */
- readonly end: Position;
-
- /**
- * Create a new range from two positions. If `start` is not
- * before or equal to `end`, the values will be swapped.
- *
- * @param start A position.
- * @param end A position.
- */
- constructor(start: Position, end: Position);
-
- /**
- * Create a new range from number coordinates. It is a shorter equivalent of
- * using `new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter))`
- *
- * @param startLine A zero-based line value.
- * @param startCharacter A zero-based character value.
- * @param endLine A zero-based line value.
- * @param endCharacter A zero-based character value.
- */
- constructor(startLine: number, startCharacter: number, endLine: number, endCharacter: number);
-
- /**
- * `true` if `start` and `end` are equal.
- */
- isEmpty: boolean;
-
- /**
- * `true` if `start.line` and `end.line` are equal.
- */
- isSingleLine: boolean;
-
- /**
- * Check if a position or a range is contained in this range.
- *
- * @param positionOrRange A position or a range.
- * @return `true` if the position or range is inside or equal
- * to this range.
- */
- contains(positionOrRange: Position | Range): boolean;
-
- /**
- * Check if `other` equals this range.
- *
- * @param other A range.
- * @return `true` when start and end are [equal](#Position.isEqual) to
- * start and end of this range.
- */
- isEqual(other: Range): boolean;
-
- /**
- * Intersect `range` with this range and returns a new range or `undefined`
- * if the ranges have no overlap.
- *
- * @param range A range.
- * @return A range of the greater start and smaller end positions. Will
- * return undefined when there is no overlap.
- */
- intersection(range: Range): Range | undefined;
-
- /**
- * Compute the union of `other` with this range.
- *
- * @param other A range.
- * @return A range of smaller start position and the greater end position.
- */
- union(other: Range): Range;
-
- /**
- * Derived a new range from this range.
- *
- * @param start A position that should be used as start. The default value is the [current start](#Range.start).
- * @param end A position that should be used as end. The default value is the [current end](#Range.end).
- * @return A range derived from this range with the given start and end position.
- * If start and end are not different `this` range will be returned.
- */
- with(start?: Position, end?: Position): Range;
-
- /**
- * Derived a new range from this range.
- *
- * @param change An object that describes a change to this range.
- * @return A range that reflects the given change. Will return `this` range if the change
- * is not changing anything.
- */
- with(change: { start?: Position, end?: Position }): Range;
- }
-
- /**
- * Represents a text selection in an editor.
- */
- export class Selection extends Range {
-
- /**
- * The position at which the selection starts.
- * This position might be before or after [active](#Selection.active).
- */
- anchor: Position;
-
- /**
- * The position of the cursor.
- * This position might be before or after [anchor](#Selection.anchor).
- */
- active: Position;
-
- /**
- * Create a selection from two postions.
- *
- * @param anchor A position.
- * @param active A position.
- */
- constructor(anchor: Position, active: Position);
-
- /**
- * Create a selection from four coordinates.
- *
- * @param anchorLine A zero-based line value.
- * @param anchorCharacter A zero-based character value.
- * @param activeLine A zero-based line value.
- * @param activeCharacter A zero-based character value.
- */
- constructor(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number);
-
- /**
- * A selection is reversed if [active](#Selection.active).isBefore([anchor](#Selection.anchor)).
- */
- isReversed: boolean;
- }
-
- /**
- * Represents sources that can cause [selection change events](#window.onDidChangeTextEditorSelection).
- */
- export enum TextEditorSelectionChangeKind {
- /**
- * Selection changed due to typing in the editor.
- */
- Keyboard = 1,
- /**
- * Selection change due to clicking in the editor.
- */
- Mouse = 2,
- /**
- * Selection changed because a command ran.
- */
- Command = 3
- }
-
- /**
- * Represents an event describing the change in a [text editor's selections](#TextEditor.selections).
- */
- export interface TextEditorSelectionChangeEvent {
- /**
- * The [text editor](#TextEditor) for which the selections have changed.
- */
- textEditor: TextEditor;
- /**
- * The new value for the [text editor's selections](#TextEditor.selections).
- */
- selections: Selection[];
- /**
- * The [change kind](#TextEditorSelectionChangeKind) which has triggered this
- * event. Can be `undefined`.
- */
- kind?: TextEditorSelectionChangeKind;
- }
-
- /**
- * Represents an event describing the change in a [text editor's options](#TextEditor.options).
- */
- export interface TextEditorOptionsChangeEvent {
- /**
- * The [text editor](#TextEditor) for which the options have changed.
- */
- textEditor: TextEditor;
- /**
- * The new value for the [text editor's options](#TextEditor.options).
- */
- options: TextEditorOptions;
- }
-
- /**
- * Represents an event describing the change of a [text editor's view column](#TextEditor.viewColumn).
- */
- export interface TextEditorViewColumnChangeEvent {
- /**
- * The [text editor](#TextEditor) for which the options have changed.
- */
- textEditor: TextEditor;
- /**
- * The new value for the [text editor's view column](#TextEditor.viewColumn).
- */
- viewColumn: ViewColumn;
- }
-
- /**
- * Rendering style of the cursor.
- */
- export enum TextEditorCursorStyle {
- /**
- * Render the cursor as a vertical thick line.
- */
- Line = 1,
- /**
- * Render the cursor as a block filled.
- */
- Block = 2,
- /**
- * Render the cursor as a thick horizontal line.
- */
- Underline = 3,
- /**
- * Render the cursor as a vertical thin line.
- */
- LineThin = 4,
- /**
- * Render the cursor as a block outlined.
- */
- BlockOutline = 5,
- /**
- * Render the cursor as a thin horizontal line.
- */
- UnderlineThin = 6
- }
-
- /**
- * Rendering style of the line numbers.
- */
- export enum TextEditorLineNumbersStyle {
- /**
- * Do not render the line numbers.
- */
- Off = 0,
- /**
- * Render the line numbers.
- */
- On = 1,
- /**
- * Render the line numbers with values relative to the primary cursor location.
- */
- Relative = 2
- }
-
- /**
- * Represents a [text editor](#TextEditor)'s [options](#TextEditor.options).
- */
- export interface TextEditorOptions {
-
- /**
- * The size in spaces a tab takes. This is used for two purposes:
- * - the rendering width of a tab character;
- * - the number of spaces to insert when [insertSpaces](#TextEditorOptions.insertSpaces) is true.
- *
- * When getting a text editor's options, this property will always be a number (resolved).
- * When setting a text editor's options, this property is optional and it can be a number or `"auto"`.
- */
- tabSize?: number | string;
-
- /**
- * When pressing Tab insert [n](#TextEditorOptions.tabSize) spaces.
- * When getting a text editor's options, this property will always be a boolean (resolved).
- * When setting a text editor's options, this property is optional and it can be a boolean or `"auto"`.
- */
- insertSpaces?: boolean | string;
-
- /**
- * The rendering style of the cursor in this editor.
- * When getting a text editor's options, this property will always be present.
- * When setting a text editor's options, this property is optional.
- */
- cursorStyle?: TextEditorCursorStyle;
-
- /**
- * Render relative line numbers w.r.t. the current line number.
- * When getting a text editor's options, this property will always be present.
- * When setting a text editor's options, this property is optional.
- */
- lineNumbers?: TextEditorLineNumbersStyle;
- }
-
- /**
- * Represents a handle to a set of decorations
- * sharing the same [styling options](#DecorationRenderOptions) in a [text editor](#TextEditor).
- *
- * To get an instance of a `TextEditorDecorationType` use
- * [createTextEditorDecorationType](#window.createTextEditorDecorationType).
- */
- export interface TextEditorDecorationType {
-
- /**
- * Internal representation of the handle.
- */
- readonly key: string;
-
- /**
- * Remove this decoration type and all decorations on all text editors using it.
- */
- dispose(): void;
- }
-
- /**
- * Represents different [reveal](#TextEditor.revealRange) strategies in a text editor.
- */
- export enum TextEditorRevealType {
- /**
- * The range will be revealed with as little scrolling as possible.
- */
- Default = 0,
- /**
- * The range will always be revealed in the center of the viewport.
- */
- InCenter = 1,
- /**
- * If the range is outside the viewport, it will be revealed in the center of the viewport.
- * Otherwise, it will be revealed with as little scrolling as possible.
- */
- InCenterIfOutsideViewport = 2,
- /**
- * The range will always be revealed at the top of the viewport.
- */
- AtTop = 3
- }
-
- /**
- * Represents different positions for rendering a decoration in an [overview ruler](#DecorationRenderOptions.overviewRulerLane).
- * The overview ruler supports three lanes.
- */
- export enum OverviewRulerLane {
- Left = 1,
- Center = 2,
- Right = 4,
- Full = 7
- }
-
- /**
- * Represents theme specific rendering styles for a [text editor decoration](#TextEditorDecorationType).
- */
- export interface ThemableDecorationRenderOptions {
- /**
- * Background color of the decoration. Use rgba() and define transparent background colors to play well with other decorations.
- */
- backgroundColor?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- */
- outline?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'outline' for setting one or more of the individual outline properties.
- */
- outlineColor?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'outline' for setting one or more of the individual outline properties.
- */
- outlineStyle?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'outline' for setting one or more of the individual outline properties.
- */
- outlineWidth?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- */
- border?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'border' for setting one or more of the individual border properties.
- */
- borderColor?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'border' for setting one or more of the individual border properties.
- */
- borderRadius?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'border' for setting one or more of the individual border properties.
- */
- borderSpacing?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'border' for setting one or more of the individual border properties.
- */
- borderStyle?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- * Better use 'border' for setting one or more of the individual border properties.
- */
- borderWidth?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- */
- textDecoration?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- */
- cursor?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- */
- color?: string;
-
- /**
- * CSS styling property that will be applied to text enclosed by a decoration.
- */
- letterSpacing?: string;
-
- /**
- * An **absolute path** or an URI to an image to be rendered in the gutter.
- */
- gutterIconPath?: string | Uri;
-
- /**
- * Specifies the size of the gutter icon.
- * Available values are 'auto', 'contain', 'cover' and any percentage value.
- * For further information: https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx
- */
- gutterIconSize?: string;
-
- /**
- * The color of the decoration in the overview ruler. Use rgba() and define transparent colors to play well with other decorations.
- */
- overviewRulerColor?: string;
-
- /**
- * Defines the rendering options of the attachment that is inserted before the decorated text
- */
- before?: ThemableDecorationAttachmentRenderOptions;
-
- /**
- * Defines the rendering options of the attachment that is inserted after the decorated text
- */
- after?: ThemableDecorationAttachmentRenderOptions;
- }
-
- export interface ThemableDecorationAttachmentRenderOptions {
- /**
- * Defines a text content that is shown in the attachment. Either an icon or a text can be shown, but not both.
- */
- contentText?: string;
- /**
- * An **absolute path** or an URI to an image to be rendered in the attachment. Either an icon
- * or a text can be shown, but not both.
- */
- contentIconPath?: string | Uri;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- border?: string;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- textDecoration?: string;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- color?: string;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- backgroundColor?: string;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- margin?: string;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- width?: string;
- /**
- * CSS styling property that will be applied to the decoration attachment.
- */
- height?: string;
- }
-
- /**
- * Represents rendering styles for a [text editor decoration](#TextEditorDecorationType).
- */
- export interface DecorationRenderOptions extends ThemableDecorationRenderOptions {
- /**
- * Should the decoration be rendered also on the whitespace after the line text.
- * Defaults to `false`.
- */
- isWholeLine?: boolean;
-
- /**
- * The position in the overview ruler where the decoration should be rendered.
- */
- overviewRulerLane?: OverviewRulerLane;
-
- /**
- * Overwrite options for light themes.
- */
- light?: ThemableDecorationRenderOptions;
-
- /**
- * Overwrite options for dark themes.
- */
- dark?: ThemableDecorationRenderOptions;
- }
-
- /**
- * Represents options for a specific decoration in a [decoration set](#TextEditorDecorationType).
- */
- export interface DecorationOptions {
-
- /**
- * Range to which this decoration is applied. The range must not be empty.
- */
- range: Range;
-
- /**
- * A message that should be rendered when hovering over the decoration.
- */
- hoverMessage?: MarkedString | MarkedString[];
-
- /**
- * Render options applied to the current decoration. For performance reasons, keep the
- * number of decoration specific options small, and use decoration types whereever possible.
- */
- renderOptions?: DecorationInstanceRenderOptions;
- }
-
- export interface ThemableDecorationInstanceRenderOptions {
- /**
- * Defines the rendering options of the attachment that is inserted before the decorated text
- */
- before?: ThemableDecorationAttachmentRenderOptions;
-
- /**
- * Defines the rendering options of the attachment that is inserted after the decorated text
- */
- after?: ThemableDecorationAttachmentRenderOptions;
- }
-
- export interface DecorationInstanceRenderOptions extends ThemableDecorationInstanceRenderOptions {
- /**
- * Overwrite options for light themes.
- */
- light?: ThemableDecorationInstanceRenderOptions;
-
- /**
- * Overwrite options for dark themes.
- */
- dark?: ThemableDecorationInstanceRenderOptions
- }
-
- /**
- * Represents an editor that is attached to a [document](#TextDocument).
- */
- export interface TextEditor {
-
- /**
- * The document associated with this text editor. The document will be the same for the entire lifetime of this text editor.
- */
- document: TextDocument;
-
- /**
- * The primary selection on this text editor. Shorthand for `TextEditor.selections[0]`.
- */
- selection: Selection;
-
- /**
- * The selections in this text editor. The primary selection is always at index 0.
- */
- selections: Selection[];
-
- /**
- * Text editor options.
- */
- options: TextEditorOptions;
-
- /**
- * The column in which this editor shows. Will be `undefined` in case this
- * isn't one of the three main editors, e.g an embedded editor.
- */
- viewColumn?: ViewColumn;
-
- /**
- * Perform an edit on the document associated with this text editor.
- *
- * The given callback-function is invoked with an [edit-builder](#TextEditorEdit) which must
- * be used to make edits. Note that the edit-builder is only valid while the
- * callback executes.
- *
- * @param callback A function which can create edits using an [edit-builder](#TextEditorEdit).
- * @param options The undo/redo behaviour around this edit. By default, undo stops will be created before and after this edit.
- * @return A promise that resolves with a value indicating if the edits could be applied.
- */
- edit(callback: (editBuilder: TextEditorEdit) => void, options?: { undoStopBefore: boolean; undoStopAfter: boolean; }): Thenable;
-
- /**
- * Insert a [snippet](#SnippetString) and put the editor into snippet mode. "Snippet mode"
- * means the editor adds placeholders and additionals cursors so that the user can complete
- * or accept the snippet.
- *
- * @param snippet The snippet to insert in this edit.
- * @param location Position or range at which to insert the snippet, defaults to the current editor selection or selections.
- * @param options The undo/redo behaviour around this edit. By default, undo stops will be created before and after this edit.
- * @return A promise that resolves with a value indicating if the snippet could be inserted. Note that the promise does not signal
- * that the snippet is completely filled-in or accepted.
- */
- insertSnippet(snippet: SnippetString, location?: Position | Range | Position[] | Range[], options?: { undoStopBefore: boolean; undoStopAfter: boolean; }): Thenable;
-
- /**
- * Adds a set of decorations to the text editor. If a set of decorations already exists with
- * the given [decoration type](#TextEditorDecorationType), they will be replaced.
- *
- * @see [createTextEditorDecorationType](#window.createTextEditorDecorationType).
- *
- * @param decorationType A decoration type.
- * @param rangesOrOptions Either [ranges](#Range) or more detailed [options](#DecorationOptions).
- */
- setDecorations(decorationType: TextEditorDecorationType, rangesOrOptions: Range[] | DecorationOptions[]): void;
-
- /**
- * Scroll as indicated by `revealType` in order to reveal the given range.
- *
- * @param range A range.
- * @param revealType The scrolling strategy for revealing `range`.
- */
- revealRange(range: Range, revealType?: TextEditorRevealType): void;
-
- /**
- * Show the text editor.
- *
- * @deprecated **This method is deprecated.** Use [window.showTextDocument](#window.showTextDocument)
- * instead. This method shows unexpected behavior and will be removed in the next major update.
- *
- * @param column The [column](#ViewColumn) in which to show this editor.
- */
- show(column?: ViewColumn): void;
-
- /**
- * Hide the text editor.
- *
- * @deprecated **This method is deprecated.** Use the command 'workbench.action.closeActiveEditor' instead.
- * This method shows unexpected behavior and will be removed in the next major update.
- */
- hide(): void;
- }
-
- /**
- * Represents an end of line character sequence in a [document](#TextDocument).
- */
- export enum EndOfLine {
- /**
- * The line feed `\n` character.
- */
- LF = 1,
- /**
- * The carriage return line feed `\r\n` sequence.
- */
- CRLF = 2
- }
-
- /**
- * A complex edit that will be applied in one transaction on a TextEditor.
- * This holds a description of the edits and if the edits are valid (i.e. no overlapping regions, document was not changed in the meantime, etc.)
- * they can be applied on a [document](#TextDocument) associated with a [text editor](#TextEditor).
- *
- */
- export interface TextEditorEdit {
- /**
- * Replace a certain text region with a new value.
- * You can use \r\n or \n in `value` and they will be normalized to the current [document](#TextDocument).
- *
- * @param location The range this operation should remove.
- * @param value The new text this operation should insert after removing `location`.
- */
- replace(location: Position | Range | Selection, value: string): void;
-
- /**
- * Insert text at a location.
- * You can use \r\n or \n in `value` and they will be normalized to the current [document](#TextDocument).
- * Although the equivalent text edit can be made with [replace](#TextEditorEdit.replace), `insert` will produce a different resulting selection (it will get moved).
- *
- * @param location The position where the new text should be inserted.
- * @param value The new text this operation should insert.
- */
- insert(location: Position, value: string): void;
-
- /**
- * Delete a certain text region.
- *
- * @param location The range this operation should remove.
- */
- delete(location: Range | Selection): void;
-
- /**
- * Set the end of line sequence.
- *
- * @param endOfLine The new end of line for the [document](#TextDocument).
- */
- setEndOfLine(endOfLine: EndOfLine): void;
- }
-
- /**
- * A universal resource identifier representing either a file on disk
- * or another resource, like untitled resources.
- */
- export class Uri {
-
- /**
- * Create an URI from a file system path. The [scheme](#Uri.scheme)
- * will be `file`.
- *
- * @param path A file system or UNC path.
- * @return A new Uri instance.
- */
- static file(path: string): Uri;
-
- /**
- * Create an URI from a string. Will throw if the given value is not
- * valid.
- *
- * @param value The string value of an Uri.
- * @return A new Uri instance.
- */
- static parse(value: string): Uri;
-
- /**
- * Scheme is the `http` part of `http://www.msft.com/some/path?query#fragment`.
- * The part before the first colon.
- */
- readonly scheme: string;
-
- /**
- * Authority is the `www.msft.com` part of `http://www.msft.com/some/path?query#fragment`.
- * The part between the first double slashes and the next slash.
- */
- readonly authority: string;
-
- /**
- * Path is the `/some/path` part of `http://www.msft.com/some/path?query#fragment`.
- */
- readonly path: string;
-
- /**
- * Query is the `query` part of `http://www.msft.com/some/path?query#fragment`.
- */
- readonly query: string;
-
- /**
- * Fragment is the `fragment` part of `http://www.msft.com/some/path?query#fragment`.
- */
- readonly fragment: string;
-
- /**
- * The string representing the corresponding file system path of this Uri.
- *
- * Will handle UNC paths and normalize windows drive letters to lower-case. Also
- * uses the platform specific path separator. Will *not* validate the path for
- * invalid characters and semantics. Will *not* look at the scheme of this Uri.
- */
- readonly fsPath: string;
-
- /**
- * Derive a new Uri from this Uri.
- *
- * ```ts
- * let file = Uri.parse('before:some/file/path');
- * let other = file.with({ scheme: 'after' });
- * assert.ok(other.toString() === 'after:some/file/path');
- * ```
- *
- * @param change An object that describes a change to this Uri. To unset components use `null` or
- * the empty string.
- * @return A new Uri that reflects the given change. Will return `this` Uri if the change
- * is not changing anything.
- */
- with(change: { scheme?: string; authority?: string; path?: string; query?: string; fragment?: string }): Uri;
-
- /**
- * Returns a string representation of this Uri. The representation and normalization
- * of a URI depends on the scheme. The resulting string can be safely used with
- * [Uri.parse](#Uri.parse).
- *
- * @param skipEncoding Do not percentage-encode the result, defaults to `false`. Note that
- * the `#` and `?` characters occuring in the path will always be encoded.
- * @returns A string representation of this Uri.
- */
- toString(skipEncoding?: boolean): string;
-
- /**
- * Returns a JSON representation of this Uri.
- *
- * @return An object.
- */
- toJSON(): any;
- }
-
- /**
- * A cancellation token is passed to an asynchronous or long running
- * operation to request cancellation, like cancelling a request
- * for completion items because the user continued to type.
- *
- * To get an instance of a `CancellationToken` use a
- * [CancellationTokenSource](#CancellationTokenSource).
- */
- export interface CancellationToken {
-
- /**
- * Is `true` when the token has been cancelled, `false` otherwise.
- */
- isCancellationRequested: boolean;
-
- /**
- * An [event](#Event) which fires upon cancellation.
- */
- onCancellationRequested: Event;
- }
-
- /**
- * A cancellation source creates and controls a [cancellation token](#CancellationToken).
- */
- export class CancellationTokenSource {
-
- /**
- * The cancellation token of this source.
- */
- token: CancellationToken;
-
- /**
- * Signal cancellation on the token.
- */
- cancel(): void;
-
- /**
- * Dispose object and free resources. Will call [cancel](#CancellationTokenSource.cancel).
- */
- dispose(): void;
- }
-
- /**
- * Represents a type which can release resources, such
- * as event listening or a timer.
- */
- export class Disposable {
-
- /**
- * Combine many disposable-likes into one. Use this method
- * when having objects with a dispose function which are not
- * instances of Disposable.
- *
- * @param disposableLikes Objects that have at least a `dispose`-function member.
- * @return Returns a new disposable which, upon dispose, will
- * dispose all provided disposables.
- */
- static from(...disposableLikes: { dispose: () => any }[]): Disposable;
-
- /**
- * Creates a new Disposable calling the provided function
- * on dispose.
- * @param callOnDispose Function that disposes something.
- */
- constructor(callOnDispose: Function);
-
- /**
- * Dispose this object.
- */
- dispose(): any;
- }
-
- /**
- * Represents a typed event.
- *
- * A function that represents an event to which you subscribe by calling it with
- * a listener function as argument.
- *
- * @sample `item.onDidChange(function(event) { console.log("Event happened: " + event); });`
- */
- export interface Event {
-
- /**
- * A function that represents an event to which you subscribe by calling it with
- * a listener function as argument.
- *
- * @param listener The listener function will be called when the event happens.
- * @param thisArgs The `this`-argument which will be used when calling the event listener.
- * @param disposables An array to which a [disposable](#Disposable) will be added.
- * @return A disposable which unsubscribes the event listener.
- */
- (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable;
- }
-
- /**
- * An event emitter can be used to create and manage an [event](#Event) for others
- * to subscribe to. One emitter always owns one event.
- *
- * Use this class if you want to provide event from within your extension, for instance
- * inside a [TextDocumentContentProvider](#TextDocumentContentProvider) or when providing
- * API to other extensions.
- */
- export class EventEmitter {
-
- /**
- * The event listeners can subscribe to.
- */
- event: Event;
-
- /**
- * Notify all subscribers of the [event](EventEmitter#event). Failure
- * of one or more listener will not fail this function call.
- *
- * @param data The event object.
- */
- fire(data?: T): void;
-
- /**
- * Dispose this object and free resources.
- */
- dispose(): void;
- }
-
- /**
- * A file system watcher notifies about changes to files and folders
- * on disk.
- *
- * To get an instance of a `FileSystemWatcher` use
- * [createFileSystemWatcher](#workspace.createFileSystemWatcher).
- */
- export interface FileSystemWatcher extends Disposable {
-
- /**
- * true if this file system watcher has been created such that
- * it ignores creation file system events.
- */
- ignoreCreateEvents: boolean;
-
- /**
- * true if this file system watcher has been created such that
- * it ignores change file system events.
- */
- ignoreChangeEvents: boolean;
-
- /**
- * true if this file system watcher has been created such that
- * it ignores delete file system events.
- */
- ignoreDeleteEvents: boolean;
-
- /**
- * An event which fires on file/folder creation.
- */
- onDidCreate: Event;
-
- /**
- * An event which fires on file/folder change.
- */
- onDidChange: Event;
-
- /**
- * An event which fires on file/folder deletion.
- */
- onDidDelete: Event;
- }
-
- /**
- * A text document content provider allows to add readonly documents
- * to the editor, such as source from a dll or generated html from md.
- *
- * Content providers are [registered](#workspace.registerTextDocumentContentProvider)
- * for a [uri-scheme](#Uri.scheme). When a uri with that scheme is to
- * be [loaded](#workspace.openTextDocument) the content provider is
- * asked.
- */
- export interface TextDocumentContentProvider {
-
- /**
- * An event to signal a resource has changed.
- */
- onDidChange?: Event;
-
- /**
- * Provide textual content for a given uri.
- *
- * The editor will use the returned string-content to create a readonly
- * [document](TextDocument). Resources allocated should be released when
- * the corresponding document has been [closed](#workspace.onDidCloseTextDocument).
- *
- * @param uri An uri which scheme matches the scheme this provider was [registered](#workspace.registerTextDocumentContentProvider) for.
- * @param token A cancellation token.
- * @return A string or a thenable that resolves to such.
- */
- provideTextDocumentContent(uri: Uri, token: CancellationToken): ProviderResult;
- }
-
- /**
- * Represents an item that can be selected from
- * a list of items.
- */
- export interface QuickPickItem {
-
- /**
- * A human readable string which is rendered prominent.
- */
- label: string;
-
- /**
- * A human readable string which is rendered less prominent.
- */
- description: string;
-
- /**
- * A human readable string which is rendered less prominent.
- */
- detail?: string;
- }
-
- /**
- * Options to configure the behavior of the quick pick UI.
- */
- export interface QuickPickOptions {
- /**
- * An optional flag to include the description when filtering the picks.
- */
- matchOnDescription?: boolean;
-
- /**
- * An optional flag to include the detail when filtering the picks.
- */
- matchOnDetail?: boolean;
-
- /**
- * An optional string to show as place holder in the input box to guide the user what to pick on.
- */
- placeHolder?: string;
-
- /**
- * Set to `true` to keep the picker open when focus moves to another part of the editor or to another window.
- */
- ignoreFocusOut?: boolean;
-
- /**
- * An optional function that is invoked whenever an item is selected.
- */
- onDidSelectItem?(item: T | string): any;
- }
-
- /**
- * Represents an action that is shown with an information, warning, or
- * error message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- * @see [showWarningMessage](#window.showWarningMessage)
- * @see [showErrorMessage](#window.showErrorMessage)
- */
- export interface MessageItem {
-
- /**
- * A short title like 'Retry', 'Open Log' etc.
- */
- title: string;
-
- /**
- * Indicates that this item replaces the default
- * 'Close' action.
- */
- isCloseAffordance?: boolean;
- }
-
- /**
- * Options to configure the behavior of the message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- * @see [showWarningMessage](#window.showWarningMessage)
- * @see [showErrorMessage](#window.showErrorMessage)
- */
- export interface MessageOptions {
-
- /**
- * Indicates that this message should be modal.
- */
- modal?: boolean;
- }
-
- /**
- * Options to configure the behavior of the input box UI.
- */
- export interface InputBoxOptions {
-
- /**
- * The value to prefill in the input box.
- */
- value?: string;
-
- /**
- * The text to display underneath the input box.
- */
- prompt?: string;
-
- /**
- * An optional string to show as place holder in the input box to guide the user what to type.
- */
- placeHolder?: string;
-
- /**
- * Set to `true` to show a password prompt that will not show the typed value.
- */
- password?: boolean;
-
- /**
- * Set to `true` to keep the input box open when focus moves to another part of the editor or to another window.
- */
- ignoreFocusOut?: boolean;
-
- /**
- * An optional function that will be called to validate input and to give a hint
- * to the user.
- *
- * @param value The current value of the input box.
- * @return A human readable string which is presented as diagnostic message.
- * Return `undefined`, `null`, or the empty string when 'value' is valid.
- */
- validateInput?(value: string): string | undefined | null;
- }
-
- /**
- * A document filter denotes a document by different properties like
- * the [language](#TextDocument.languageId), the [scheme](#Uri.scheme) of
- * its resource, or a glob-pattern that is applied to the [path](#TextDocument.fileName).
- *
- * @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }`
- * @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**∕project.json' }`
- */
- export interface DocumentFilter {
-
- /**
- * A language id, like `typescript`.
- */
- language?: string;
-
- /**
- * A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
- */
- scheme?: string;
-
- /**
- * A glob pattern, like `*.{ts,js}`.
- */
- pattern?: string;
- }
-
- /**
- * A language selector is the combination of one or many language identifiers
- * and [language filters](#DocumentFilter).
- *
- * @sample `let sel:DocumentSelector = 'typescript'`;
- * @sample `let sel:DocumentSelector = ['typescript', { language: 'json', pattern: '**∕tsconfig.json' }]`;
- */
- export type DocumentSelector = string | DocumentFilter | (string | DocumentFilter)[];
-
-
- /**
- * A provider result represents the values a provider, like the [`HoverProvider`](#HoverProvider),
- * may return. For once this is the actual result type `T`, like `Hover`, or a thenable that resolves
- * to that type `T`. In addition, `null` and `undefined` can be returned - either directly or from a
- * thenable.
- *
- * The snippets below are all valid implementions of the [`HoverProvider`](#HoverProvider):
- *
- * ```ts
- * let a: HoverProvider = {
- * provideHover(doc, pos, token): ProviderResult {
- * return new Hover('Hello World');
- * }
- * }
- *
- * let b: HoverProvider = {
- * provideHover(doc, pos, token): ProviderResult {
- * return new Promise(resolve => {
- * resolve(new Hover('Hello World'));
- * });
- * }
- * }
- *
- * let c: HoverProvider = {
- * provideHover(doc, pos, token): ProviderResult {
- * return; // undefined
- * }
- * }
- * ```
- */
- export type ProviderResult = T | undefined | null | Thenable
-
- /**
- * Contains additional diagnostic information about the context in which
- * a [code action](#CodeActionProvider.provideCodeActions) is run.
- */
- export interface CodeActionContext {
-
- /**
- * An array of diagnostics.
- */
- readonly diagnostics: Diagnostic[];
- }
-
- /**
- * The code action interface defines the contract between extensions and
- * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature.
- *
- * A code action can be any command that is [known](#commands.getCommands) to the system.
- */
- export interface CodeActionProvider {
-
- /**
- * Provide commands for the given document and range.
- *
- * @param document The document in which the command was invoked.
- * @param range The range for which the command was invoked.
- * @param context Context carrying additional information.
- * @param token A cancellation token.
- * @return An array of commands or a thenable of such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): ProviderResult;
- }
-
- /**
- * A code lens represents a [command](#Command) that should be shown along with
- * source text, like the number of references, a way to run tests, etc.
- *
- * A code lens is _unresolved_ when no command is associated to it. For performance
- * reasons the creation of a code lens and resolving should be done to two stages.
- *
- * @see [CodeLensProvider.provideCodeLenses](#CodeLensProvider.provideCodeLenses)
- * @see [CodeLensProvider.resolveCodeLens](#CodeLensProvider.resolveCodeLens)
- */
- export class CodeLens {
-
- /**
- * The range in which this code lens is valid. Should only span a single line.
- */
- range: Range;
-
- /**
- * The command this code lens represents.
- */
- command?: Command;
-
- /**
- * `true` when there is a command associated.
- */
- readonly isResolved: boolean;
-
- /**
- * Creates a new code lens object.
- *
- * @param range The range to which this code lens applies.
- * @param command The command associated to this code lens.
- */
- constructor(range: Range, command?: Command);
- }
-
- /**
- * A code lens provider adds [commands](#Command) to source text. The commands will be shown
- * as dedicated horizontal lines in between the source text.
- */
- export interface CodeLensProvider {
-
- /**
- * An optional event to signal that the code lenses from this provider have changed.
- */
- onDidChangeCodeLenses?: Event;
-
- /**
- * Compute a list of [lenses](#CodeLens). This call should return as fast as possible and if
- * computing the commands is expensive implementors should only return code lens objects with the
- * range set and implement [resolve](#CodeLensProvider.resolveCodeLens).
- *
- * @param document The document in which the command was invoked.
- * @param token A cancellation token.
- * @return An array of code lenses or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult;
-
- /**
- * This function will be called for each visible code lens, usually when scrolling and after
- * calls to [compute](#CodeLensProvider.provideCodeLenses)-lenses.
- *
- * @param codeLens code lens that must be resolved.
- * @param token A cancellation token.
- * @return The given, resolved code lens or thenable that resolves to such.
- */
- resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): ProviderResult;
- }
-
- /**
- * The definition of a symbol represented as one or many [locations](#Location).
- * For most programming languages there is only one location at which a symbol is
- * defined.
- */
- export type Definition = Location | Location[];
-
- /**
- * The definition provider interface defines the contract between extensions and
- * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
- * and peek definition features.
- */
- export interface DefinitionProvider {
-
- /**
- * Provide the definition of the symbol at the given position and document.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return A definition or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined` or `null`.
- */
- provideDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
- }
-
- /**
- * The implemenetation provider interface defines the contract between extensions and
- * the go to implementation feature.
- */
- export interface ImplementationProvider {
-
- /**
- * Provide the implementations of the symbol at the given position and document.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return A definition or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined` or `null`.
- */
- provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
- }
-
- /**
- * The type definition provider defines the contract between extensions and
- * the go to type definition feature.
- */
- export interface TypeDefinitionProvider {
-
- /**
- * Provide the type definition of the symbol at the given position and document.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return A definition or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined` or `null`.
- */
- provideTypeDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
- }
-
- /**
- * MarkedString can be used to render human readable text. It is either a markdown string
- * or a code-block that provides a language and a code snippet. Note that
- * markdown strings will be sanitized - that means html will be escaped.
- */
- export type MarkedString = string | { language: string; value: string };
-
- /**
- * A hover represents additional information for a symbol or word. Hovers are
- * rendered in a tooltip-like widget.
- */
- export class Hover {
-
- /**
- * The contents of this hover.
- */
- contents: MarkedString[];
-
- /**
- * The range to which this hover applies. When missing, the
- * editor will use the range at the current position or the
- * current position itself.
- */
- range?: Range;
-
- /**
- * Creates a new hover object.
- *
- * @param contents The contents of the hover.
- * @param range The range to which the hover applies.
- */
- constructor(contents: MarkedString | MarkedString[], range?: Range);
- }
-
- /**
- * The hover provider interface defines the contract between extensions and
- * the [hover](https://code.visualstudio.com/docs/editor/editingevolved#_hover)-feature.
- */
- export interface HoverProvider {
-
- /**
- * Provide a hover for the given position and document. Multiple hovers at the same
- * position will be merged by the editor. A hover can have a range which defaults
- * to the word range at the position when omitted.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return A hover or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined` or `null`.
- */
- provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
- }
-
- /**
- * A document highlight kind.
- */
- export enum DocumentHighlightKind {
-
- /**
- * A textual occurrence.
- */
- Text = 0,
-
- /**
- * Read-access of a symbol, like reading a variable.
- */
- Read = 1,
-
- /**
- * Write-access of a symbol, like writing to a variable.
- */
- Write = 2
- }
-
- /**
- * A document highlight is a range inside a text document which deserves
- * special attention. Usually a document highlight is visualized by changing
- * the background color of its range.
- */
- export class DocumentHighlight {
-
- /**
- * The range this highlight applies to.
- */
- range: Range;
-
- /**
- * The highlight kind, default is [text](#DocumentHighlightKind.Text).
- */
- kind?: DocumentHighlightKind;
-
- /**
- * Creates a new document highlight object.
- *
- * @param range The range the highlight applies to.
- * @param kind The highlight kind, default is [text](#DocumentHighlightKind.Text).
- */
- constructor(range: Range, kind?: DocumentHighlightKind);
- }
-
- /**
- * The document highlight provider interface defines the contract between extensions and
- * the word-highlight-feature.
- */
- export interface DocumentHighlightProvider {
-
- /**
- * Provide a set of document highlights, like all occurrences of a variable or
- * all exit-points of a function.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideDocumentHighlights(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
- }
-
- /**
- * A symbol kind.
- */
- export enum SymbolKind {
- File = 0,
- Module = 1,
- Namespace = 2,
- Package = 3,
- Class = 4,
- Method = 5,
- Property = 6,
- Field = 7,
- Constructor = 8,
- Enum = 9,
- Interface = 10,
- Function = 11,
- Variable = 12,
- Constant = 13,
- String = 14,
- Number = 15,
- Boolean = 16,
- Array = 17,
- Object = 18,
- Key = 19,
- Null = 20
- }
-
- /**
- * Represents information about programming constructs like variables, classes,
- * interfaces etc.
- */
- export class SymbolInformation {
-
- /**
- * The name of this symbol.
- */
- name: string;
-
- /**
- * The name of the symbol containing this symbol.
- */
- containerName: string;
-
- /**
- * The kind of this symbol.
- */
- kind: SymbolKind;
-
- /**
- * The location of this symbol.
- */
- location: Location;
-
- /**
- * Creates a new symbol information object.
- *
- * @param name The name of the symbol.
- * @param kind The kind of the symbol.
- * @param containerName The name of the symbol containing the symbol.
- * @param location The the location of the symbol.
- */
- constructor(name: string, kind: SymbolKind, containerName: string, location: Location);
-
- /**
- * @deprecated Please use the constructor taking a [location](#Location) object.
- *
- * Creates a new symbol information object.
- *
- * @param name The name of the symbol.
- * @param kind The kind of the symbol.
- * @param range The range of the location of the symbol.
- * @param uri The resource of the location of symbol, defaults to the current document.
- * @param containerName The name of the symbol containing the symbol.
- */
- constructor(name: string, kind: SymbolKind, range: Range, uri?: Uri, containerName?: string);
- }
-
- /**
- * The document symbol provider interface defines the contract between extensions and
- * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature.
- */
- export interface DocumentSymbolProvider {
-
- /**
- * Provide symbol information for the given document.
- *
- * @param document The document in which the command was invoked.
- * @param token A cancellation token.
- * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult;
- }
-
- /**
- * The workspace symbol provider interface defines the contract between extensions and
- * the [symbol search](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name)-feature.
- */
- export interface WorkspaceSymbolProvider {
-
- /**
- * Project-wide search for a symbol matching the given query string. It is up to the provider
- * how to search given the query string, like substring, indexOf etc. To improve performance implementors can
- * skip the [location](#SymbolInformation.location) of symbols and implement `resolveWorkspaceSymbol` to do that
- * later.
- *
- * @param query A non-empty query string.
- * @param token A cancellation token.
- * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideWorkspaceSymbols(query: string, token: CancellationToken): ProviderResult;
-
- /**
- * Given a symbol fill in its [location](#SymbolInformation.location). This method is called whenever a symbol
- * is selected in the UI. Providers can implement this method and return incomplete symbols from
- * [`provideWorkspaceSymbols`](#WorkspaceSymbolProvider.provideWorkspaceSymbols) which often helps to improve
- * performance.
- *
- * @param symbol The symbol that is to be resolved. Guaranteed to be an instance of an object returned from an
- * earlier call to `provideWorkspaceSymbols`.
- * @param token A cancellation token.
- * @return The resolved symbol or a thenable that resolves to that. When no result is returned,
- * the given `symbol` is used.
- */
- resolveWorkspaceSymbol?(symbol: SymbolInformation, token: CancellationToken): ProviderResult;
- }
-
- /**
- * Value-object that contains additional information when
- * requesting references.
- */
- export interface ReferenceContext {
-
- /**
- * Include the declaration of the current symbol.
- */
- includeDeclaration: boolean;
- }
-
- /**
- * The reference provider interface defines the contract between extensions and
- * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature.
- */
- export interface ReferenceProvider {
-
- /**
- * Provide a set of project-wide references for the given position and document.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param context
- * @param token A cancellation token.
- * @return An array of locations or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult;
- }
-
- /**
- * A text edit represents edits that should be applied
- * to a document.
- */
- export class TextEdit {
-
- /**
- * Utility to create a replace edit.
- *
- * @param range A range.
- * @param newText A string.
- * @return A new text edit object.
- */
- static replace(range: Range, newText: string): TextEdit;
-
- /**
- * Utility to create an insert edit.
- *
- * @param position A position, will become an empty range.
- * @param newText A string.
- * @return A new text edit object.
- */
- static insert(position: Position, newText: string): TextEdit;
-
- /**
- * Utility to create a delete edit.
- *
- * @param range A range.
- * @return A new text edit object.
- */
- static delete(range: Range): TextEdit;
-
- /**
- * The range this edit applies to.
- */
- range: Range;
-
- /**
- * The string this edit will insert.
- */
- newText: string;
-
- /**
- * Create a new TextEdit.
- *
- * @param range A range.
- * @param newText A string.
- */
- constructor(range: Range, newText: string);
- }
-
- /**
- * A workspace edit represents textual changes for many documents.
- */
- export class WorkspaceEdit {
-
- /**
- * The number of affected resources.
- */
- readonly size: number;
-
- /**
- * Replace the given range with given text for the given resource.
- *
- * @param uri A resource identifier.
- * @param range A range.
- * @param newText A string.
- */
- replace(uri: Uri, range: Range, newText: string): void;
-
- /**
- * Insert the given text at the given position.
- *
- * @param uri A resource identifier.
- * @param position A position.
- * @param newText A string.
- */
- insert(uri: Uri, position: Position, newText: string): void;
-
- /**
- * Delete the text at the given range.
- *
- * @param uri A resource identifier.
- * @param range A range.
- */
- delete(uri: Uri, range: Range): void;
-
- /**
- * Check if this edit affects the given resource.
- * @param uri A resource identifier.
- * @return `true` if the given resource will be touched by this edit.
- */
- has(uri: Uri): boolean;
-
- /**
- * Set (and replace) text edits for a resource.
- *
- * @param uri A resource identifier.
- * @param edits An array of text edits.
- */
- set(uri: Uri, edits: TextEdit[]): void;
-
- /**
- * Get the text edits for a resource.
- *
- * @param uri A resource identifier.
- * @return An array of text edits.
- */
- get(uri: Uri): TextEdit[];
-
- /**
- * Get all text edits grouped by resource.
- *
- * @return An array of `[Uri, TextEdit[]]`-tuples.
- */
- entries(): [Uri, TextEdit[]][];
- }
-
- /**
- * A snippet string is a template which allows to insert text
- * and to control the editor cursor when insertion happens.
- *
- * A snippet can define tab stops and placeholders with `$1`, `$2`
- * and `${3:foo}`. `$0` defines the final tab stop, it defaults to
- * the end of the snippet. Variables are defined with `$name` and
- * `${name:default value}`. The full snippet syntax is documented
- * [here](http://code.visualstudio.com/docs/customization/userdefinedsnippets#_creating-your-own-snippets).
- */
- export class SnippetString {
-
- /**
- * The snippet string.
- */
- value: string;
-
- constructor(value?: string);
-
- /**
- * Builder-function that appends the given string to
- * the [`value`](#SnippetString.value) of this snippet string.
- *
- * @param string A value to append 'as given'. The string will be escaped.
- * @return This snippet string.
- */
- appendText(string: string): SnippetString;
-
- /**
- * Builder-function that appends a tabstop (`$1`, `$2` etc) to
- * the [`value`](#SnippetString.value) of this snippet string.
- *
- * @param number The number of this tabstop, defaults to an auto-incremet
- * value starting at 1.
- * @return This snippet string.
- */
- appendTabstop(number?: number): SnippetString;
-
- /**
- * Builder-function that appends a placeholder (`${1:value}`) to
- * the [`value`](#SnippetString.value) of this snippet string.
- *
- * @param value The value of this placeholder - either a string or a function
- * with which a nested snippet can be created.
- * @param number The number of this tabstop, defaults to an auto-incremet
- * value starting at 1.
- * @return This snippet string.
- */
- appendPlaceholder(value: string | ((snippet: SnippetString) => any), number?: number): SnippetString;
-
- /**
- * Builder-function that appends a variable (`${VAR}`) to
- * the [`value`](#SnippetString.value) of this snippet string.
- *
- * @param name The name of the variable - excluding the `$`.
- * @param defaultValue The default value which is used when the variable name cannot
- * be resolved - either a string or a function with which a nested snippet can be created.
- * @return This snippet string.
- */
- appendVariable(name: string, defaultValue: string | ((snippet: SnippetString) => any)): SnippetString;
- }
-
- /**
- * The rename provider interface defines the contract between extensions and
- * the [rename](https://code.visualstudio.com/docs/editor/editingevolved#_rename-symbol)-feature.
- */
- export interface RenameProvider {
-
- /**
- * Provide an edit that describes changes that have to be made to one
- * or many resources to rename a symbol to a different name.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param newName The new name of the symbol. If the given name is not valid, the provider must return a rejected promise.
- * @param token A cancellation token.
- * @return A workspace edit or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined` or `null`.
- */
- provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): ProviderResult;
- }
-
- /**
- * Value-object describing what options formatting should use.
- */
- export interface FormattingOptions {
-
- /**
- * Size of a tab in spaces.
- */
- tabSize: number;
-
- /**
- * Prefer spaces over tabs.
- */
- insertSpaces: boolean;
-
- /**
- * Signature for further properties.
- */
- [key: string]: boolean | number | string;
- }
-
- /**
- * The document formatting provider interface defines the contract between extensions and
- * the formatting-feature.
- */
- export interface DocumentFormattingEditProvider {
-
- /**
- * Provide formatting edits for a whole document.
- *
- * @param document The document in which the command was invoked.
- * @param options Options controlling formatting.
- * @param token A cancellation token.
- * @return A set of text edits or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideDocumentFormattingEdits(document: TextDocument, options: FormattingOptions, token: CancellationToken): ProviderResult;
- }
-
- /**
- * The document formatting provider interface defines the contract between extensions and
- * the formatting-feature.
- */
- export interface DocumentRangeFormattingEditProvider {
-
- /**
- * Provide formatting edits for a range in a document.
- *
- * The given range is a hint and providers can decide to format a smaller
- * or larger range. Often this is done by adjusting the start and end
- * of the range to full syntax nodes.
- *
- * @param document The document in which the command was invoked.
- * @param range The range which should be formatted.
- * @param options Options controlling formatting.
- * @param token A cancellation token.
- * @return A set of text edits or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult;
- }
-
- /**
- * The document formatting provider interface defines the contract between extensions and
- * the formatting-feature.
- */
- export interface OnTypeFormattingEditProvider {
-
- /**
- * Provide formatting edits after a character has been typed.
- *
- * The given position and character should hint to the provider
- * what range the position to expand to, like find the matching `{`
- * when `}` has been entered.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param ch The character that has been typed.
- * @param options Options controlling formatting.
- * @param token A cancellation token.
- * @return A set of text edits or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined`, `null`, or an empty array.
- */
- provideOnTypeFormattingEdits(document: TextDocument, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult;
- }
-
- /**
- * Represents a parameter of a callable-signature. A parameter can
- * have a label and a doc-comment.
- */
- export class ParameterInformation {
-
- /**
- * The label of this signature. Will be shown in
- * the UI.
- */
- label: string;
-
- /**
- * The human-readable doc-comment of this signature. Will be shown
- * in the UI but can be omitted.
- */
- documentation?: string;
-
- /**
- * Creates a new parameter information object.
- *
- * @param label A label string.
- * @param documentation A doc string.
- */
- constructor(label: string, documentation?: string);
- }
-
- /**
- * Represents the signature of something callable. A signature
- * can have a label, like a function-name, a doc-comment, and
- * a set of parameters.
- */
- export class SignatureInformation {
-
- /**
- * The label of this signature. Will be shown in
- * the UI.
- */
- label: string;
-
- /**
- * The human-readable doc-comment of this signature. Will be shown
- * in the UI but can be omitted.
- */
- documentation?: string;
-
- /**
- * The parameters of this signature.
- */
- parameters: ParameterInformation[];
-
- /**
- * Creates a new signature information object.
- *
- * @param label A label string.
- * @param documentation A doc string.
- */
- constructor(label: string, documentation?: string);
- }
-
- /**
- * Signature help represents the signature of something
- * callable. There can be multiple signatures but only one
- * active and only one active parameter.
- */
- export class SignatureHelp {
-
- /**
- * One or more signatures.
- */
- signatures: SignatureInformation[];
-
- /**
- * The active signature.
- */
- activeSignature: number;
-
- /**
- * The active parameter of the active signature.
- */
- activeParameter: number;
- }
-
- /**
- * The signature help provider interface defines the contract between extensions and
- * the [parameter hints](https://code.visualstudio.com/docs/editor/editingevolved#_parameter-hints)-feature.
- */
- export interface SignatureHelpProvider {
-
- /**
- * Provide help for the signature at the given position and document.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return Signature help or a thenable that resolves to such. The lack of a result can be
- * signaled by returning `undefined` or `null`.
- */
- provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
- }
-
- /**
- * Completion item kinds.
- */
- export enum CompletionItemKind {
- Text = 0,
- Method = 1,
- Function = 2,
- Constructor = 3,
- Field = 4,
- Variable = 5,
- Class = 6,
- Interface = 7,
- Module = 8,
- Property = 9,
- Unit = 10,
- Value = 11,
- Enum = 12,
- Keyword = 13,
- Snippet = 14,
- Color = 15,
- File = 16,
- Reference = 17,
- Folder = 18
- }
-
- /**
- * A completion item represents a text snippet that is proposed to complete text that is being typed.
- *
- * It is suffient to create a completion item from just a [label](#CompletionItem.label). In that
- * case the completion item will replace the [word](#TextDocument.getWordRangeAtPosition)
- * until the cursor with the given label or [insertText](#CompletionItem.insertText). Otherwise the
- * the given [edit](#CompletionItem.textEdit) is used.
- *
- * When selecting a completion item in the editor its defined or synthesized text edit will be applied
- * to *all* cursors/selections whereas [additionalTextEdits](CompletionItem.additionalTextEdits) will be
- * applied as provided.
- *
- * @see [CompletionItemProvider.provideCompletionItems](#CompletionItemProvider.provideCompletionItems)
- * @see [CompletionItemProvider.resolveCompletionItem](#CompletionItemProvider.resolveCompletionItem)
- */
- export class CompletionItem {
-
- /**
- * The label of this completion item. By default
- * this is also the text that is inserted when selecting
- * this completion.
- */
- label: string;
-
- /**
- * The kind of this completion item. Based on the kind
- * an icon is chosen by the editor.
- */
- kind?: CompletionItemKind;
-
- /**
- * A human-readable string with additional information
- * about this item, like type or symbol information.
- */
- detail?: string;
-
- /**
- * A human-readable string that represents a doc-comment.
- */
- documentation?: string;
-
- /**
- * A string that should be used when comparing this item
- * with other items. When `falsy` the [label](#CompletionItem.label)
- * is used.
- */
- sortText?: string;
-
- /**
- * A string that should be used when filtering a set of
- * completion items. When `falsy` the [label](#CompletionItem.label)
- * is used.
- */
- filterText?: string;
-
- /**
- * A string or snippet that should be inserted in a document when selecting
- * this completion. When `falsy` the [label](#CompletionItem.label)
- * is used.
- */
- insertText?: string | SnippetString;
-
- /**
- * A range of text that should be replaced by this completion item.
- *
- * Defaults to a range from the start of the [current word](#TextDocument.getWordRangeAtPosition) to the
- * current position.
- *
- * *Note:* The range must be a [single line](#Range.isSingleLine) and it must
- * [contain](#Range.contains) the position at which completion has been [requested](#CompletionItemProvider.provideCompletionItems).
- */
- range?: Range;
-
- /**
- * An optional set of characters that when pressed while this completion is active will accept it first and
- * then type that character. *Note* that all commit characters should have `length=1` and that superfluous
- * characters will be ignored.
- */
- commitCharacters?: string[];
-
- /**
- * @deprecated **Deprecated** in favor of `CompletionItem.insertText` and `CompletionItem.range`.
- *
- * ~~An [edit](#TextEdit) which is applied to a document when selecting
- * this completion. When an edit is provided the value of
- * [insertText](#CompletionItem.insertText) is ignored.~~
- *
- * ~~The [range](#Range) of the edit must be single-line and on the same
- * line completions were [requested](#CompletionItemProvider.provideCompletionItems) at.~~
- */
- textEdit?: TextEdit;
-
- /**
- * An optional array of additional [text edits](#TextEdit) that are applied when
- * selecting this completion. Edits must not overlap with the main [edit](#CompletionItem.textEdit)
- * nor with themselves.
- */
- additionalTextEdits?: TextEdit[];
-
- /**
- * An optional [command](#Command) that is executed *after* inserting this completion. *Note* that
- * additional modifications to the current document should be described with the
- * [additionalTextEdits](#CompletionItem.additionalTextEdits)-property.
- */
- command?: Command;
-
- /**
- * Creates a new completion item.
- *
- * Completion items must have at least a [label](#CompletionItem.label) which then
- * will be used as insert text as well as for sorting and filtering.
- *
- * @param label The label of the completion.
- * @param kind The [kind](#CompletionItemKind) of the completion.
- */
- constructor(label: string, kind?: CompletionItemKind);
- }
-
- /**
- * Represents a collection of [completion items](#CompletionItem) to be presented
- * in the editor.
- */
- export class CompletionList {
-
- /**
- * This list it not complete. Further typing should result in recomputing
- * this list.
- */
- isIncomplete?: boolean;
-
- /**
- * The completion items.
- */
- items: CompletionItem[];
-
- /**
- * Creates a new completion list.
- *
- * @param items The completion items.
- * @param isIncomplete The list is not complete.
- */
- constructor(items?: CompletionItem[], isIncomplete?: boolean);
- }
-
- /**
- * The completion item provider interface defines the contract between extensions and
- * [IntelliSense](https://code.visualstudio.com/docs/editor/editingevolved#_intellisense).
- *
- * When computing *complete* completion items is expensive, providers can optionally implement
- * the `resolveCompletionItem`-function. In that case it is enough to return completion
- * items with a [label](#CompletionItem.label) from the
- * [provideCompletionItems](#CompletionItemProvider.provideCompletionItems)-function. Subsequently,
- * when a completion item is shown in the UI and gains focus this provider is asked to resolve
- * the item, like adding [doc-comment](#CompletionItem.documentation) or [details](#CompletionItem.detail).
- *
- * Providers are asked for completions either explicitly by a user gesture or -depending on the configuration-
- * implicitly when typing words or trigger characters.
- */
- export interface CompletionItemProvider {
-
- /**
- * Provide completion items for the given position and document.
- *
- * @param document The document in which the command was invoked.
- * @param position The position at which the command was invoked.
- * @param token A cancellation token.
- * @return An array of completions, a [completion list](#CompletionList), or a thenable that resolves to either.
- * The lack of a result can be signaled by returning `undefined`, `null`, or an empty array.
- */
- provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): ProviderResult;
-
- /**
- * Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation)
- * or [details](#CompletionItem.detail).
- *
- * The editor will only resolve a completion item once.
- *
- * @param item A completion item currently active in the UI.
- * @param token A cancellation token.
- * @return The resolved completion item or a thenable that resolves to of such. It is OK to return the given
- * `item`. When no result is returned, the given `item` will be used.
- */
- resolveCompletionItem?(item: CompletionItem, token: CancellationToken): ProviderResult;
- }
-
-
- /**
- * A document link is a range in a text document that links to an internal or external resource, like another
- * text document or a web site.
- */
- export class DocumentLink {
-
- /**
- * The range this link applies to.
- */
- range: Range;
-
- /**
- * The uri this link points to.
- */
- target?: Uri;
-
- /**
- * Creates a new document link.
- *
- * @param range The range the document link applies to. Must not be empty.
- * @param target The uri the document link points to.
- */
- constructor(range: Range, target?: Uri);
- }
-
- /**
- * The document link provider defines the contract between extensions and feature of showing
- * links in the editor.
- */
- export interface DocumentLinkProvider {
-
- /**
- * Provide links for the given document. Note that the editor ships with a default provider that detects
- * `http(s)` and `file` links.
- *
- * @param document The document in which the command was invoked.
- * @param token A cancellation token.
- * @return An array of [document links](#DocumentLink) or a thenable that resolves to such. The lack of a result
- * can be signaled by returning `undefined`, `null`, or an empty array.
- */
- provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult;
-
- /**
- * Given a link fill in its [target](#DocumentLink.target). This method is called when an incomplete
- * link is selected in the UI. Providers can implement this method and return incomple links
- * (without target) from the [`provideDocumentLinks`](#DocumentLinkProvider.provideDocumentLinks) method which
- * often helps to improve performance.
- *
- * @param link The link that is to be resolved.
- * @param token A cancellation token.
- */
- resolveDocumentLink?(link: DocumentLink, token: CancellationToken): ProviderResult;
- }
-
- /**
- * A tuple of two characters, like a pair of
- * opening and closing brackets.
- */
- export type CharacterPair = [string, string];
-
- /**
- * Describes how comments for a language work.
- */
- export interface CommentRule {
-
- /**
- * The line comment token, like `// this is a comment`
- */
- lineComment?: string;
-
- /**
- * The block comment character pair, like `/* block comment */`
- */
- blockComment?: CharacterPair;
- }
-
- /**
- * Describes indentation rules for a language.
- */
- export interface IndentationRule {
- /**
- * If a line matches this pattern, then all the lines after it should be unindendented once (until another rule matches).
- */
- decreaseIndentPattern: RegExp;
- /**
- * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).
- */
- increaseIndentPattern: RegExp;
- /**
- * If a line matches this pattern, then **only the next line** after it should be indented once.
- */
- indentNextLinePattern?: RegExp;
- /**
- * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.
- */
- unIndentedLinePattern?: RegExp;
- }
-
- /**
- * Describes what to do with the indentation when pressing Enter.
- */
- export enum IndentAction {
- /**
- * Insert new line and copy the previous line's indentation.
- */
- None = 0,
- /**
- * Insert new line and indent once (relative to the previous line's indentation).
- */
- Indent = 1,
- /**
- * Insert two new lines:
- * - the first one indented which will hold the cursor
- * - the second one at the same indentation level
- */
- IndentOutdent = 2,
- /**
- * Insert new line and outdent once (relative to the previous line's indentation).
- */
- Outdent = 3
- }
-
- /**
- * Describes what to do when pressing Enter.
- */
- export interface EnterAction {
- /**
- * Describe what to do with the indentation.
- */
- indentAction: IndentAction;
- /**
- * Describes text to be appended after the new line and after the indentation.
- */
- appendText?: string;
- /**
- * Describes the number of characters to remove from the new line's indentation.
- */
- removeText?: number;
- }
-
- /**
- * Describes a rule to be evaluated when pressing Enter.
- */
- export interface OnEnterRule {
- /**
- * This rule will only execute if the text before the cursor matches this regular expression.
- */
- beforeText: RegExp;
- /**
- * This rule will only execute if the text after the cursor matches this regular expression.
- */
- afterText?: RegExp;
- /**
- * The action to execute.
- */
- action: EnterAction;
- }
-
- /**
- * The language configuration interfaces defines the contract between extensions
- * and various editor features, like automatic bracket insertion, automatic indentation etc.
- */
- export interface LanguageConfiguration {
- /**
- * The language's comment settings.
- */
- comments?: CommentRule;
- /**
- * The language's brackets.
- * This configuration implicitly affects pressing Enter around these brackets.
- */
- brackets?: CharacterPair[];
- /**
- * The language's word definition.
- * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable
- * to provide a word definition that uses exclusion of known separators.
- * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number):
- * /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g
- */
- wordPattern?: RegExp;
- /**
- * The language's indentation settings.
- */
- indentationRules?: IndentationRule;
- /**
- * The language's rules to be evaluated when pressing Enter.
- */
- onEnterRules?: OnEnterRule[];
-
- /**
- * **Deprecated** Do not use.
- *
- * @deprecated Will be replaced by a better API soon.
- */
- __electricCharacterSupport?: {
- /**
- * This property is deprecated and will be **ignored** from
- * the editor.
- * @deprecated
- */
- brackets?: any;
- /**
- * This property is deprecated and not fully supported anymore by
- * the editor (scope and lineStart are ignored).
- * Use the the autoClosingPairs property in the language configuration file instead.
- * @deprecated
- */
- docComment?: {
- scope: string;
- open: string;
- lineStart: string;
- close?: string;
- };
- };
-
- /**
- * **Deprecated** Do not use.
- *
- * @deprecated * Use the the autoClosingPairs property in the language configuration file instead.
- */
- __characterPairSupport?: {
- autoClosingPairs: {
- open: string;
- close: string;
- notIn?: string[];
- }[];
- };
- }
-
- /**
- * Represents the workspace configuration.
- *
- * The workspace configuration is a merged view: Configurations of the current [workspace](#workspace.rootPath)
- * (if available), files like `launch.json`, and the installation-wide configuration. Workspace specific values
- * shadow installation-wide values.
- *
- * *Note:* The merged configuration of the current [workspace](#workspace.rootPath)
- * also contains settings from files like `launch.json` and `tasks.json`. Their basename will be
- * part of the section identifier. The following snippets shows how to retrieve all configurations
- * from `launch.json`:
- *
- * ```ts
- * // launch.json configuration
- * const config = workspace.getConfiguration('launch');
- *
- * // retrieve values
- * const values = config.get('configurations');
- * ```
- */
- export interface WorkspaceConfiguration {
-
- /**
- * Return a value from this configuration.
- *
- * @param section Configuration name, supports _dotted_ names.
- * @return The value `section` denotes or `undefined`.
- */
- get(section: string): T | undefined;
-
- /**
- * Return a value from this configuration.
- *
- * @param section Configuration name, supports _dotted_ names.
- * @param defaultValue A value should be returned when no value could be found, is `undefined`.
- * @return The value `section` denotes or the default.
- */
- get(section: string, defaultValue: T): T;
-
-
- /**
- * Check if this configuration has a certain value.
- *
- * @param section Configuration name, supports _dotted_ names.
- * @return `true` if the section doesn't resolve to `undefined`.
- */
- has(section: string): boolean;
-
- /**
- * Retrieve all information about a configuration setting. A configuration value
- * often consists of a *default* value, a global or installation-wide value, and
- * a workspace-specific value. The *effective* value (returned by [`get`](#WorkspaceConfiguration.get))
- * is computed like this: `defaultValue` overwritten by `globalValue`,
- * `globalValue` overwritten by `workspaceValue`.
- *
- * *Note:* The configuration name must denote a leaf in the configuration tree
- * (`editor.fontSize` vs `editor`) otherwise no result is returned.
- *
- * @param section Configuration name, supports _dotted_ names.
- * @return Information about a configuration setting or `undefined`.
- */
- inspect(section: string): { key: string; defaultValue?: T; globalValue?: T; workspaceValue?: T } | undefined;
-
- /**
- * Update a configuration value. A value can be changed for the current
- * [workspace](#workspace.rootPath) only, or globally for all instances of the
- * editor. The updated configuration values are persisted.
- *
- * *Note 1:* Setting an installation-wide value (`global: true`) in the presence of
- * a more specific workspace value has no observable effect in that workspace, but
- * in others.
- *
- * *Note 2:* To remove a configuration value use `undefined`, like so: `config.update('somekey', undefined)`
- *
- * @param section Configuration name, supports _dotted_ names.
- * @param value The new value.
- * @param global When `true` changes the configuration value for all instances of the editor.
- */
- update(section: string, value: any, global?: boolean): Thenable;
-
- /**
- * Readable dictionary that backs this configuration.
- */
- readonly [key: string]: any;
- }
-
- /**
- * Represents a location inside a resource, such as a line
- * inside a text file.
- */
- export class Location {
-
- /**
- * The resource identifier of this location.
- */
- uri: Uri;
-
- /**
- * The document range of this locations.
- */
- range: Range;
-
- /**
- * Creates a new location object.
- *
- * @param uri The resource identifier.
- * @param rangeOrPosition The range or position. Positions will be converted to an empty range.
- */
- constructor(uri: Uri, rangeOrPosition: Range | Position);
- }
-
- /**
- * Represents the severity of diagnostics.
- */
- export enum DiagnosticSeverity {
-
- /**
- * Something not allowed by the rules of a language or other means.
- */
- Error = 0,
-
- /**
- * Something suspicious but allowed.
- */
- Warning = 1,
-
- /**
- * Something to inform about but not a problem.
- */
- Information = 2,
-
- /**
- * Something to hint to a better way of doing it, like proposing
- * a refactoring.
- */
- Hint = 3
- }
-
- /**
- * Represents a diagnostic, such as a compiler error or warning. Diagnostic objects
- * are only valid in the scope of a file.
- */
- export class Diagnostic {
-
- /**
- * The range to which this diagnostic applies.
- */
- range: Range;
-
- /**
- * The human-readable message.
- */
- message: string;
-
- /**
- * A human-readable string describing the source of this
- * diagnostic, e.g. 'typescript' or 'super lint'.
- */
- source: string;
-
- /**
- * The severity, default is [error](#DiagnosticSeverity.Error).
- */
- severity: DiagnosticSeverity;
-
- /**
- * A code or identifier for this diagnostics. Will not be surfaced
- * to the user, but should be used for later processing, e.g. when
- * providing [code actions](#CodeActionContext).
- */
- code: string | number;
-
- /**
- * Creates a new diagnostic object.
- *
- * @param range The range to which this diagnostic applies.
- * @param message The human-readable message.
- * @param severity The severity, default is [error](#DiagnosticSeverity.Error).
- */
- constructor(range: Range, message: string, severity?: DiagnosticSeverity);
- }
-
- /**
- * A diagnostics collection is a container that manages a set of
- * [diagnostics](#Diagnostic). Diagnostics are always scopes to a
- * diagnostics collection and a resource.
- *
- * To get an instance of a `DiagnosticCollection` use
- * [createDiagnosticCollection](#languages.createDiagnosticCollection).
- */
- export interface DiagnosticCollection {
-
- /**
- * The name of this diagnostic collection, for instance `typescript`. Every diagnostic
- * from this collection will be associated with this name. Also, the task framework uses this
- * name when defining [problem matchers](https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher).
- */
- readonly name: string;
-
- /**
- * Assign diagnostics for given resource. Will replace
- * existing diagnostics for that resource.
- *
- * @param uri A resource identifier.
- * @param diagnostics Array of diagnostics or `undefined`
- */
- set(uri: Uri, diagnostics: Diagnostic[] | undefined): void;
-
- /**
- * Replace all entries in this collection.
- *
- * Diagnostics of multiple tuples of the same uri will be merged, e.g
- * `[[file1, [d1]], [file1, [d2]]]` is equivalent to `[[file1, [d1, d2]]]`.
- * If a diagnostics item is `undefined` as in `[file1, undefined]`
- * all previous but not subsequent diagnostics are removed.
- *
- * @param entries An array of tuples, like `[[file1, [d1, d2]], [file2, [d3, d4, d5]]]`, or `undefined`.
- */
- set(entries: [Uri, Diagnostic[] | undefined][]): void;
-
- /**
- * Remove all diagnostics from this collection that belong
- * to the provided `uri`. The same as `#set(uri, undefined)`.
- *
- * @param uri A resource identifier.
- */
- delete(uri: Uri): void;
-
- /**
- * Remove all diagnostics from this collection. The same
- * as calling `#set(undefined)`;
- */
- clear(): void;
-
- /**
- * Iterate over each entry in this collection.
- *
- * @param callback Function to execute for each entry.
- * @param thisArg The `this` context used when invoking the handler function.
- */
- forEach(callback: (uri: Uri, diagnostics: Diagnostic[], collection: DiagnosticCollection) => any, thisArg?: any): void;
-
- /**
- * Get the diagnostics for a given resource. *Note* that you cannot
- * modify the diagnostics-array returned from this call.
- *
- * @param uri A resource identifier.
- * @returns An immutable array of [diagnostics](#Diagnostic) or `undefined`.
- */
- get(uri: Uri): Diagnostic[] | undefined;
-
- /**
- * Check if this collection contains diagnostics for a
- * given resource.
- *
- * @param uri A resource identifier.
- * @returns `true` if this collection has diagnostic for the given resource.
- */
- has(uri: Uri): boolean;
-
- /**
- * Dispose and free associated resources. Calls
- * [clear](#DiagnosticCollection.clear).
- */
- dispose(): void;
- }
-
- /**
- * Denotes a column in the VS Code window. Columns are
- * used to show editors side by side.
- */
- export enum ViewColumn {
- One = 1,
- Two = 2,
- Three = 3
- }
-
- /**
- * An output channel is a container for readonly textual information.
- *
- * To get an instance of an `OutputChannel` use
- * [createOutputChannel](#window.createOutputChannel).
- */
- export interface OutputChannel {
-
- /**
- * The human-readable name of this output channel.
- */
- readonly name: string;
-
- /**
- * Append the given value to the channel.
- *
- * @param value A string, falsy values will not be printed.
- */
- append(value: string): void;
-
- /**
- * Append the given value and a line feed character
- * to the channel.
- *
- * @param value A string, falsy values will be printed.
- */
- appendLine(value: string): void;
-
- /**
- * Removes all output from the channel.
- */
- clear(): void;
-
- /**
- * Reveal this channel in the UI.
- *
- * @param preserveFocus When `true` the channel will not take focus.
- */
- show(preserveFocus?: boolean): void;
-
- /**
- * Reveal this channel in the UI.
- *
- * @deprecated This method is **deprecated** and the overload with
- * just one parameter should be used (`show(preserveFocus?: boolean): void`).
- *
- * @param column This argument is **deprecated** and will be ignored.
- * @param preserveFocus When `true` the channel will not take focus.
- */
- show(column?: ViewColumn, preserveFocus?: boolean): void;
-
- /**
- * Hide this channel from the UI.
- */
- hide(): void;
-
- /**
- * Dispose and free associated resources.
- */
- dispose(): void;
- }
-
- /**
- * Represents the alignment of status bar items.
- */
- export enum StatusBarAlignment {
-
- /**
- * Aligned to the left side.
- */
- Left = 1,
-
- /**
- * Aligned to the right side.
- */
- Right = 2
- }
-
- /**
- * A status bar item is a status bar contribution that can
- * show text and icons and run a command on click.
- */
- export interface StatusBarItem {
-
- /**
- * The alignment of this item.
- */
- readonly alignment: StatusBarAlignment;
-
- /**
- * The priority of this item. Higher value means the item should
- * be shown more to the left.
- */
- readonly priority: number;
-
- /**
- * The text to show for the entry. You can embed icons in the text by leveraging the syntax:
- *
- * `My text $(icon-name) contains icons like $(icon'name) this one.`
- *
- * Where the icon-name is taken from the [octicon](https://octicons.github.com) icon set, e.g.
- * `light-bulb`, `thumbsup`, `zap` etc.
- */
- text: string;
-
- /**
- * The tooltip text when you hover over this entry.
- */
- tooltip: string | undefined;
-
- /**
- * The foreground color for this entry.
- */
- color: string | undefined;
-
- /**
- * The identifier of a command to run on click. The command must be
- * [known](#commands.getCommands).
- */
- command: string | undefined;
-
- /**
- * Shows the entry in the status bar.
- */
- show(): void;
-
- /**
- * Hide the entry in the status bar.
- */
- hide(): void;
-
- /**
- * Dispose and free associated resources. Call
- * [hide](#StatusBarItem.hide).
- */
- dispose(): void;
- }
-
- /**
- * An individual terminal instance within the integrated terminal.
- */
- export interface Terminal {
-
- /**
- * The name of the terminal.
- */
- readonly name: string;
-
- /**
- * The process ID of the shell process.
- */
- readonly processId: Thenable;
-
- /**
- * Send text to the terminal. The text is written to the stdin of the underlying pty process
- * (shell) of the terminal.
- *
- * @param text The text to send.
- * @param addNewLine Whether to add a new line to the text being sent, this is normally
- * required to run a command in the terminal. The character(s) added are \n or \r\n
- * depending on the platform. This defaults to `true`.
- */
- sendText(text: string, addNewLine?: boolean): void;
-
- /**
- * Show the terminal panel and reveal this terminal in the UI.
- *
- * @param preserveFocus When `true` the terminal will not take focus.
- */
- show(preserveFocus?: boolean): void;
-
- /**
- * Hide the terminal panel if this terminal is currently showing.
- */
- hide(): void;
-
- /**
- * Dispose and free associated resources.
- */
- dispose(): void;
- }
-
- /**
- * Represents an extension.
- *
- * To get an instance of an `Extension` use [getExtension](#extensions.getExtension).
- */
- export interface Extension {
-
- /**
- * The canonical extension identifier in the form of: `publisher.name`.
- */
- readonly id: string;
-
- /**
- * The absolute file path of the directory containing this extension.
- */
- readonly extensionPath: string;
-
- /**
- * `true` if the extension has been activated.
- */
- readonly isActive: boolean;
-
- /**
- * The parsed contents of the extension's package.json.
- */
- readonly packageJSON: any;
-
- /**
- * The public API exported by this extension. It is an invalid action
- * to access this field before this extension has been activated.
- */
- readonly exports: T;
-
- /**
- * Activates this extension and returns its public API.
- *
- * @return A promise that will resolve when this extension has been activated.
- */
- activate(): Thenable;
- }
-
- /**
- * An extension context is a collection of utilities private to an
- * extension.
- *
- * An instance of an `ExtensionContext` is provided as the first
- * parameter to the `activate`-call of an extension.
- */
- export interface ExtensionContext {
-
- /**
- * An array to which disposables can be added. When this
- * extension is deactivated the disposables will be disposed.
- */
- subscriptions: { dispose(): any }[];
-
- /**
- * A memento object that stores state in the context
- * of the currently opened [workspace](#workspace.rootPath).
- */
- workspaceState: Memento;
-
- /**
- * A memento object that stores state independent
- * of the current opened [workspace](#workspace.rootPath).
- */
- globalState: Memento;
-
- /**
- * The absolute file path of the directory containing the extension.
- */
- extensionPath: string;
-
- /**
- * Get the absolute path of a resource contained in the extension.
- *
- * @param relativePath A relative path to a resource contained in the extension.
- * @return The absolute path of the resource.
- */
- asAbsolutePath(relativePath: string): string;
-
- /**
- * An absolute file path of a workspace specific directory in which the extension
- * can store private state. The directory might not exist on disk and creation is
- * up to the extension. However, the parent directory is guaranteed to be existent.
- *
- * Use [`workspaceState`](#ExtensionContext.workspaceState) or
- * [`globalState`](#ExtensionContext.globalState) to store key value data.
- */
- storagePath: string | undefined;
- }
-
- /**
- * A memento represents a storage utility. It can store and retrieve
- * values.
- */
- export interface Memento {
-
- /**
- * Return a value.
- *
- * @param key A string.
- * @return The stored value or `undefined`.
- */
- get(key: string): T | undefined;
-
- /**
- * Return a value.
- *
- * @param key A string.
- * @param defaultValue A value that should be returned when there is no
- * value (`undefined`) with the given key.
- * @return The stored value or the defaultValue.
- */
- get(key: string, defaultValue: T): T;
-
- /**
- * Store a value. The value must be JSON-stringifyable.
- *
- * @param key A string.
- * @param value A value. MUST not contain cyclic references.
- */
- update(key: string, value: any): Thenable;
- }
-
- /**
- * Namespace describing the environment the editor runs in.
- */
- export namespace env {
-
- /**
- * The application name of the editor, like 'VS Code'.
- *
- * @readonly
- */
- export let appName: string;
-
- /**
- * Represents the preferred user-language, like `de-CH`, `fr`, or `en-US`.
- *
- * @readonly
- */
- export let language: string;
-
- /**
- * A unique identifier for the computer.
- *
- * @readonly
- */
- export let machineId: string;
-
- /**
- * A unique identifier for the current session.
- * Changes each time the editor is started.
- *
- * @readonly
- */
- export let sessionId: string;
- }
-
- /**
- * Namespace for dealing with commands. In short, a command is a function with a
- * unique identifier. The function is sometimes also called _command handler_.
- *
- * Commands can be added to the editor using the [registerCommand](#commands.registerCommand)
- * and [registerTextEditorCommand](#commands.registerTextEditorCommand) functions. Commands
- * can be executed [manually](#commands.executeCommand) or from a UI gesture. Those are:
- *
- * * palette - Use the `commands`-section in `package.json` to make a command show in
- * the [command palette](https://code.visualstudio.com/docs/editor/codebasics#_command-palette).
- * * keybinding - Use the `keybindings`-section in `package.json` to enable
- * [keybindings](https://code.visualstudio.com/docs/customization/keybindings#_customizing-shortcuts)
- * for your extension.
- *
- * Commands from other extensions and from the editor itself are accessible to an extension. However,
- * when invoking an editor command not all argument types are supported.
- *
- * This is a sample that registers a command handler and adds an entry for that command to the palette. First
- * register a command handler with the identifier `extension.sayHello`.
- * ```javascript
- * commands.registerCommand('extension.sayHello', () => {
- * window.showInformationMessage('Hello World!');
- * });
- * ```
- * Second, bind the command identifier to a title under which it will show in the palette (`package.json`).
- * ```json
- * {
- * "contributes": {
- * "commands": [{
- * "command": "extension.sayHello",
- * "title": "Hello World"
- * }]
- * }
- * }
- * ```
- */
- export namespace commands {
-
- /**
- * Registers a command that can be invoked via a keyboard shortcut,
- * a menu item, an action, or directly.
- *
- * Registering a command with an existing command identifier twice
- * will cause an error.
- *
- * @param command A unique identifier for the command.
- * @param callback A command handler function.
- * @param thisArg The `this` context used when invoking the handler function.
- * @return Disposable which unregisters this command on disposal.
- */
- export function registerCommand(command: string, callback: (...args: any[]) => any, thisArg?: any): Disposable;
-
- /**
- * Registers a text editor command that can be invoked via a keyboard shortcut,
- * a menu item, an action, or directly.
- *
- * Text editor commands are different from ordinary [commands](#commands.registerCommand) as
- * they only execute when there is an active editor when the command is called. Also, the
- * command handler of an editor command has access to the active editor and to an
- * [edit](#TextEditorEdit)-builder.
- *
- * @param command A unique identifier for the command.
- * @param callback A command handler function with access to an [editor](#TextEditor) and an [edit](#TextEditorEdit).
- * @param thisArg The `this` context used when invoking the handler function.
- * @return Disposable which unregisters this command on disposal.
- */
- export function registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, ...args: any[]) => void, thisArg?: any): Disposable;
-
- /**
- * Executes the command denoted by the given command identifier.
- *
- * When executing an editor command not all types are allowed to
- * be passed as arguments. Allowed are the primitive types `string`, `boolean`,
- * `number`, `undefined`, and `null`, as well as classes defined in this API.
- * There are no restrictions when executing commands that have been contributed
- * by extensions.
- *
- * @param command Identifier of the command to execute.
- * @param rest Parameters passed to the command function.
- * @return A thenable that resolves to the returned value of the given command. `undefined` when
- * the command handler function doesn't return anything.
- */
- export function executeCommand(command: string, ...rest: any[]): Thenable;
-
- /**
- * Retrieve the list of all available commands. Commands starting an underscore are
- * treated as internal commands.
- *
- * @param filterInternal Set `true` to not see internal commands (starting with an underscore)
- * @return Thenable that resolves to a list of command ids.
- */
- export function getCommands(filterInternal?: boolean): Thenable;
- }
-
- /**
- * Namespace for dealing with the current window of the editor. That is visible
- * and active editors, as well as, UI elements to show messages, selections, and
- * asking for user input.
- */
- export namespace window {
-
- /**
- * The currently active editor or `undefined`. The active editor is the one
- * that currently has focus or, when none has focus, the one that has changed
- * input most recently.
- */
- export let activeTextEditor: TextEditor | undefined;
-
- /**
- * The currently visible editors or an empty array.
- */
- export let visibleTextEditors: TextEditor[];
-
- /**
- * An [event](#Event) which fires when the [active editor](#window.activeTextEditor)
- * has changed. *Note* that the event also fires when the active editor changes
- * to `undefined`.
- */
- export const onDidChangeActiveTextEditor: Event;
-
- /**
- * An [event](#Event) which fires when the array of [visible editors](#window.visibleTextEditors)
- * has changed.
- */
- export const onDidChangeVisibleTextEditors: Event;
-
- /**
- * An [event](#Event) which fires when the selection in an editor has changed.
- */
- export const onDidChangeTextEditorSelection: Event;
-
- /**
- * An [event](#Event) which fires when the options of an editor have changed.
- */
- export const onDidChangeTextEditorOptions: Event;
-
- /**
- * An [event](#Event) which fires when the view column of an editor has changed.
- */
- export const onDidChangeTextEditorViewColumn: Event;
-
- /**
- * An [event](#Event) which fires when a terminal is disposed.
- */
- export const onDidCloseTerminal: Event;
-
- /**
- * Show the given document in a text editor. A [column](#ViewColumn) can be provided
- * to control where the editor is being shown. Might change the [active editor](#window.activeTextEditor).
- *
- * @param document A text document to be shown.
- * @param column A view column in which the editor should be shown. The default is the [one](#ViewColumn.One), other values
- * are adjusted to be __Min(column, columnCount + 1)__.
- * @param preserveFocus When `true` the editor will not take focus.
- * @return A promise that resolves to an [editor](#TextEditor).
- */
- export function showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable;
-
- /**
- * Create a TextEditorDecorationType that can be used to add decorations to text editors.
- *
- * @param options Rendering options for the decoration type.
- * @return A new decoration type instance.
- */
- export function createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType;
-
- /**
- * Show an information message to users. Optionally provide an array of items which will be presented as
- * clickable buttons.
- *
- * @param message The message to show.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showInformationMessage(message: string, ...items: string[]): Thenable;
-
- /**
- * Show an information message to users. Optionally provide an array of items which will be presented as
- * clickable buttons.
- *
- * @param message The message to show.
- * @param options Configures the behaviour of the message.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showInformationMessage(message: string, options: MessageOptions, ...items: string[]): Thenable;
-
- /**
- * Show an information message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showInformationMessage(message: string, ...items: T[]): Thenable;
-
- /**
- * Show an information message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param options Configures the behaviour of the message.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showInformationMessage(message: string, options: MessageOptions, ...items: T[]): Thenable;
-
- /**
- * Show a warning message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showWarningMessage(message: string, ...items: string[]): Thenable;
-
- /**
- * Show a warning message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param options Configures the behaviour of the message.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showWarningMessage(message: string, options: MessageOptions, ...items: string[]): Thenable;
-
- /**
- * Show a warning message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showWarningMessage(message: string, ...items: T[]): Thenable;
-
- /**
- * Show a warning message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param options Configures the behaviour of the message.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showWarningMessage(message: string, options: MessageOptions, ...items: T[]): Thenable;
-
- /**
- * Show an error message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showErrorMessage(message: string, ...items: string[]): Thenable;
-
- /**
- * Show an error message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param options Configures the behaviour of the message.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showErrorMessage(message: string, options: MessageOptions, ...items: string[]): Thenable;
-
- /**
- * Show an error message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showErrorMessage(message: string, ...items: T[]): Thenable;
-
- /**
- * Show an error message.
- *
- * @see [showInformationMessage](#window.showInformationMessage)
- *
- * @param message The message to show.
- * @param options Configures the behaviour of the message.
- * @param items A set of items that will be rendered as actions in the message.
- * @return A thenable that resolves to the selected item or `undefined` when being dismissed.
- */
- export function showErrorMessage(message: string, options: MessageOptions, ...items: T[]): Thenable;
-
- /**
- * Shows a selection list.
- *
- * @param items An array of strings, or a promise that resolves to an array of strings.
- * @param options Configures the behavior of the selection list.
- * @param token A token that can be used to signal cancellation.
- * @return A promise that resolves to the selection or `undefined`.
- */
- export function showQuickPick(items: string[] | Thenable, options?: QuickPickOptions, token?: CancellationToken): Thenable;
-
- /**
- * Shows a selection list.
- *
- * @param items An array of items, or a promise that resolves to an array of items.
- * @param options Configures the behavior of the selection list.
- * @param token A token that can be used to signal cancellation.
- * @return A promise that resolves to the selected item or `undefined`.
- */
- export function showQuickPick(items: T[] | Thenable, options?: QuickPickOptions, token?: CancellationToken): Thenable;
-
- /**
- * Opens an input box to ask the user for input.
- *
- * The returned value will be `undefined` if the input box was canceled (e.g. pressing ESC). Otherwise the
- * returned value will be the string typed by the user or an empty string if the user did not type
- * anything but dismissed the input box with OK.
- *
- * @param options Configures the behavior of the input box.
- * @param token A token that can be used to signal cancellation.
- * @return A promise that resolves to a string the user provided or to `undefined` in case of dismissal.
- */
- export function showInputBox(options?: InputBoxOptions, token?: CancellationToken): Thenable;
-
- /**
- * Create a new [output channel](#OutputChannel) with the given name.
- *
- * @param name Human-readable string which will be used to represent the channel in the UI.
- */
- export function createOutputChannel(name: string): OutputChannel;
-
- /**
- * Set a message to the status bar. This is a short hand for the more powerful
- * status bar [items](#window.createStatusBarItem).
- *
- * @param text The message to show, supports icon substitution as in status bar [items](#StatusBarItem.text).
- * @param hideAfterTimeout Timeout in milliseconds after which the message will be disposed.
- * @return A disposable which hides the status bar message.
- */
- export function setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable;
-
- /**
- * Set a message to the status bar. This is a short hand for the more powerful
- * status bar [items](#window.createStatusBarItem).
- *
- * @param text The message to show, supports icon substitution as in status bar [items](#StatusBarItem.text).
- * @param hideWhenDone Thenable on which completion (resolve or reject) the message will be disposed.
- * @return A disposable which hides the status bar message.
- */
- export function setStatusBarMessage(text: string, hideWhenDone: Thenable): Disposable;
-
- /**
- * Set a message to the status bar. This is a short hand for the more powerful
- * status bar [items](#window.createStatusBarItem).
- *
- * *Note* that status bar messages stack and that they must be disposed when no
- * longer used.
- *
- * @param text The message to show, supports icon substitution as in status bar [items](#StatusBarItem.text).
- * @return A disposable which hides the status bar message.
- */
- export function setStatusBarMessage(text: string): Disposable;
-
- /**
- * Creates a status bar [item](#StatusBarItem).
- *
- * @param alignment The alignment of the item.
- * @param priority The priority of the item. Higher values mean the item should be shown more to the left.
- * @return A new status bar item.
- */
- export function createStatusBarItem(alignment?: StatusBarAlignment, priority?: number): StatusBarItem;
-
- /**
- * Creates a [Terminal](#Terminal). The cwd of the terminal will be the workspace directory
- * if it exists, regardless of whether an explicit customStartPath setting exists.
- *
- * @param name Optional human-readable string which will be used to represent the terminal in the UI.
- * @param shellPath Optional path to a custom shell executable to be used in the terminal.
- * @param shellArgs Optional args for the custom shell executable, this does not work on Windows (see #8429)
- * @return A new Terminal.
- */
- export function createTerminal(name?: string, shellPath?: string, shellArgs?: string[]): Terminal;
-
- /**
- * Creates a [Terminal](#Terminal). The cwd of the terminal will be the workspace directory
- * if it exists, regardless of whether an explicit customStartPath setting exists.
- *
- * @param options A TerminalOptions object describing the characteristics of the new terminal.
- * @return A new Terminal.
- */
- export function createTerminal(options: TerminalOptions): Terminal;
- }
-
- /**
- * Value-object describing what options formatting should use.
- */
- export interface TerminalOptions {
- /**
- * A human-readable string which will be used to represent the terminal in the UI.
- */
- name?: string;
-
- /**
- * A path to a custom shell executable to be used in the terminal.
- */
- shellPath?: string;
-
- /**
- * Args for the custom shell executable, this does not work on Windows (see #8429)
- */
- shellArgs?: string[];
- }
-
- /**
- * An event describing an individual change in the text of a [document](#TextDocument).
- */
- export interface TextDocumentContentChangeEvent {
- /**
- * The range that got replaced.
- */
- range: Range;
- /**
- * The length of the range that got replaced.
- */
- rangeLength: number;
- /**
- * The new text for the range.
- */
- text: string;
- }
-
- /**
- * An event describing a transactional [document](#TextDocument) change.
- */
- export interface TextDocumentChangeEvent {
-
- /**
- * The affected document.
- */
- document: TextDocument;
-
- /**
- * An array of content changes.
- */
- contentChanges: TextDocumentContentChangeEvent[];
- }
-
- /**
- * Represents reasons why a text document is saved.
- */
- export enum TextDocumentSaveReason {
-
- /**
- * Manually triggered, e.g. by the user pressing save, by starting debugging,
- * or by an API call.
- */
- Manual = 1,
-
- /**
- * Automatic after a delay.
- */
- AfterDelay = 2,
-
- /**
- * When the editor lost focus.
- */
- FocusOut = 3
- }
-
- /**
- * An event that is fired when a [document](#TextDocument) will be saved.
- *
- * To make modifications to the document before it is being saved, call the
- * [`waitUntil`](#TextDocumentWillSaveEvent.waitUntil)-function with a thenable
- * that resolves to an array of [text edits](#TextEdit).
- */
- export interface TextDocumentWillSaveEvent {
-
- /**
- * The document that will be saved.
- */
- document: TextDocument;
-
- /**
- * The reason why save was triggered.
- */
- reason: TextDocumentSaveReason;
-
- /**
- * Allows to pause the event loop and to apply [pre-save-edits](#TextEdit).
- * Edits of subsequent calls to this function will be applied in order. The
- * edits will be *ignored* if concurrent modifications of the document happened.
- *
- * *Note:* This function can only be called during event dispatch and not
- * in an asynchronous manner:
- *
- * ```ts
- * workspace.onWillSaveTextDocument(event => {
- * // async, will *throw* an error
- * setTimeout(() => event.waitUntil(promise));
- *
- * // sync, OK
- * event.waitUntil(promise);
- * })
- * ```
- *
- * @param thenable A thenable that resolves to [pre-save-edits](#TextEdit).
- */
- waitUntil(thenable: Thenable): void;
-
- /**
- * Allows to pause the event loop until the provided thenable resolved.
- *
- * *Note:* This function can only be called during event dispatch.
- *
- * @param thenable A thenable that delays saving.
- */
- waitUntil(thenable: Thenable): void;
- }
-
- /**
- * Namespace for dealing with the current workspace. A workspace is the representation
- * of the folder that has been opened. There is no workspace when just a file but not a
- * folder has been opened.
- *
- * The workspace offers support for [listening](#workspace.createFileSystemWatcher) to fs
- * events and for [finding](#workspace.findFiles) files. Both perform well and run _outside_
- * the editor-process so that they should be always used instead of nodejs-equivalents.
- */
- export namespace workspace {
-
- /**
- * Creates a file system watcher.
- *
- * A glob pattern that filters the file events must be provided. Optionally, flags to ignore certain
- * kinds of events can be provided. To stop listening to events the watcher must be disposed.
- *
- * @param globPattern A glob pattern that is applied to the names of created, changed, and deleted files.
- * @param ignoreCreateEvents Ignore when files have been created.
- * @param ignoreChangeEvents Ignore when files have been changed.
- * @param ignoreDeleteEvents Ignore when files have been deleted.
- * @return A new file system watcher instance.
- */
- export function createFileSystemWatcher(globPattern: string, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher;
-
- /**
- * The folder that is open in VS Code. `undefined` when no folder
- * has been opened.
- *
- * @readonly
- */
- export let rootPath: string | undefined;
-
- /**
- * Returns a path that is relative to the workspace root.
- *
- * When there is no [workspace root](#workspace.rootPath) or when the path
- * is not a child of that folder, the input is returned.
- *
- * @param pathOrUri A path or uri. When a uri is given its [fsPath](#Uri.fsPath) is used.
- * @return A path relative to the root or the input.
- */
- export function asRelativePath(pathOrUri: string | Uri): string;
-
- /**
- * Find files in the workspace.
- *
- * @sample `findFiles('**∕*.js', '**∕node_modules∕**', 10)`
- * @param include A glob pattern that defines the files to search for.
- * @param exclude A glob pattern that defines files and folders to exclude.
- * @param maxResults An upper-bound for the result.
- * @param token A token that can be used to signal cancellation to the underlying search engine.
- * @return A thenable that resolves to an array of resource identifiers.
- */
- export function findFiles(include: string, exclude?: string, maxResults?: number, token?: CancellationToken): Thenable;
-
- /**
- * Save all dirty files.
- *
- * @param includeUntitled Also save files that have been created during this session.
- * @return A thenable that resolves when the files have been saved.
- */
- export function saveAll(includeUntitled?: boolean): Thenable;
-
- /**
- * Make changes to one or many resources as defined by the given
- * [workspace edit](#WorkspaceEdit).
- *
- * When applying a workspace edit, the editor implements an 'all-or-nothing'-strategy,
- * that means failure to load one document or make changes to one document will cause
- * the edit to be rejected.
- *
- * @param edit A workspace edit.
- * @return A thenable that resolves when the edit could be applied.
- */
- export function applyEdit(edit: WorkspaceEdit): Thenable;
-
- /**
- * All text documents currently known to the system.
- *
- * @readonly
- */
- export let textDocuments: TextDocument[];
-
- /**
- * Opens the denoted document from disk. Will return early if the
- * document is already open, otherwise the document is loaded and the
- * [open document](#workspace.onDidOpenTextDocument)-event fires.
- * The document to open is denoted by the [uri](#Uri). Two schemes are supported:
- *
- * file: A file on disk, will be rejected if the file does not exist or cannot be loaded, e.g. `file:///Users/frodo/r.ini`.
- * untitled: A new file that should be saved on disk, e.g. `untitled:c:\frodo\new.js`. The language will be derived from the file name.
- *
- * Uris with other schemes will make this method return a rejected promise.
- *
- * @param uri Identifies the resource to open.
- * @return A promise that resolves to a [document](#TextDocument).
- */
- export function openTextDocument(uri: Uri): Thenable;
-
- /**
- * A short-hand for `openTextDocument(Uri.file(fileName))`.
- *
- * @see [openTextDocument](#openTextDocument)
- * @param fileName A name of a file on disk.
- * @return A promise that resolves to a [document](#TextDocument).
- */
- export function openTextDocument(fileName: string): Thenable;
-
- /**
- * Opens an untitled text document. The editor will prompt the user for a file
- * path when the document is to be saved. The `options` parameter allows to
- * specify the *language* of the document.
- *
- * @param options Options to control how the document will be created.
- * @return A promise that resolves to a [document](#TextDocument).
- */
- export function openTextDocument(options?: { language: string; }): Thenable;
-
- /**
- * Register a text document content provider.
- *
- * Only one provider can be registered per scheme.
- *
- * @param scheme The uri-scheme to register for.
- * @param provider A content provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerTextDocumentContentProvider(scheme: string, provider: TextDocumentContentProvider): Disposable;
-
- /**
- * An event that is emitted when a [text document](#TextDocument) is opened.
- */
- export const onDidOpenTextDocument: Event;
-
- /**
- * An event that is emitted when a [text document](#TextDocument) is disposed.
- */
- export const onDidCloseTextDocument: Event;
-
- /**
- * An event that is emitted when a [text document](#TextDocument) is changed.
- */
- export const onDidChangeTextDocument: Event;
-
- /**
- * An event that is emitted when a [text document](#TextDocument) will be saved to disk.
- *
- * *Note 1:* Subscribers can delay saving by registering asynchronous work. For the sake of data integrity the editor
- * might save without firing this event. For instance when shutting down with dirty files.
- *
- * *Note 2:* Subscribers are called sequentially and they can [delay](#TextDocumentWillSaveEvent.waitUntil) saving
- * by registering asynchronous work. Protection against misbehaving listeners is implemented as such:
- * * there is an overall time budget that all listeners share and if that is exhausted no further listener is called
- * * listeners that take a long time or produce errors frequently will not be called anymore
- *
- * The current thresholds are 1.5 seconds as overall time budget and a listener can misbehave 3 times before being ignored.
- */
- export const onWillSaveTextDocument: Event;
-
- /**
- * An event that is emitted when a [text document](#TextDocument) is saved to disk.
- */
- export const onDidSaveTextDocument: Event;
-
- /**
- * Get a configuration object.
- *
- * When a section-identifier is provided only that part of the configuration
- * is returned. Dots in the section-identifier are interpreted as child-access,
- * like `{ myExt: { setting: { doIt: true }}}` and `getConfiguration('myExt.setting').get('doIt') === true`.
- *
- * @param section A dot-separated identifier.
- * @return The full workspace configuration or a subset.
- */
- export function getConfiguration(section?: string): WorkspaceConfiguration;
-
- /**
- * An event that is emitted when the [configuration](#WorkspaceConfiguration) changed.
- */
- export const onDidChangeConfiguration: Event;
- }
-
- /**
- * Namespace for participating in language-specific editor [features](https://code.visualstudio.com/docs/editor/editingevolved),
- * like IntelliSense, code actions, diagnostics etc.
- *
- * Many programming languages exist and there is huge variety in syntaxes, semantics, and paradigms. Despite that, features
- * like automatic word-completion, code navigation, or code checking have become popular across different tools for different
- * programming languages.
- *
- * The editor provides an API that makes it simple to provide such common features by having all UI and actions already in place and
- * by allowing you to participate by providing data only. For instance, to contribute a hover all you have to do is provide a function
- * that can be called with a [TextDocument](#TextDocument) and a [Position](#Position) returning hover info. The rest, like tracking the
- * mouse, positioning the hover, keeping the hover stable etc. is taken care of by the editor.
- *
- * ```javascript
- * languages.registerHoverProvider('javascript', {
- * provideHover(document, position, token) {
- * return new Hover('I am a hover!');
- * }
- * });
- * ```
- *
- * Registration is done using a [document selector](#DocumentSelector) which is either a language id, like `javascript` or
- * a more complex [filter](#DocumentFilter) like `{ language: 'typescript', scheme: 'file' }`. Matching a document against such
- * a selector will result in a [score](#languages.match) that is used to determine if and how a provider shall be used. When
- * scores are equal the provider that came last wins. For features that allow full arity, like [hover](#languages.registerHoverProvider),
- * the score is only checked to be `>0`, for other features, like [IntelliSense](#languages.registerCompletionItemProvider) the
- * score is used for determining the order in which providers are asked to participate.
- */
- export namespace languages {
-
- /**
- * Return the identifiers of all known languages.
- * @return Promise resolving to an array of identifier strings.
- */
- export function getLanguages(): Thenable;
-
- /**
- * Compute the match between a document [selector](#DocumentSelector) and a document. Values
- * greater than zero mean the selector matches the document. The more individual matches a selector
- * and a document have, the higher the score is. These are the abstract rules given a `selector`:
- *
- * ```
- * (1) When selector is an array, return the maximum individual result.
- * (2) When selector is a string match that against the [languageId](#TextDocument.languageId).
- * (2.1) When both are equal score is `10`,
- * (2.2) When the selector is `*` score is `5`,
- * (2.3) Else score is `0`.
- * (3) When selector is a [filter](#DocumentFilter) return the maximum individual score given that each score is `>0`.
- * (3.1) When [language](#DocumentFilter.language) is set apply rules from #2, when `0` the total score is `0`.
- * (3.2) When [scheme](#DocumentFilter.scheme) is set and equals the [uri](#TextDocument.uri)-scheme score with `10`, else the total score is `0`.
- * (3.3) When [pattern](#DocumentFilter.pattern) is set
- * (3.3.1) pattern equals the [uri](#TextDocument.uri)-fsPath score with `10`,
- * (3.3.1) if the pattern matches as glob-pattern score with `5`,
- * (3.3.1) the total score is `0`
- * ```
- *
- * @param selector A document selector.
- * @param document A text document.
- * @return A number `>0` when the selector matches and `0` when the selector does not match.
- */
- export function match(selector: DocumentSelector, document: TextDocument): number;
-
- /**
- * Create a diagnostics collection.
- *
- * @param name The [name](#DiagnosticCollection.name) of the collection.
- * @return A new diagnostic collection.
- */
- export function createDiagnosticCollection(name?: string): DiagnosticCollection;
-
- /**
- * Register a completion provider.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and groups of equal score are sequentially asked for
- * completion items. The process stops when one or many providers of a group return a
- * result. A failing provider (rejected promise or exception) will not fail the whole
- * operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A completion provider.
- * @param triggerCharacters Trigger completion when the user types one of the characters, like `.` or `:`.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider, ...triggerCharacters: string[]): Disposable;
-
- /**
- * Register a code action provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A code action provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerCodeActionsProvider(selector: DocumentSelector, provider: CodeActionProvider): Disposable;
-
- /**
- * Register a code lens provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A code lens provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider): Disposable;
-
- /**
- * Register a definition provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A definition provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable;
-
- /**
- * Register an implementation provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider An implementation provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider): Disposable;
-
- /**
- * Register a type definition provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A type definition provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable;
-
- /**
- * Register a hover provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A hover provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable;
-
- /**
- * Register a document highlight provider.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and groups sequentially asked for document highlights.
- * The process stops when a provider returns a `non-falsy` or `non-failure` result.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A document highlight provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider): Disposable;
-
- /**
- * Register a document symbol provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A document symbol provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider): Disposable;
-
- /**
- * Register a workspace symbol provider.
- *
- * Multiple providers can be registered. In that case providers are asked in parallel and
- * the results are merged. A failing provider (rejected promise or exception) will not cause
- * a failure of the whole operation.
- *
- * @param provider A workspace symbol provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider): Disposable;
-
- /**
- * Register a reference provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A reference provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider): Disposable;
-
- /**
- * Register a reference provider.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and the best-matching provider is used. Failure
- * of the selected provider will cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A rename provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable;
-
- /**
- * Register a formatting provider for a document.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and the best-matching provider is used. Failure
- * of the selected provider will cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A document formatting edit provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerDocumentFormattingEditProvider(selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable;
-
- /**
- * Register a formatting provider for a document range.
- *
- * *Note:* A document range provider is also a [document formatter](#DocumentFormattingEditProvider)
- * which means there is no need to [register](registerDocumentFormattingEditProvider) a document
- * formatter when also registering a range provider.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and the best-matching provider is used. Failure
- * of the selected provider will cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A document range formatting edit provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable;
-
- /**
- * Register a formatting provider that works on type. The provider is active when the user enables the setting `editor.formatOnType`.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and the best-matching provider is used. Failure
- * of the selected provider will cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider An on type formatting edit provider.
- * @param firstTriggerCharacter A character on which formatting should be triggered, like `}`.
- * @param moreTriggerCharacter More trigger characters.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): Disposable;
-
- /**
- * Register a signature help provider.
- *
- * Multiple providers can be registered for a language. In that case providers are sorted
- * by their [score](#languages.match) and called sequentially until a provider returns a
- * valid result.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A signature help provider.
- * @param triggerCharacters Trigger signature help when the user types one of the characters, like `,` or `(`.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable;
-
- /**
- * Register a document link provider.
- *
- * Multiple providers can be registered for a language. In that case providers are asked in
- * parallel and the results are merged. A failing provider (rejected promise or exception) will
- * not cause a failure of the whole operation.
- *
- * @param selector A selector that defines the documents this provider is applicable to.
- * @param provider A document link provider.
- * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
- */
- export function registerDocumentLinkProvider(selector: DocumentSelector, provider: DocumentLinkProvider): Disposable;
-
- /**
- * Set a [language configuration](#LanguageConfiguration) for a language.
- *
- * @param language A language identifier like `typescript`.
- * @param configuration Language configuration.
- * @return A [disposable](#Disposable) that unsets this configuration.
- */
- export function setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable;
- }
-
- /**
- * Namespace for dealing with installed extensions. Extensions are represented
- * by an [extension](#Extension)-interface which allows to reflect on them.
- *
- * Extension writers can provide APIs to other extensions by returning their API public
- * surface from the `activate`-call.
- *
- * ```javascript
- * export function activate(context: vscode.ExtensionContext) {
- * let api = {
- * sum(a, b) {
- * return a + b;
- * },
- * mul(a, b) {
- * return a * b;
- * }
- * };
- * // 'export' public api-surface
- * return api;
- * }
- * ```
- * When depending on the API of another extension add an `extensionDependency`-entry
- * to `package.json`, and use the [getExtension](#extensions.getExtension)-function
- * and the [exports](#Extension.exports)-property, like below:
- *
- * ```javascript
- * let mathExt = extensions.getExtension('genius.math');
- * let importedApi = mathExt.exports;
- *
- * console.log(importedApi.mul(42, 1));
- * ```
- */
- export namespace extensions {
-
- /**
- * Get an extension by its full identifier in the form of: `publisher.name`.
- *
- * @param extensionId An extension identifier.
- * @return An extension or `undefined`.
- */
- export function getExtension(extensionId: string): Extension | undefined;
-
- /**
- * Get an extension its full identifier in the form of: `publisher.name`.
- *
- * @param extensionId An extension identifier.
- * @return An extension or `undefined`.
- */
- export function getExtension(extensionId: string): Extension | undefined;
-
- /**
- * All extensions currently known to the system.
- */
- export let all: Extension[];
- }
-}
-
-/**
- * Thenable is a common denominator between ES6 promises, Q, jquery.Deferred, WinJS.Promise,
- * and others. This API makes no assumption about what promise libary is being used which
- * enables reusing existing code without migrating to a specific promise implementation. Still,
- * we recommend the use of native promises which are available in VS Code.
- */
-interface Thenable {
- /**
- * Attaches callbacks for the resolution and/or rejection of the Promise.
- * @param onfulfilled The callback to execute when the Promise is resolved.
- * @param onrejected The callback to execute when the Promise is rejected.
- * @returns A Promise for the completion of which ever callback is executed.
- */
- then(onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable;
- then(onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable;
-}
diff --git a/out/extension.js b/out/extension.js
index 37cfba1..03ba66b 100644
--- a/out/extension.js
+++ b/out/extension.js
@@ -1,20 +1,20 @@
'use strict';
-exports.__esModule = true;
-var vscode_1 = require("vscode");
-var vscode_languageclient_1 = require("vscode-languageclient");
+Object.defineProperty(exports, "__esModule", { value: true });
+const vscode_1 = require("vscode");
+const vscode_languageclient_1 = require("vscode-languageclient");
function activate(context) {
// The server is implemented in node
- var serverModule = context.asAbsolutePath('server/init.js');
+ let serverModule = context.asAbsolutePath('server/init.js');
// The debug options for the server
- var debugOptions = { execArgv: ["--nolazy", "--debug=6009"] };
+ let debugOptions = { execArgv: ["--nolazy", "--debug=6009"] };
// If the extension is launched in debug mode then the debug server options are used
// Otherwise the run options are used
- var serverOptions = {
+ let serverOptions = {
run: { module: serverModule, transport: vscode_languageclient_1.TransportKind.ipc },
debug: { module: serverModule, transport: vscode_languageclient_1.TransportKind.ipc, options: debugOptions }
};
// Options to control the language client
- var clientOptions = {
+ let clientOptions = {
// Register the server for plain text documents
documentSelector: ['sqf'],
synchronize: {
@@ -23,11 +23,11 @@ function activate(context) {
}
};
// Create the language client and start the client.
- var lc = new vscode_languageclient_1.LanguageClient('sqfLanguageServer', 'SQF Language Server', serverOptions, clientOptions);
- var disposable = lc.start();
- lc.onReady().then(function () {
- lc.onRequest('requestRestart', function (params) {
- vscode_1.window.showInformationMessage(params, 'Reload').then(function (selected) {
+ let lc = new vscode_languageclient_1.LanguageClient('sqfLanguageServer', 'SQF Language Server', serverOptions, clientOptions);
+ let disposable = lc.start();
+ lc.onReady().then(() => {
+ lc.onRequest('requestRestart', (params) => {
+ vscode_1.window.showInformationMessage(params, 'Reload').then(selected => {
if (selected === 'Reload') {
vscode_1.commands.executeCommand('workbench.action.reloadWindow');
}
@@ -37,3 +37,4 @@ function activate(context) {
});
}
exports.activate = activate;
+//# sourceMappingURL=extension.js.map
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..642cc36
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,3203 @@
+{
+ "name": "sqf",
+ "version": "1.0.4",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/mocha": {
+ "version": "2.2.42",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.42.tgz",
+ "integrity": "sha512-b6gVDoxEbAQGwbV7gSzeFw/hy3/eEAokztktdzl4bHvGgb9K5zW4mVQDlVYch2w31m8t/J7L2iqhQvz3r5edCQ==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "6.0.88",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz",
+ "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "json-stable-stringify": "1.0.1"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "beeper": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
+ "dev": true
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ }
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "clone": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
+ "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
+ "dev": true
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
+ "cloneable-readable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz",
+ "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "process-nextick-args": "1.0.7",
+ "through2": "2.0.3"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+ "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "dateformat": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz",
+ "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "requires": {
+ "ms": "0.7.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "deep-assign": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz",
+ "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=",
+ "dev": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "diff": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+ "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "duplexify": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
+ "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
+ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3.3",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "fancy-log": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
+ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "time-stamp": "1.1.0"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "dev": true,
+ "requires": {
+ "pend": "1.2.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true,
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "first-chunk-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
+ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "dev": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.1"
+ }
+ },
+ "generate-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+ "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+ "dev": true
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "dev": true,
+ "requires": {
+ "is-property": "1.0.2"
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ }
+ },
+ "glob-stream": {
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
+ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.1",
+ "glob": "5.0.15",
+ "glob-parent": "3.1.0",
+ "micromatch": "2.3.11",
+ "ordered-read-streams": "0.3.0",
+ "through2": "0.6.5",
+ "to-absolute-glob": "0.1.1",
+ "unique-stream": "2.2.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ }
+ }
+ },
+ "glogg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
+ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
+ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
+ "dev": true
+ },
+ "gulp-chmod": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-1.3.0.tgz",
+ "integrity": "sha1-i7bowRiV3L+bQlIMh0NHpQIryw0=",
+ "dev": true,
+ "requires": {
+ "deep-assign": "1.0.0",
+ "stat-mode": "0.2.2",
+ "through2": "2.0.3"
+ }
+ },
+ "gulp-filter": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-4.0.0.tgz",
+ "integrity": "sha1-OV9YolbFWc254NFX8cqvUkijjcs=",
+ "dev": true,
+ "requires": {
+ "gulp-util": "3.0.8",
+ "multimatch": "2.1.0",
+ "streamfilter": "1.0.5"
+ }
+ },
+ "gulp-gunzip": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-0.0.3.tgz",
+ "integrity": "sha1-e24HsPWP09QlFcSOrVpj3wVy9i8=",
+ "dev": true,
+ "requires": {
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "dev": true,
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "gulp-remote-src": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.3.tgz",
+ "integrity": "sha1-VyjP1kNDPdSEXd7wlp8PlxoqtKE=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4",
+ "node.extend": "1.1.6",
+ "request": "2.79.0",
+ "through2": "2.0.3",
+ "vinyl": "2.0.2"
+ },
+ "dependencies": {
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.79.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.1.0"
+ }
+ },
+ "vinyl": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz",
+ "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2",
+ "clone-buffer": "1.0.0",
+ "clone-stats": "1.0.0",
+ "cloneable-readable": "1.0.0",
+ "is-stream": "1.1.0",
+ "remove-trailing-separator": "1.1.0",
+ "replace-ext": "1.0.0"
+ }
+ }
+ }
+ },
+ "gulp-sourcemaps": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
+ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "1.5.0",
+ "graceful-fs": "4.1.11",
+ "strip-bom": "2.0.0",
+ "through2": "2.0.3",
+ "vinyl": "1.2.0"
+ },
+ "dependencies": {
+ "vinyl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ }
+ }
+ },
+ "gulp-symdest": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz",
+ "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4",
+ "mkdirp": "0.5.1",
+ "queue": "3.1.0",
+ "vinyl-fs": "2.4.4"
+ }
+ },
+ "gulp-untar": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.5.tgz",
+ "integrity": "sha1-jZfDHh4g09EBZ4c7HqlafueGVKk=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.1.7",
+ "gulp-util": "2.2.20",
+ "streamifier": "0.1.1",
+ "tar": "1.0.3",
+ "through2": "0.4.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz",
+ "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz",
+ "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
+ "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "1.1.0",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "0.1.0",
+ "strip-ansi": "0.3.0",
+ "supports-color": "0.2.0"
+ }
+ },
+ "dateformat": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1",
+ "meow": "3.7.0"
+ }
+ },
+ "event-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz",
+ "integrity": "sha1-tMVAAS0P4UmEIPPYlGAI22OTw3o=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.2.10",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
+ },
+ "gulp-util": {
+ "version": "2.2.20",
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz",
+ "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=",
+ "dev": true,
+ "requires": {
+ "chalk": "0.5.1",
+ "dateformat": "1.0.12",
+ "lodash._reinterpolate": "2.4.1",
+ "lodash.template": "2.4.1",
+ "minimist": "0.2.0",
+ "multipipe": "0.1.2",
+ "through2": "0.5.1",
+ "vinyl": "0.2.3"
+ },
+ "dependencies": {
+ "through2": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz",
+ "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "3.0.0"
+ }
+ }
+ }
+ },
+ "has-ansi": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
+ "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "0.2.1"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz",
+ "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=",
+ "dev": true
+ },
+ "lodash.escape": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz",
+ "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=",
+ "dev": true,
+ "requires": {
+ "lodash._escapehtmlchar": "2.4.1",
+ "lodash._reunescapedhtml": "2.4.1",
+ "lodash.keys": "2.4.1"
+ }
+ },
+ "lodash.keys": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
+ "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
+ "dev": true,
+ "requires": {
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
+ }
+ },
+ "lodash.template": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz",
+ "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=",
+ "dev": true,
+ "requires": {
+ "lodash._escapestringchar": "2.4.1",
+ "lodash._reinterpolate": "2.4.1",
+ "lodash.defaults": "2.4.1",
+ "lodash.escape": "2.4.1",
+ "lodash.keys": "2.4.1",
+ "lodash.templatesettings": "2.4.1",
+ "lodash.values": "2.4.1"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz",
+ "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "2.4.1",
+ "lodash.escape": "2.4.1"
+ }
+ },
+ "minimist": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz",
+ "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "split": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
+ "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
+ "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "0.2.1"
+ }
+ },
+ "supports-color": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz",
+ "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
+ "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "2.1.2"
+ },
+ "dependencies": {
+ "xtend": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+ "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+ "dev": true,
+ "requires": {
+ "object-keys": "0.4.0"
+ }
+ }
+ }
+ },
+ "vinyl": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz",
+ "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=",
+ "dev": true,
+ "requires": {
+ "clone-stats": "0.0.1"
+ }
+ },
+ "xtend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz",
+ "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=",
+ "dev": true
+ }
+ }
+ },
+ "gulp-util": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
+ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
+ "dev": true,
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-uniq": "1.0.3",
+ "beeper": "1.1.1",
+ "chalk": "1.1.3",
+ "dateformat": "2.0.0",
+ "fancy-log": "1.3.0",
+ "gulplog": "1.0.0",
+ "has-gulplog": "0.1.0",
+ "lodash._reescape": "3.0.0",
+ "lodash._reevaluate": "3.0.0",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.template": "3.6.2",
+ "minimist": "1.2.0",
+ "multipipe": "0.1.2",
+ "object-assign": "3.0.0",
+ "replace-ext": "0.0.1",
+ "through2": "2.0.3",
+ "vinyl": "0.5.3"
+ }
+ },
+ "gulp-vinyl-zip": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-1.4.0.tgz",
+ "integrity": "sha1-VjgvLMtXIxuwR4x4c3zNVylzvuE=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4",
+ "queue": "3.1.0",
+ "through2": "0.6.5",
+ "vinyl": "0.4.6",
+ "vinyl-fs": "2.4.4",
+ "yauzl": "2.8.0",
+ "yazl": "2.4.2"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "dev": true,
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "dev": true,
+ "requires": {
+ "glogg": "1.0.0"
+ }
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "commander": "2.11.0",
+ "is-my-json-valid": "2.16.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-gulplog": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "is": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
+ "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-my-json-valid": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
+ "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
+ "dev": true,
+ "requires": {
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-valid-glob": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
+ "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "jade": {
+ "version": "0.26.3",
+ "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
+ "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
+ "dev": true,
+ "requires": {
+ "commander": "0.6.1",
+ "mkdirp": "0.3.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
+ "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
+ "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=",
+ "dev": true
+ }
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonpointer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "lodash._basecopy": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
+ "dev": true
+ },
+ "lodash._basetostring": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
+ "dev": true
+ },
+ "lodash._basevalues": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
+ "dev": true
+ },
+ "lodash._escapehtmlchar": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz",
+ "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=",
+ "dev": true,
+ "requires": {
+ "lodash._htmlescapes": "2.4.1"
+ }
+ },
+ "lodash._escapestringchar": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz",
+ "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=",
+ "dev": true
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
+ "dev": true
+ },
+ "lodash._htmlescapes": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz",
+ "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=",
+ "dev": true
+ },
+ "lodash._isiterateecall": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
+ "dev": true
+ },
+ "lodash._isnative": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz",
+ "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=",
+ "dev": true
+ },
+ "lodash._objecttypes": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz",
+ "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=",
+ "dev": true
+ },
+ "lodash._reescape": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
+ "dev": true
+ },
+ "lodash._reevaluate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash._reunescapedhtml": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz",
+ "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=",
+ "dev": true,
+ "requires": {
+ "lodash._htmlescapes": "2.4.1",
+ "lodash.keys": "2.4.1"
+ },
+ "dependencies": {
+ "lodash.keys": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
+ "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
+ "dev": true,
+ "requires": {
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
+ }
+ }
+ }
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
+ "dev": true
+ },
+ "lodash._shimkeys": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz",
+ "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=",
+ "dev": true,
+ "requires": {
+ "lodash._objecttypes": "2.4.1"
+ }
+ },
+ "lodash.defaults": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz",
+ "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=",
+ "dev": true,
+ "requires": {
+ "lodash._objecttypes": "2.4.1",
+ "lodash.keys": "2.4.1"
+ },
+ "dependencies": {
+ "lodash.keys": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
+ "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
+ "dev": true,
+ "requires": {
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
+ }
+ }
+ }
+ },
+ "lodash.escape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "dev": true,
+ "requires": {
+ "lodash._root": "3.0.1"
+ }
+ },
+ "lodash.isarguments": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
+ "dev": true
+ },
+ "lodash.isarray": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
+ "dev": true
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "dev": true
+ },
+ "lodash.isobject": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
+ "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
+ "dev": true,
+ "requires": {
+ "lodash._objecttypes": "2.4.1"
+ }
+ },
+ "lodash.keys": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "dev": true,
+ "requires": {
+ "lodash._getnative": "3.9.1",
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
+ }
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+ "dev": true,
+ "requires": {
+ "lodash._basecopy": "3.0.1",
+ "lodash._basetostring": "3.0.1",
+ "lodash._basevalues": "3.0.0",
+ "lodash._isiterateecall": "3.0.9",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0",
+ "lodash.keys": "3.1.2",
+ "lodash.restparam": "3.6.1",
+ "lodash.templatesettings": "3.1.1"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0"
+ }
+ },
+ "lodash.values": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz",
+ "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=",
+ "dev": true,
+ "requires": {
+ "lodash.keys": "2.4.1"
+ },
+ "dependencies": {
+ "lodash.keys": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
+ "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
+ "dev": true,
+ "requires": {
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
+ }
+ }
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ }
+ }
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "mocha": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz",
+ "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=",
+ "dev": true,
+ "requires": {
+ "commander": "2.3.0",
+ "debug": "2.2.0",
+ "diff": "1.4.0",
+ "escape-string-regexp": "1.0.2",
+ "glob": "3.2.11",
+ "growl": "1.9.2",
+ "jade": "0.26.3",
+ "mkdirp": "0.5.1",
+ "supports-color": "1.2.0",
+ "to-iso-string": "0.0.2"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
+ "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
+ "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=",
+ "dev": true
+ },
+ "glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimatch": "0.3.0"
+ }
+ },
+ "minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
+ "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ },
+ "multimatch": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
+ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
+ "dev": true,
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "minimatch": "3.0.4"
+ }
+ },
+ "multipipe": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "0.0.2"
+ }
+ },
+ "node.extend": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz",
+ "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=",
+ "dev": true,
+ "requires": {
+ "is": "3.2.1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.5.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.4.1",
+ "validate-npm-package-license": "3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
+ "dev": true
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
+ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
+ "dev": true,
+ "requires": {
+ "is-stream": "1.1.0",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ }
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
+ "dev": true
+ },
+ "queue": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz",
+ "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.81.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+ "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "4.2.1",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "performance-now": "0.2.0",
+ "qs": "6.4.0",
+ "safe-buffer": "5.1.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.1.0"
+ },
+ "dependencies": {
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+ "dev": true,
+ "requires": {
+ "ajv": "4.11.8",
+ "har-schema": "1.0.5"
+ }
+ },
+ "qs": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+ "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ }
+ }
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "source-map": {
+ "version": "0.1.32",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
+ "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ },
+ "source-map-support": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz",
+ "integrity": "sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.1.32"
+ }
+ },
+ "sparkles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true,
+ "requires": {
+ "spdx-license-ids": "1.2.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "split": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "dev": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "stat-mode": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
+ "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
+ "dev": true
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "streamfilter": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.5.tgz",
+ "integrity": "sha1-h1BxEb644phFFxe1Ec/tjwAqv1M=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "streamifier": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
+ "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-bom-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
+ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
+ "dev": true,
+ "requires": {
+ "first-chunk-stream": "1.0.0",
+ "strip-bom": "2.0.0"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "tar": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz",
+ "integrity": "sha1-FbzaskT6St1E5CRKAXbtuKqaK0Q=",
+ "dev": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ }
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "through2-filter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
+ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
+ "dev": true,
+ "requires": {
+ "through2": "2.0.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true
+ },
+ "to-absolute-glob": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
+ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1"
+ }
+ },
+ "to-iso-string": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz",
+ "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
+ "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+ "dev": true
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "typescript": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.2.tgz",
+ "integrity": "sha1-A4qV99m7tCCxvzW6MdTFwd0//jQ=",
+ "dev": true
+ },
+ "unique-stream": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
+ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify": "1.0.1",
+ "through2-filter": "2.0.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
+ "dev": true
+ },
+ "vali-date": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
+ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "1.0.2",
+ "spdx-expression-parse": "1.0.4"
+ }
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
+ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
+ "dev": true,
+ "requires": {
+ "duplexify": "3.5.1",
+ "glob-stream": "5.3.5",
+ "graceful-fs": "4.1.11",
+ "gulp-sourcemaps": "1.6.0",
+ "is-valid-glob": "0.3.0",
+ "lazystream": "1.0.0",
+ "lodash.isequal": "4.5.0",
+ "merge-stream": "1.0.1",
+ "mkdirp": "0.5.1",
+ "object-assign": "4.1.1",
+ "readable-stream": "2.3.3",
+ "strip-bom": "2.0.0",
+ "strip-bom-stream": "1.0.0",
+ "through2": "2.0.3",
+ "through2-filter": "2.0.0",
+ "vali-date": "1.0.0",
+ "vinyl": "1.2.0"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ }
+ }
+ },
+ "vinyl-source-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz",
+ "integrity": "sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=",
+ "dev": true,
+ "requires": {
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "dev": true,
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "vscode": {
+ "version": "https://registry.npmjs.org/vscode/-/vscode-1.0.5.tgz",
+ "integrity": "sha1-LKv71V5IAIgll/IkOQ9RW+CWUwI=",
+ "dev": true,
+ "requires": {
+ "glob": "5.0.15",
+ "gulp-chmod": "1.3.0",
+ "gulp-filter": "4.0.0",
+ "gulp-gunzip": "0.0.3",
+ "gulp-remote-src": "0.4.3",
+ "gulp-symdest": "1.1.0",
+ "gulp-untar": "0.0.5",
+ "gulp-vinyl-zip": "1.4.0",
+ "mocha": "2.5.3",
+ "request": "2.81.0",
+ "semver": "5.4.1",
+ "source-map-support": "0.3.3",
+ "vinyl-source-stream": "1.1.0"
+ }
+ },
+ "vscode-jsonrpc": {
+ "version": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.1.0.tgz",
+ "integrity": "sha1-0Y1EvPJlAl0pEhG4pIn284IS1uw="
+ },
+ "vscode-languageclient": {
+ "version": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.1.0.tgz",
+ "integrity": "sha1-xZNDHI73eYFPUYrK03aBfOuE3dg=",
+ "requires": {
+ "vscode-jsonrpc": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.1.0.tgz",
+ "vscode-languageserver-types": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.0.3.tgz"
+ }
+ },
+ "vscode-languageserver": {
+ "version": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-3.1.0.tgz",
+ "integrity": "sha1-hbOzZpB9NvNaTta2Cdq9N/bvIDg=",
+ "requires": {
+ "vscode-jsonrpc": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.1.0.tgz",
+ "vscode-languageserver-types": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.0.3.tgz"
+ }
+ },
+ "vscode-languageserver-types": {
+ "version": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.0.3.tgz",
+ "integrity": "sha1-MDsqMHwglS/1wfWmCPPJEUYCjUc="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "yauzl": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz",
+ "integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "fd-slicer": "1.0.1"
+ }
+ },
+ "yazl": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.2.tgz",
+ "integrity": "sha1-FMsZCD4eJacAksFYiqvg9OTdTYg=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 8443dff..cd098a8 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "sqf",
"displayName": "SQF Language",
"description": "Full SQF Language support for VS Code.",
- "icon": "img/logo.svg",
+ "icon": "img/logo.png",
"version": "1.0.4",
"publisher": "Armitxes",
"galleryBanner": {
@@ -140,5 +140,10 @@
"dependencies": {
"vscode-languageclient": "^3.1.0",
"vscode-languageserver": "^3.1.0"
+ },
+ "__metadata": {
+ "id": "c612fc7d-8fe9-43d0-9b8f-1203df49b649",
+ "publisherId": "78a546a4-7ba3-4cc1-804a-d6dec5a34789",
+ "publisherDisplayName": "Armitxes"
}
-}
+}
\ No newline at end of file