diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1334a4d7..664bc531 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,10 +1,13 @@
# Monaco Editor Change log
+## [0.10.1] (16.10.2017)
+ - Fixes [issue #601](https://github.com/Microsoft/monaco-editor/issues/601): window.opener should be set to null to protect against malicious code
+
## [0.10.0] (17.08.2017)
### Breaking changes
* Removed `CodeAction`.
-* Method `provideCodeActions` in `CodeActionProvider` now returns `Command[] | Thenable`, which is already removed.
+* Method `provideCodeActions` in `CodeActionProvider` now returns `Command[] | Thenable` instead of `CodeAction[] | Thenable`, which is already removed.
### API changes
* added `monaco.editor.getModelMarkers`. Get markers for owner and/or resource.
diff --git a/LICENSE.md b/LICENSE.md
index 6d3e913c..92dfda1c 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2017 Microsoft Corporation
+Copyright (c) 2018 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
diff --git a/README.md b/README.md
index f7e11740..ff8bc5a2 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ In IE, the editor must be completely surrounded in the body element, otherwise t
## Installing
```
-npm install monaco-editor
+$ npm install monaco-editor
```
You will get:
diff --git a/gulpfile.js b/gulpfile.js
index 21b661a4..a79a780f 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,21 +1,23 @@
-var gulp = require('gulp');
-var metadata = require('./metadata');
-var es = require('event-stream');
-var path = require('path');
-var fs = require('fs');
-var rimraf = require('rimraf');
-var cp = require('child_process');
-var httpServer = require('http-server');
-var typedoc = require("gulp-typedoc");
-var CleanCSS = require('clean-css');
-var uncss = require('uncss');
+const gulp = require('gulp');
+const metadata = require('./metadata');
+const es = require('event-stream');
+const path = require('path');
+const fs = require('fs');
+const rimraf = require('rimraf');
+const cp = require('child_process');
+const httpServer = require('http-server');
+const typedoc = require("gulp-typedoc");
+const CleanCSS = require('clean-css');
+const uncss = require('uncss');
+const File = require('vinyl');
+const ts = require('typescript');
-var WEBSITE_GENERATED_PATH = path.join(__dirname, 'website/playground/new-samples');
-var MONACO_EDITOR_VERSION = (function() {
- var packageJsonPath = path.join(__dirname, 'package.json');
- var packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
- var version = packageJson.version;
+const WEBSITE_GENERATED_PATH = path.join(__dirname, 'website/playground/new-samples');
+const MONACO_EDITOR_VERSION = (function() {
+ const packageJsonPath = path.join(__dirname, 'package.json');
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
+ const version = packageJson.version;
if (!/\d+\.\d+\.\d+/.test(version)) {
console.log('unrecognized package.json version: ' + version);
process.exit(0);
@@ -33,6 +35,9 @@ gulp.task('release', ['clean-release'], function() {
// min folder
releaseOne('min'),
+ // esm folder
+ ESM_release(),
+
// package.json
gulp.src('package.json')
.pipe(es.through(function(data) {
@@ -62,31 +67,51 @@ gulp.task('release', ['clean-release'], function() {
)
});
+/**
+ * Release to `dev` or `min`.
+ */
function releaseOne(type) {
return es.merge(
gulp.src('node_modules/monaco-editor-core/' + type + '/**/*')
- .pipe(addPluginContribs())
+ .pipe(addPluginContribs(type))
.pipe(gulp.dest('release/' + type)),
- pluginStreams('release/' + type + '/')
+ pluginStreams(type, 'release/' + type + '/')
)
}
-function pluginStreams(destinationPath) {
+/**
+ * Release plugins to `dev` or `min`.
+ */
+function pluginStreams(type, destinationPath) {
return es.merge(
metadata.METADATA.PLUGINS.map(function(plugin) {
- return pluginStream(plugin, destinationPath);
+ return pluginStream(plugin, type, destinationPath);
})
);
}
-function pluginStream(plugin, destinationPath) {
- var contribPath = path.join(plugin.paths.npm, plugin.contrib.substr(plugin.modulePrefix.length)) + '.js';
+/**
+ * Release a plugin to `dev` or `min`.
+ */
+function pluginStream(plugin, type, destinationPath) {
+ var pluginPath = plugin.paths[`npm/${type}`]; // npm/dev or npm/min
+ var contribPath = path.join(pluginPath, plugin.contrib.substr(plugin.modulePrefix.length)) + '.js';
return (
gulp.src([
- plugin.paths.npm + '/**/*',
- '!' + contribPath,
- '!' + plugin.paths.npm + '/**/monaco.d.ts'
+ pluginPath + '/**/*',
+ '!' + contribPath
])
+ .pipe(es.through(function(data) {
+ if (!/_\.contribution/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ let contents = data.contents.toString();
+ contents = contents.replace('define(["require", "exports"],', 'define(["require", "exports", "vs/editor/editor.api"],');
+ data.contents = new Buffer(contents);
+ this.emit('data', data);
+ }))
.pipe(gulp.dest(destinationPath + plugin.modulePrefix))
);
}
@@ -94,10 +119,10 @@ function pluginStream(plugin, destinationPath) {
/**
* Edit editor.main.js:
* - rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
- * - append contribs from plugins
+ * - append monaco.contribution modules from plugins
* - append new AMD module 'vs/editor/editor.main' that stiches things together
*/
-function addPluginContribs() {
+function addPluginContribs(type) {
return es.through(function(data) {
if (!/editor\.main\.js$/.test(data.path)) {
this.emit('data', data);
@@ -113,22 +138,53 @@ function addPluginContribs() {
metadata.METADATA.PLUGINS.forEach(function(plugin) {
allPluginsModuleIds.push(plugin.contrib);
- var contribPath = path.join(__dirname, plugin.paths.npm, plugin.contrib.substr(plugin.modulePrefix.length)) + '.js';
+ var pluginPath = plugin.paths[`npm/${type}`]; // npm/dev or npm/min
+ var contribPath = path.join(__dirname, pluginPath, plugin.contrib.substr(plugin.modulePrefix.length)) + '.js';
var contribContents = fs.readFileSync(contribPath).toString();
+ // Check for the anonymous define call case 1
+ // transform define(function() {...}) to define("moduleId",["require"],function() {...})
+ var anonymousContribDefineCase1 = contribContents.indexOf('define(function');
+ if (anonymousContribDefineCase1 >= 0) {
+ contribContents = (
+ contribContents.substring(0, anonymousContribDefineCase1)
+ + `define("${plugin.contrib}",["require"],function`
+ + contribContents.substring(anonymousContribDefineCase1 + 'define(function'.length)
+ );
+ }
+
+ // Check for the anonymous define call case 2
+ // transform define([ to define("moduleId",[
+ var anonymousContribDefineCase2 = contribContents.indexOf('define([');
+ if (anonymousContribDefineCase2 >= 0) {
+ contribContents = (
+ contribContents.substring(0, anonymousContribDefineCase2)
+ + `define("${plugin.contrib}",[`
+ + contribContents.substring(anonymousContribDefineCase2 + 'define(['.length)
+ );
+ }
+
var contribDefineIndex = contribContents.indexOf('define("' + plugin.contrib);
if (contribDefineIndex === -1) {
- console.error('(1) CANNOT DETERMINE AMD define location for contribution', plugin);
- process.exit(-1);
+ contribDefineIndex = contribContents.indexOf('define(\'' + plugin.contrib);
+ if (contribDefineIndex === -1) {
+ console.error('(1) CANNOT DETERMINE AMD define location for contribution', pluginPath);
+ process.exit(-1);
+ }
}
var depsEndIndex = contribContents.indexOf(']', contribDefineIndex);
if (contribDefineIndex === -1) {
- console.error('(2) CANNOT DETERMINE AMD define location for contribution', plugin);
+ console.error('(2) CANNOT DETERMINE AMD define location for contribution', pluginPath);
process.exit(-1);
}
- contribContents = contribContents.substring(0, depsEndIndex) + ',"vs/editor/edcore.main"' + contribContents.substring(depsEndIndex);
+ contribContents = contribContents.substring(0, depsEndIndex) + ',"vs/editor/editor.api"' + contribContents.substring(depsEndIndex);
+
+ contribContents = contribContents.replace(
+ 'define("vs/basic-languages/_.contribution",["require","exports"],',
+ 'define("vs/basic-languages/_.contribution",["require","exports","vs/editor/editor.api"],',
+ );
extraContent.push(contribContents);
});
@@ -145,6 +201,181 @@ function addPluginContribs() {
});
}
+function ESM_release() {
+ return es.merge(
+ gulp.src('node_modules/monaco-editor-core/esm/**/*')
+ .pipe(ESM_addImportSuffix())
+ .pipe(ESM_addPluginContribs('release/esm'))
+ .pipe(gulp.dest('release/esm')),
+ ESM_pluginStreams('release/esm/')
+ )
+}
+
+/**
+ * Release plugins to `esm`.
+ */
+function ESM_pluginStreams(destinationPath) {
+ return es.merge(
+ metadata.METADATA.PLUGINS.map(function(plugin) {
+ return ESM_pluginStream(plugin, destinationPath);
+ })
+ );
+}
+
+/**
+ * Release a plugin to `esm`.
+ * Adds a dependency to 'vs/editor/editor.api' in contrib files in order for `monaco` to be defined.
+ * Rewrites imports for 'monaco-editor-core/**'
+ */
+function ESM_pluginStream(plugin, destinationPath) {
+ const DESTINATION = path.join(__dirname, destinationPath);
+ let pluginPath = plugin.paths[`esm`];
+ return (
+ gulp.src([
+ pluginPath + '/**/*'
+ ])
+ .pipe(es.through(function(data) {
+ if (!/\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ let contents = data.contents.toString();
+
+ const info = ts.preProcessFile(contents);
+ for (let i = info.importedFiles.length - 1; i >= 0; i--) {
+ const importText = info.importedFiles[i].fileName;
+ const pos = info.importedFiles[i].pos;
+ const end = info.importedFiles[i].end;
+
+ if (!/(^\.\/)|(^\.\.\/)/.test(importText)) {
+ // non-relative import
+ if (!/^monaco-editor-core/.test(importText)) {
+ console.error(`Non-relative import for unknown module: ${importText} in ${data.path}`);
+ process.exit(0);
+ }
+
+ const myFileDestPath = path.join(DESTINATION, plugin.modulePrefix, data.relative);
+ const importFilePath = path.join(DESTINATION, importText.substr('monaco-editor-core/esm/'.length));
+ let relativePath = path.relative(path.dirname(myFileDestPath), importFilePath);
+ if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
+ relativePath = './' + relativePath;
+ }
+
+ contents = (
+ contents.substring(0, pos + 1)
+ + relativePath
+ + contents.substring(end + 1)
+ );
+ }
+ }
+
+ data.contents = new Buffer(contents);
+ this.emit('data', data);
+ }))
+ .pipe(es.through(function(data) {
+ if (!/monaco\.contribution\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ const myFileDestPath = path.join(DESTINATION, plugin.modulePrefix, data.relative);
+ const apiFilePath = path.join(DESTINATION, 'vs/editor/editor.api');
+ let relativePath = path.relative(path.dirname(myFileDestPath), apiFilePath);
+ if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
+ relativePath = './' + relativePath;
+ }
+
+ let contents = data.contents.toString();
+ contents = (
+ `import '${relativePath}';\n` +
+ contents
+ );
+
+ data.contents = new Buffer(contents);
+
+ this.emit('data', data);
+ }))
+ .pipe(ESM_addImportSuffix())
+ .pipe(gulp.dest(destinationPath + plugin.modulePrefix))
+ );
+}
+
+function ESM_addImportSuffix() {
+ return es.through(function(data) {
+ if (!/\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ let contents = data.contents.toString();
+
+ const info = ts.preProcessFile(contents);
+ for (let i = info.importedFiles.length - 1; i >= 0; i--) {
+ const importText = info.importedFiles[i].fileName;
+ const pos = info.importedFiles[i].pos;
+ const end = info.importedFiles[i].end;
+
+ if (/\.css$/.test(importText)) {
+ continue;
+ }
+
+ contents = (
+ contents.substring(0, pos + 1)
+ + importText + '.js'
+ + contents.substring(end + 1)
+ );
+ }
+
+ data.contents = new Buffer(contents);
+ this.emit('data', data);
+ });
+}
+
+/**
+ * - Rename esm/vs/editor/editor.main.js to esm/vs/editor/edcore.main.js
+ * - Create esm/vs/editor/editor.main.js that that stiches things together
+ */
+function ESM_addPluginContribs(dest) {
+ const DESTINATION = path.join(__dirname, dest);
+ return es.through(function(data) {
+ if (!/editor\.main\.js$/.test(data.path)) {
+ this.emit('data', data);
+ return;
+ }
+
+ this.emit('data', new File({
+ path: data.path.replace(/editor\.main/, 'edcore.main'),
+ base: data.base,
+ contents: data.contents
+ }));
+
+ const mainFileDestPath = path.join(DESTINATION, 'vs/editor/editor.main.js');
+ let mainFileImports = [];
+ metadata.METADATA.PLUGINS.forEach(function(plugin) {
+ const contribDestPath = path.join(DESTINATION, plugin.contrib);
+
+ let relativePath = path.relative(path.dirname(mainFileDestPath), contribDestPath);
+ if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
+ relativePath = './' + relativePath;
+ }
+
+ mainFileImports.push(relativePath);
+ });
+
+ let mainFileContents = (
+ mainFileImports.map((name) => `import '${name}';`).join('\n')
+ + `\n\nexport * from './edcore.main';`
+ );
+
+ this.emit('data', new File({
+ path: data.path,
+ base: data.base,
+ contents: new Buffer(mainFileContents)
+ }));
+ });
+}
+
/**
* Edit monaco.d.ts:
* - append monaco.d.ts from plugins
@@ -159,7 +390,8 @@ function addPluginDTS() {
var extraContent = [];
metadata.METADATA.PLUGINS.forEach(function(plugin) {
- var dtsPath = path.join(plugin.paths.npm, 'monaco.d.ts');
+ var pluginPath = plugin.paths[`npm/min`]; // npm/dev or npm/min
+ var dtsPath = path.join(pluginPath, '../monaco.d.ts');
try {
extraContent.push(fs.readFileSync(dtsPath).toString());
} catch (err) {
diff --git a/metadata.js b/metadata.js
index b87aee0e..d9e7f34b 100644
--- a/metadata.js
+++ b/metadata.js
@@ -1,60 +1,76 @@
-(function() {
+(function () {
var METADATA = {
CORE: {
paths: {
- npm: 'node_modules/monaco-editor-core/min/vs',
- // npm: 'node_modules/monaco-editor-core/dev/vs',
- dev: '/vscode/out/vs',
+ src: '/vscode/out/vs',
+ 'npm/dev': 'node_modules/monaco-editor-core/dev/vs',
+ 'npm/min': 'node_modules/monaco-editor-core/min/vs',
built: '/vscode/out-monaco-editor-core/min/vs',
releaseDev: 'release/dev/vs',
releaseMin: 'release/min/vs',
}
},
- PLUGINS: [{
- name: 'monaco-typescript',
- contrib: 'vs/language/typescript/src/monaco.contribution',
- modulePrefix: 'vs/language/typescript',
- thirdPartyNotices: 'node_modules/monaco-typescript/ThirdPartyNotices.txt',
- paths: {
- npm: 'node_modules/monaco-typescript/release',
- dev: '/monaco-typescript/out'
+ PLUGINS: [
+ {
+ name: 'monaco-typescript',
+ contrib: 'vs/language/typescript/monaco.contribution',
+ modulePrefix: 'vs/language/typescript',
+ thirdPartyNotices: 'node_modules/monaco-typescript/ThirdPartyNotices.txt',
+ paths: {
+ src: '/monaco-typescript/release/dev',
+ 'npm/dev': 'node_modules/monaco-typescript/release/dev',
+ 'npm/min': 'node_modules/monaco-typescript/release/min',
+ esm: 'node_modules/monaco-typescript/release/esm',
+ }
+ },
+ {
+ name: 'monaco-css',
+ contrib: 'vs/language/css/monaco.contribution',
+ modulePrefix: 'vs/language/css',
+ paths: {
+ src: '/monaco-css/release/dev',
+ 'npm/dev': 'node_modules/monaco-css/release/dev',
+ 'npm/min': 'node_modules/monaco-css/release/min',
+ esm: 'node_modules/monaco-css/release/esm',
+ }
+ },
+ {
+ name: 'monaco-json',
+ contrib: 'vs/language/json/monaco.contribution',
+ modulePrefix: 'vs/language/json',
+ paths: {
+ src: '/monaco-json/release/dev',
+ 'npm/dev': 'node_modules/monaco-json/release/dev',
+ 'npm/min': 'node_modules/monaco-json/release/min',
+ esm: 'node_modules/monaco-json/release/esm',
+ }
+ },
+ {
+ name: 'monaco-html',
+ contrib: 'vs/language/html/monaco.contribution',
+ modulePrefix: 'vs/language/html',
+ thirdPartyNotices: 'node_modules/monaco-html/ThirdPartyNotices.txt',
+ paths: {
+ src: '/monaco-html/release/dev',
+ 'npm/dev': 'node_modules/monaco-html/release/dev',
+ 'npm/min': 'node_modules/monaco-html/release/min',
+ esm: 'node_modules/monaco-html/release/esm',
+ }
+ },
+ {
+ name: 'monaco-languages',
+ contrib: 'vs/basic-languages/monaco.contribution',
+ modulePrefix: 'vs/basic-languages',
+ thirdPartyNotices: 'node_modules/monaco-languages/ThirdPartyNotices.txt',
+ paths: {
+ src: '/monaco-languages/release/dev',
+ 'npm/dev': 'node_modules/monaco-languages/release/dev',
+ 'npm/min': 'node_modules/monaco-languages/release/min',
+ esm: 'node_modules/monaco-languages/release/esm',
+ }
}
- },{
- name: 'monaco-css',
- contrib: 'vs/language/css/monaco.contribution',
- modulePrefix: 'vs/language/css',
- paths: {
- npm: 'node_modules/monaco-css/release/min',
- dev: '/monaco-css/release/dev'
- }
- },{
- name: 'monaco-json',
- contrib: 'vs/language/json/monaco.contribution',
- modulePrefix: 'vs/language/json',
- paths: {
- npm: 'node_modules/monaco-json/release/min',
- dev: '/monaco-json/release/dev'
- }
- },{
- name: 'monaco-html',
- contrib: 'vs/language/html/monaco.contribution',
- modulePrefix: 'vs/language/html',
- thirdPartyNotices: 'node_modules/monaco-html/ThirdPartyNotices.txt',
- paths: {
- npm: 'node_modules/monaco-html/release/min',
- dev: '/monaco-html/release/dev'
- }
- },{
- name: 'monaco-languages',
- contrib: 'vs/basic-languages/src/monaco.contribution',
- modulePrefix: 'vs/basic-languages',
- thirdPartyNotices: 'node_modules/monaco-languages/ThirdPartyNotices.txt',
- paths: {
- npm: 'node_modules/monaco-languages/release',
- dev: '/monaco-languages/out'
- }
- }]
+ ]
}
if (typeof exports !== 'undefined') {
diff --git a/monaco.d.ts b/monaco.d.ts
index ade5dcfa..645b69e9 100644
--- a/monaco.d.ts
+++ b/monaco.d.ts
@@ -1,6 +1,6 @@
/*!-----------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
- * Type definitions for monaco-editor v0.10.0
+ * Type definitions for monaco-editor v0.10.1
* Released under the MIT license
*-----------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------
@@ -10,16 +10,7 @@
declare module monaco {
- 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;
- }
+ type Thenable = PromiseLike;
export interface IDisposable {
dispose(): void;
@@ -48,59 +39,50 @@ declare module monaco {
- /**
- * The value callback to complete a promise
- */
- export interface TValueCallback {
- (value: T | Thenable): void;
- }
+ export type TValueCallback = (value: T | PromiseLike) => void;
+
+ export type ProgressCallback = (progress: TProgress) => void;
- export interface ProgressCallback {
- (progress: any): any;
- }
+ export class Promise {
+ constructor(
+ executor: (
+ resolve: (value: T | PromiseLike) => void,
+ reject: (reason: any) => void,
+ progress: (progress: TProgress) => void) => void,
+ oncancel?: () => void);
+ public then(
+ onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,
+ onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,
+ onprogress?: (progress: TProgress) => void): Promise;
- /**
- * A Promise implementation that supports progress and cancelation.
- */
- export class Promise {
+ public done(
+ onfulfilled?: (value: T) => void,
+ onrejected?: (reason: any) => void,
+ onprogress?: (progress: TProgress) => void): void;
- constructor(init: (complete: TValueCallback, error: (err: any) => void, progress: ProgressCallback) => void, oncancel?: any);
-
- public then(success?: (value: V) => Promise, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise, error?: (err: any) => U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise, error?: (err: any) => void, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => void, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => void, progress?: ProgressCallback): Promise;
-
- public done(success?: (value: V) => void, error?: (err: any) => any, progress?: ProgressCallback): void;
public cancel(): void;
public static as(value: null): Promise;
public static as(value: undefined): Promise;
- public static as(value: Promise): Promise;
- public static as(value: Thenable): Thenable;
- public static as(value: ValueType): Promise;
+ public static as(value: PromiseLike): PromiseLike;
+ public static as>(value: SomePromise): SomePromise;
+ public static as(value: T): Promise;
+
+ public static is(value: any): value is PromiseLike;
- public static is(value: any): value is Thenable;
public static timeout(delay: number): Promise;
- public static join(promises: Promise[]): Promise;
- public static join(promises: Thenable[]): Thenable;
- public static join(promises: { [n: string]: Promise }): Promise<{ [n: string]: ValueType }>;
- public static any(promises: Promise[]): Promise<{ key: string; value: Promise; }>;
- public static wrap(value: Thenable): Promise;
- public static wrap(value: ValueType): Promise;
+ public static join(promises: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>;
+ public static join(promises: (T | PromiseLike)[]): Promise;
+ public static join(promises: { [n: string]: T | PromiseLike }): Promise<{ [n: string]: T }>;
- public static wrapError(error: Error): Promise;
+ public static any(promises: (T | PromiseLike)[]): Promise<{ key: string; value: Promise; }>;
+
+ public static wrap(value: T | PromiseLike): Promise;
+
+ public static wrapError(error: Error): Promise;
}
export class CancellationTokenSource {
@@ -133,7 +115,7 @@ declare module monaco {
*
*
*/
- export class Uri {
+ export class Uri implements UriComponents {
static isUri(thing: any): thing is Uri;
/**
* scheme is the 'http' part of 'http://www.msft.com/some/path?query#fragment'.
@@ -185,8 +167,16 @@ declare module monaco {
* @param skipEncoding Do not encode the result, default is `false`
*/
toString(skipEncoding?: boolean): string;
- toJSON(): any;
- static revive(data: any): Uri;
+ toJSON(): object;
+ static revive(data: UriComponents | any): Uri;
+ }
+
+ export interface UriComponents {
+ scheme: string;
+ authority: string;
+ path: string;
+ query: string;
+ fragment: string;
}
/**
@@ -377,15 +367,10 @@ declare module monaco {
static readonly WinCtrl: number;
static chord(firstPart: number, secondPart: number): number;
}
- /**
- * 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 | {
- readonly language: string;
- readonly value: string;
- };
+ export interface IMarkdownString {
+ value: string;
+ isTrusted?: boolean;
+ }
export interface IKeyboardEvent {
readonly browserEvent: KeyboardEvent;
@@ -606,10 +591,6 @@ declare module monaco {
* Return the start position (which will be before or equal to the end position)
*/
getStartPosition(): Position;
- /**
- * Clone this range.
- */
- cloneRange(): Range;
/**
* Transform to a user presentable string representation.
*/
@@ -807,7 +788,6 @@ declare module monaco.editor {
export function createDiffEditor(domElement: HTMLElement, options?: IDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;
export interface IDiffNavigator {
- revealFirst: boolean;
canNavigate(): boolean;
next(): void;
previous(): void;
@@ -826,21 +806,21 @@ declare module monaco.editor {
* Create a new editor model.
* You can specify the language that should be set for this model or let the language be inferred from the `uri`.
*/
- export function createModel(value: string, language?: string, uri?: Uri): IModel;
+ export function createModel(value: string, language?: string, uri?: Uri): ITextModel;
/**
* Change the language for a model.
*/
- export function setModelLanguage(model: IModel, language: string): void;
+ export function setModelLanguage(model: ITextModel, language: string): void;
/**
* Set the markers for a model.
*/
- export function setModelMarkers(model: IModel, owner: string, markers: IMarkerData[]): void;
+ export function setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void;
/**
- * Get markers for owner ant/or resource
- * @returns {IMarkerData[]} list of markers
+ * Get markers for owner and/or resource
+ * @returns {IMarker[]} list of markers
* @param filter
*/
export function getModelMarkers(filter: {
@@ -852,31 +832,31 @@ declare module monaco.editor {
/**
* Get the model that has `uri` if it exists.
*/
- export function getModel(uri: Uri): IModel;
+ export function getModel(uri: Uri): ITextModel;
/**
* Get all the created models.
*/
- export function getModels(): IModel[];
+ export function getModels(): ITextModel[];
/**
* Emitted when a model is created.
* @event
*/
- export function onDidCreateModel(listener: (model: IModel) => void): IDisposable;
+ export function onDidCreateModel(listener: (model: ITextModel) => void): IDisposable;
/**
* Emitted right before a model is disposed.
* @event
*/
- export function onWillDisposeModel(listener: (model: IModel) => void): IDisposable;
+ export function onWillDisposeModel(listener: (model: ITextModel) => void): IDisposable;
/**
* Emitted when a different language is set to a model.
* @event
*/
export function onDidChangeModelLanguage(listener: (e: {
- readonly model: IModel;
+ readonly model: ITextModel;
readonly oldLanguage: string;
}) => void): IDisposable;
@@ -899,7 +879,7 @@ declare module monaco.editor {
/**
* Colorize a line in a model.
*/
- export function colorizeModelLine(model: IModel, lineNumber: number, tabSize?: number): string;
+ export function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize?: number): string;
/**
* Tokenize `text` using language `languageId`
@@ -971,6 +951,51 @@ declare module monaco.editor {
label?: string;
}
+ /**
+ * Description of an action contribution
+ */
+ export interface IActionDescriptor {
+ /**
+ * An unique identifier of the contributed action.
+ */
+ id: string;
+ /**
+ * A label of the action that will be presented to the user.
+ */
+ label: string;
+ /**
+ * Precondition rule.
+ */
+ precondition?: string;
+ /**
+ * An array of keybindings for the action.
+ */
+ keybindings?: number[];
+ /**
+ * The keybinding rule (condition on top of precondition).
+ */
+ keybindingContext?: string;
+ /**
+ * Control if the action should show up in the context menu and where.
+ * The context menu of the editor has these default:
+ * navigation - The navigation group comes first in all cases.
+ * 1_modification - This group comes next and contains commands that modify your code.
+ * 9_cutcopypaste - The last default group with the basic editing commands.
+ * You can also create your own group.
+ * Defaults to null (don't show in context menu).
+ */
+ contextMenuGroupId?: string;
+ /**
+ * Control the order in the context menu group.
+ */
+ contextMenuOrder?: number;
+ /**
+ * Method that will be executed when the action is triggered.
+ * @param editor The editor instance is passed in as a convinience
+ */
+ run(editor: ICodeEditor): void | Promise;
+ }
+
/**
* The options to create an editor.
*/
@@ -978,7 +1003,7 @@ declare module monaco.editor {
/**
* The initial model associated with this code editor.
*/
- model?: IModel;
+ model?: ITextModel;
/**
* The initial value of the auto created model in the editor.
* To not create automatically a model, use `model: null`.
@@ -1142,11 +1167,11 @@ declare module monaco.editor {
/**
* Message to be rendered when hovering over the glyph margin decoration.
*/
- glyphMarginHoverMessage?: MarkedString | MarkedString[];
+ glyphMarginHoverMessage?: IMarkdownString | IMarkdownString[];
/**
- * Array of MarkedString to render as the decoration message.
+ * Array of MarkdownString to render as the decoration message.
*/
- hoverMessage?: MarkedString | MarkedString[];
+ hoverMessage?: IMarkdownString | IMarkdownString[];
/**
* Should the decoration expand to encompass a whole line.
*/
@@ -1217,10 +1242,6 @@ declare module monaco.editor {
* Options associated with this decoration.
*/
readonly options: IModelDecorationOptions;
- /**
- * A flag describing if this is a problem decoration (e.g. warning/error).
- */
- readonly isForValidation: boolean;
}
/**
@@ -1301,70 +1322,6 @@ declare module monaco.editor {
minor: number;
}
- /**
- * A builder and helper for edit operations for a command.
- */
- export interface IEditOperationBuilder {
- /**
- * Add a new edit operation (a replace operation).
- * @param range The range to replace (delete). May be empty to represent a simple insert.
- * @param text The text to replace with. May be null to represent a simple delete.
- */
- addEditOperation(range: Range, text: string): void;
- /**
- * Add a new edit operation (a replace operation).
- * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`
- * @param range The range to replace (delete). May be empty to represent a simple insert.
- * @param text The text to replace with. May be null to represent a simple delete.
- */
- addTrackedEditOperation(range: Range, text: string): void;
- /**
- * Track `selection` when applying edit operations.
- * A best effort will be made to not grow/expand the selection.
- * An empty selection will clamp to a nearby character.
- * @param selection The selection to track.
- * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection
- * should clamp to the previous or the next character.
- * @return A unique identifer.
- */
- trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;
- }
-
- /**
- * A helper for computing cursor state after a command.
- */
- export interface ICursorStateComputerData {
- /**
- * Get the inverse edit operations of the added edit operations.
- */
- getInverseEditOperations(): IIdentifiedSingleEditOperation[];
- /**
- * Get a previously tracked selection.
- * @param id The unique identifier returned by `trackSelection`.
- * @return The selection.
- */
- getTrackedSelection(id: string): Selection;
- }
-
- /**
- * A command that modifies text / cursor state on a model.
- */
- export interface ICommand {
- /**
- * Get the edit operations needed to execute this command.
- * @param model The model the command will execute on.
- * @param builder A helper to collect the needed edit operations and to track selections.
- */
- getEditOperations(model: ITokenizedModel, builder: IEditOperationBuilder): void;
- /**
- * Compute the cursor state after the edit operations were applied.
- * @param model The model the commad has executed on.
- * @param helper A helper to get inverse edit operations and to get previously tracked selections.
- * @return The cursor state after the command executed.
- */
- computeCursorState(model: ITokenizedModel, helper: ICursorStateComputerData): Selection;
- }
-
/**
* A single edit operation, that acts as a simple replace.
* i.e. Replace text at `range` with `text` in model.
@@ -1389,10 +1346,6 @@ declare module monaco.editor {
* A single edit operation, that has an identifier.
*/
export interface IIdentifiedSingleEditOperation {
- /**
- * An identifier associated with this single edit operation.
- */
- identifier: ISingleEditOperationIdentifier;
/**
* The range to replace. This can be empty to emulate a simple insert.
*/
@@ -1405,12 +1358,7 @@ declare module monaco.editor {
* This indicates that this operation has "insert" semantics.
* i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.
*/
- forceMoveMarkers: boolean;
- /**
- * This indicates that this operation is inserting automatic whitespace
- * that can be removed on next model edit operation if `config.trimAutoWhitespace` is true.
- */
- isAutoWhitespaceEdit?: boolean;
+ forceMoveMarkers?: boolean;
}
/**
@@ -1437,10 +1385,35 @@ declare module monaco.editor {
trimAutoWhitespace?: boolean;
}
+ export class FindMatch {
+ _findMatchBrand: void;
+ readonly range: Range;
+ readonly matches: string[];
+ }
+
/**
- * A textual read-only model.
+ * Describes the behavior of decorations when typing/editing near their edges.
+ * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`
+ */
+ export enum TrackedRangeStickiness {
+ AlwaysGrowsWhenTypingAtEdges = 0,
+ NeverGrowsWhenTypingAtEdges = 1,
+ GrowsOnlyWhenTypingBefore = 2,
+ GrowsOnlyWhenTypingAfter = 3,
+ }
+
+ /**
+ * A model.
*/
export interface ITextModel {
+ /**
+ * Gets the resource associated with this editor model.
+ */
+ readonly uri: Uri;
+ /**
+ * A unique identifier associated with this model.
+ */
+ readonly id: string;
/**
* Get the resolved options for this model.
*/
@@ -1564,7 +1537,7 @@ declare module monaco.editor {
*/
getFullModelRange(): Range;
/**
- * Returns iff the model was disposed or not.
+ * Returns if the model was disposed or not.
*/
isDisposed(): boolean;
/**
@@ -1578,7 +1551,7 @@ declare module monaco.editor {
* @param limitResultCount Limit the number of results
* @return The ranges where the matches are. It is empty if not matches have been found.
*/
- findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];
+ findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
/**
* Search the model.
* @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
@@ -1590,7 +1563,7 @@ declare module monaco.editor {
* @param limitResultCount Limit the number of results
* @return The ranges where the matches are. It is empty if no matches have been found.
*/
- findMatches(searchString: string, searchScope: IRange, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];
+ findMatches(searchString: string, searchScope: IRange, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
/**
* Search the model for the next match. Loops to the beginning of the model if needed.
* @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
@@ -1601,7 +1574,7 @@ declare module monaco.editor {
* @param captureMatches The result will contain the captured groups.
* @return The range where the next match is. It is null if no next match has been found.
*/
- findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;
+ findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch;
/**
* Search the model for the previous match. Loops to the end of the model if needed.
* @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
@@ -1612,20 +1585,7 @@ declare module monaco.editor {
* @param captureMatches The result will contain the captured groups.
* @return The range where the previous match is. It is null if no previous match has been found.
*/
- findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;
- }
-
- export class FindMatch {
- _findMatchBrand: void;
- readonly range: Range;
- readonly matches: string[];
- }
-
- export interface IReadOnlyModel extends ITextModel {
- /**
- * Gets the resource associated with this editor model.
- */
- readonly uri: Uri;
+ findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch;
/**
* Get the language associated with this model.
*/
@@ -1644,12 +1604,6 @@ declare module monaco.editor {
* @return The word under or besides `position`. Will never be null.
*/
getWordUntilPosition(position: IPosition): IWordAtPosition;
- }
-
- /**
- * A model that is tokenized.
- */
- export interface ITokenizedModel extends ITextModel {
/**
* Get the language associated with this model.
*/
@@ -1668,29 +1622,6 @@ declare module monaco.editor {
* @return The word under or besides `position`. Will never be null.
*/
getWordUntilPosition(position: IPosition): IWordAtPosition;
- }
-
- /**
- * A model that can track markers.
- */
- export interface ITextModelWithMarkers extends ITextModel {
- }
-
- /**
- * Describes the behavior of decorations when typing/editing near their edges.
- * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`
- */
- export enum TrackedRangeStickiness {
- AlwaysGrowsWhenTypingAtEdges = 0,
- NeverGrowsWhenTypingAtEdges = 1,
- GrowsOnlyWhenTypingBefore = 2,
- GrowsOnlyWhenTypingAfter = 3,
- }
-
- /**
- * A model that can have decorations.
- */
- export interface ITextModelWithDecorations {
/**
* Perform a minimum ammount of operations, in order to transform the decorations
* identified by `oldDecorations` to the decorations described by `newDecorations`
@@ -1746,12 +1677,12 @@ declare module monaco.editor {
* @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
*/
getAllDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
- }
-
- /**
- * An editable text model.
- */
- export interface IEditableTextModel extends ITextModelWithMarkers {
+ /**
+ * Gets all the decorations that should be rendered in the overview ruler as an array.
+ * @param ownerId If set, it will ignore decorations belonging to other owners.
+ * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
+ */
+ getOverviewRulerDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
/**
* Normalize a string containing whitespace according to indentation rules (converts to spaces or to tabs).
*/
@@ -1790,12 +1721,6 @@ declare module monaco.editor {
* @return The inverse edit operations, that, when applied, will bring the model back to the previous state.
*/
applyEdits(operations: IIdentifiedSingleEditOperation[]): IIdentifiedSingleEditOperation[];
- }
-
- /**
- * A model.
- */
- export interface IModel extends IReadOnlyModel, IEditableTextModel, ITextModelWithMarkers, ITokenizedModel, ITextModelWithDecorations {
/**
* An event emitted when the contents of the model have changed.
* @event
@@ -1816,15 +1741,16 @@ declare module monaco.editor {
* @event
*/
onDidChangeLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the language configuration associated with the model has changed.
+ * @event
+ */
+ onDidChangeLanguageConfiguration(listener: (e: IModelLanguageConfigurationChangedEvent) => void): IDisposable;
/**
* An event emitted right before disposing the model.
* @event
*/
onWillDispose(listener: () => void): IDisposable;
- /**
- * A unique identifier associated with this model.
- */
- readonly id: string;
/**
* Destroy this model. This will unbind the model from the mode
* and make all necessary clean-up to release this object to the GC.
@@ -1832,6 +1758,70 @@ declare module monaco.editor {
dispose(): void;
}
+ /**
+ * A builder and helper for edit operations for a command.
+ */
+ export interface IEditOperationBuilder {
+ /**
+ * Add a new edit operation (a replace operation).
+ * @param range The range to replace (delete). May be empty to represent a simple insert.
+ * @param text The text to replace with. May be null to represent a simple delete.
+ */
+ addEditOperation(range: Range, text: string): void;
+ /**
+ * Add a new edit operation (a replace operation).
+ * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`
+ * @param range The range to replace (delete). May be empty to represent a simple insert.
+ * @param text The text to replace with. May be null to represent a simple delete.
+ */
+ addTrackedEditOperation(range: Range, text: string): void;
+ /**
+ * Track `selection` when applying edit operations.
+ * A best effort will be made to not grow/expand the selection.
+ * An empty selection will clamp to a nearby character.
+ * @param selection The selection to track.
+ * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection
+ * should clamp to the previous or the next character.
+ * @return A unique identifer.
+ */
+ trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;
+ }
+
+ /**
+ * A helper for computing cursor state after a command.
+ */
+ export interface ICursorStateComputerData {
+ /**
+ * Get the inverse edit operations of the added edit operations.
+ */
+ getInverseEditOperations(): IIdentifiedSingleEditOperation[];
+ /**
+ * Get a previously tracked selection.
+ * @param id The unique identifier returned by `trackSelection`.
+ * @return The selection.
+ */
+ getTrackedSelection(id: string): Selection;
+ }
+
+ /**
+ * A command that modifies text / cursor state on a model.
+ */
+ export interface ICommand {
+ /**
+ * Get the edit operations needed to execute this command.
+ * @param model The model the command will execute on.
+ * @param builder A helper to collect the needed edit operations and to track selections.
+ */
+ getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void;
+ /**
+ * Compute the cursor state after the edit operations were applied.
+ * @param model The model the commad has executed on.
+ * @param helper A helper to get inverse edit operations and to get previously tracked selections.
+ * @return The cursor state after the command executed.
+ */
+ computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection;
+ }
+
/**
* A model for the diff editor.
*/
@@ -1839,11 +1829,11 @@ declare module monaco.editor {
/**
* Original model.
*/
- original: IModel;
+ original: ITextModel;
/**
* Modified model.
*/
- modified: IModel;
+ modified: ITextModel;
}
/**
@@ -1892,63 +1882,11 @@ declare module monaco.editor {
readonly charChanges: ICharChange[];
}
- /**
- * Information about a line in the diff editor
- */
- export interface IDiffLineInformation {
- readonly equivalentLineNumber: number;
- }
-
export interface INewScrollPosition {
scrollLeft?: number;
scrollTop?: number;
}
- /**
- * Description of an action contribution
- */
- export interface IActionDescriptor {
- /**
- * An unique identifier of the contributed action.
- */
- id: string;
- /**
- * A label of the action that will be presented to the user.
- */
- label: string;
- /**
- * Precondition rule.
- */
- precondition?: string;
- /**
- * An array of keybindings for the action.
- */
- keybindings?: number[];
- /**
- * The keybinding rule (condition on top of precondition).
- */
- keybindingContext?: string;
- /**
- * Control if the action should show up in the context menu and where.
- * The context menu of the editor has these default:
- * navigation - The navigation group comes first in all cases.
- * 1_modification - This group comes next and contains commands that modify your code.
- * 9_cutcopypaste - The last default group with the basic editing commands.
- * You can also create your own group.
- * Defaults to null (don't show in context menu).
- */
- contextMenuGroupId?: string;
- /**
- * Control the order in the context menu group.
- */
- contextMenuOrder?: number;
- /**
- * Method that will be executed when the action is triggered.
- * @param editor The editor instance is passed in as a convinience
- */
- run(editor: ICommonCodeEditor): void | Promise;
- }
-
export interface IEditorAction {
readonly id: string;
readonly label: string;
@@ -1957,7 +1895,7 @@ declare module monaco.editor {
run(): Promise;
}
- export type IEditorModel = IModel | IDiffEditorModel;
+ export type IEditorModel = ITextModel | IDiffEditorModel;
/**
* A (serializable) state of the cursors.
@@ -2001,6 +1939,11 @@ declare module monaco.editor {
*/
export type IEditorViewState = ICodeEditorViewState | IDiffEditorViewState;
+ export const enum ScrollType {
+ Smooth = 0,
+ Immediate = 1,
+ }
+
/**
* An editor.
*/
@@ -2040,10 +1983,6 @@ declare module monaco.editor {
* Returns true if this editor has keyboard focus (e.g. cursor is blinking).
*/
isFocused(): boolean;
- /**
- * Returns all actions associated with this editor.
- */
- getActions(): IEditorAction[];
/**
* Returns all actions associated with this editor.
*/
@@ -2072,27 +2011,27 @@ declare module monaco.editor {
/**
* Scroll vertically as necessary and reveal a line.
*/
- revealLine(lineNumber: number): void;
+ revealLine(lineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal a line centered vertically.
*/
- revealLineInCenter(lineNumber: number): void;
+ revealLineInCenter(lineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal a line centered vertically only if it lies outside the viewport.
*/
- revealLineInCenterIfOutsideViewport(lineNumber: number): void;
+ revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a position.
*/
- revealPosition(position: IPosition, revealVerticalInCenter?: boolean, revealHorizontal?: boolean): void;
+ revealPosition(position: IPosition, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a position centered vertically.
*/
- revealPositionInCenter(position: IPosition): void;
+ revealPositionInCenter(position: IPosition, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a position centered vertically only if it lies outside the viewport.
*/
- revealPositionInCenterIfOutsideViewport(position: IPosition): void;
+ revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType?: ScrollType): void;
/**
* Returns the primary selection of the editor.
*/
@@ -2129,31 +2068,31 @@ declare module monaco.editor {
/**
* Scroll vertically as necessary and reveal lines.
*/
- revealLines(startLineNumber: number, endLineNumber: number): void;
+ revealLines(startLineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal lines centered vertically.
*/
- revealLinesInCenter(lineNumber: number, endLineNumber: number): void;
+ revealLinesInCenter(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal lines centered vertically only if it lies outside the viewport.
*/
- revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number): void;
+ revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range.
*/
- revealRange(range: IRange): void;
+ revealRange(range: IRange, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range centered vertically.
*/
- revealRangeInCenter(range: IRange): void;
+ revealRangeInCenter(range: IRange, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range at the top of the viewport.
*/
- revealRangeAtTop(range: IRange): void;
+ revealRangeAtTop(range: IRange, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.
*/
- revealRangeInCenterIfOutsideViewport(range: IRange): void;
+ revealRangeInCenterIfOutsideViewport(range: IRange, scrollType?: ScrollType): void;
/**
* Directly trigger a handler or an editor action.
* @param source The source of the call.
@@ -2198,233 +2137,10 @@ declare module monaco.editor {
restoreViewState?(state: any): void;
}
- export interface ICommonCodeEditor extends IEditor {
- /**
- * An event emitted when the content of the current model has changed.
- * @event
- */
- onDidChangeModelContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the language of the current model has changed.
- * @event
- */
- onDidChangeModelLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the options of the current model has changed.
- * @event
- */
- onDidChangeModelOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)
- * @event
- */
- onDidChangeConfiguration(listener: (e: IConfigurationChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the cursor position has changed.
- * @event
- */
- onDidChangeCursorPosition(listener: (e: ICursorPositionChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the cursor selection has changed.
- * @event
- */
- onDidChangeCursorSelection(listener: (e: ICursorSelectionChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).
- * @event
- */
- onDidChangeModel(listener: (e: IModelChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the decorations of the current model have changed.
- * @event
- */
- onDidChangeModelDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the text inside this editor gained focus (i.e. cursor blinking).
- * @event
- */
- onDidFocusEditorText(listener: () => void): IDisposable;
- /**
- * An event emitted when the text inside this editor lost focus.
- * @event
- */
- onDidBlurEditorText(listener: () => void): IDisposable;
- /**
- * An event emitted when the text inside this editor or an editor widget gained focus.
- * @event
- */
- onDidFocusEditor(listener: () => void): IDisposable;
- /**
- * An event emitted when the text inside this editor or an editor widget lost focus.
- * @event
- */
- onDidBlurEditor(listener: () => void): IDisposable;
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): ICodeEditorViewState;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: ICodeEditorViewState): void;
- /**
- * Returns true if this editor or one of its widgets has keyboard focus.
- */
- hasWidgetFocus(): boolean;
- /**
- * Get a contribution of this editor.
- * @id Unique identifier of the contribution.
- * @return The contribution or null if contribution not found.
- */
- getContribution(id: string): T;
- /**
- * Type the getModel() of IEditor.
- */
- getModel(): IModel;
- /**
- * Returns the current editor's configuration
- */
- getConfiguration(): InternalEditorOptions;
- /**
- * Get value of the current model attached to this editor.
- * @see IModel.getValue
- */
- getValue(options?: {
- preserveBOM: boolean;
- lineEnding: string;
- }): string;
- /**
- * Set the value of the current model attached to this editor.
- * @see IModel.setValue
- */
- setValue(newValue: string): void;
- /**
- * Get the scrollWidth of the editor's viewport.
- */
- getScrollWidth(): number;
- /**
- * Get the scrollLeft of the editor's viewport.
- */
- getScrollLeft(): number;
- /**
- * Get the scrollHeight of the editor's viewport.
- */
- getScrollHeight(): number;
- /**
- * Get the scrollTop of the editor's viewport.
- */
- getScrollTop(): number;
- /**
- * Change the scrollLeft of the editor's viewport.
- */
- setScrollLeft(newScrollLeft: number): void;
- /**
- * Change the scrollTop of the editor's viewport.
- */
- setScrollTop(newScrollTop: number): void;
- /**
- * Change the scroll position of the editor's viewport.
- */
- setScrollPosition(position: INewScrollPosition): void;
- /**
- * Get an action that is a contribution to this editor.
- * @id Unique identifier of the contribution.
- * @return The action or null if action not found.
- */
- getAction(id: string): IEditorAction;
- /**
- * Execute a command on the editor.
- * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
- * @param source The source of the call.
- * @param command The command to execute
- */
- executeCommand(source: string, command: ICommand): void;
- /**
- * Push an "undo stop" in the undo-redo stack.
- */
- pushUndoStop(): boolean;
- /**
- * Execute edits on the editor.
- * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
- * @param source The source of the call.
- * @param edits The edits to execute.
- * @param endCursoState Cursor state after the edits were applied.
- */
- executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean;
- /**
- * Execute multiple (concommitent) commands on the editor.
- * @param source The source of the call.
- * @param command The commands to execute
- */
- executeCommands(source: string, commands: ICommand[]): void;
- /**
- * Get all the decorations on a line (filtering out decorations from other editors).
- */
- getLineDecorations(lineNumber: number): IModelDecoration[];
- /**
- * All decorations added through this call will get the ownerId of this editor.
- * @see IModel.deltaDecorations
- */
- deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
- /**
- * Get the layout info for the editor.
- */
- getLayoutInfo(): EditorLayoutInfo;
- }
-
- export interface ICommonDiffEditor extends IEditor {
- /**
- * An event emitted when the diff information computed by this diff editor has been updated.
- * @event
- */
- onDidUpdateDiff(listener: () => void): IDisposable;
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): IDiffEditorViewState;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: IDiffEditorViewState): void;
- /**
- * Type the getModel() of IEditor.
- */
- getModel(): IDiffEditorModel;
- /**
- * Get the `original` editor.
- */
- getOriginalEditor(): ICommonCodeEditor;
- /**
- * Get the `modified` editor.
- */
- getModifiedEditor(): ICommonCodeEditor;
- /**
- * Get the computed diff information.
- */
- getLineChanges(): ILineChange[];
- /**
- * Get information based on computed diff about a line number from the original model.
- * If the diff computation is not finished or the model is missing, will return null.
- */
- getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation;
- /**
- * Get information based on computed diff about a line number from the modified model.
- * If the diff computation is not finished or the model is missing, will return null.
- */
- getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation;
- /**
- * @see ICodeEditor.getValue
- */
- getValue(options?: {
- preserveBOM: boolean;
- lineEnding: string;
- }): string;
- }
-
/**
* The type of the `IEditor`.
*/
- export var EditorType: {
+ export const EditorType: {
ICodeEditor: string;
IDiffEditor: string;
};
@@ -2443,6 +2159,12 @@ declare module monaco.editor {
readonly newLanguage: string;
}
+ /**
+ * An event describing that the language configuration associated with a model has changed.
+ */
+ export interface IModelLanguageConfigurationChangedEvent {
+ }
+
export interface IModelContentChange {
/**
* The range that got replaced.
@@ -2490,18 +2212,6 @@ declare module monaco.editor {
* An event describing that model decorations have changed.
*/
export interface IModelDecorationsChangedEvent {
- /**
- * Lists of ids for added decorations.
- */
- readonly addedDecorations: string[];
- /**
- * Lists of ids for changed decorations.
- */
- readonly changedDecorations: string[];
- /**
- * List of ids for removed decorations.
- */
- readonly removedDecorations: string[];
}
/**
@@ -2690,6 +2400,11 @@ declare module monaco.editor {
* Defaults to false.
*/
enabled?: boolean;
+ /**
+ * Control the side of the minimap in editor.
+ * Defaults to 'right'.
+ */
+ side?: 'right' | 'left';
/**
* Control the rendering of the minimap slider.
* Defaults to 'mouseover'.
@@ -2707,6 +2422,17 @@ declare module monaco.editor {
maxColumn?: number;
}
+ /**
+ * Configuration options for editor minimap
+ */
+ export interface IEditorLightbulbOptions {
+ /**
+ * Enable the lightbulb code action.
+ * Defaults to true.
+ */
+ enabled?: boolean;
+ }
+
/**
* Configuration options for the editor.
*/
@@ -2737,7 +2463,7 @@ declare module monaco.editor {
* Otherwise, line numbers will not be rendered.
* Defaults to true.
*/
- lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);
+ lineNumbers?: 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
/**
* Should the corresponding line be selected when clicking on the line number?
* Defaults to true.
@@ -2822,6 +2548,10 @@ declare module monaco.editor {
* Defaults to 'line'.
*/
cursorStyle?: string;
+ /**
+ * Control the width of the cursor when cursorStyle is set to 'line'
+ */
+ cursorWidth?: number;
/**
* Enable font ligatures.
* Defaults to false.
@@ -2848,6 +2578,11 @@ declare module monaco.editor {
* Defaults to true.
*/
scrollBeyondLastLine?: boolean;
+ /**
+ * Enable that the editor animates scrolling to a position.
+ * Defaults to false.
+ */
+ smoothScrolling?: boolean;
/**
* Enable that the editor will install an interval to check if its container dom node size has changed.
* Enabling this might have a severe performance impact.
@@ -2913,6 +2648,10 @@ declare module monaco.editor {
* Defaults to true.
*/
links?: boolean;
+ /**
+ * Enable inline color decorators and color picker rendering.
+ */
+ colorDecorators?: boolean;
/**
* Enable custom contextmenu.
* Defaults to true.
@@ -2990,7 +2729,7 @@ declare module monaco.editor {
* Accept suggestions on ENTER.
* Defaults to 'on'.
*/
- acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';
+ acceptSuggestionOnEnter?: boolean | 'on' | 'smart' | 'off';
/**
* Accept suggestions on provider defined characters.
* Defaults to true.
@@ -3008,6 +2747,10 @@ declare module monaco.editor {
* Enable word based suggestions. Defaults to 'true'
*/
wordBasedSuggestions?: boolean;
+ /**
+ * The history mode for suggestions.
+ */
+ suggestSelection?: string;
/**
* The font size for the suggest widget.
* Defaults to the editor font size.
@@ -3033,6 +2776,10 @@ declare module monaco.editor {
* Defaults to true.
*/
codeLens?: boolean;
+ /**
+ * Control the behavior and rendering of the code action lightbulb.
+ */
+ lightbulb?: IEditorLightbulbOptions;
/**
* Enable code folding
* Defaults to true in vscode and to false in monaco-editor.
@@ -3228,6 +2975,7 @@ declare module monaco.editor {
export interface InternalEditorMinimapOptions {
readonly enabled: boolean;
+ readonly side: 'right' | 'left';
readonly showSlider: 'always' | 'mouseover';
readonly renderCharacters: boolean;
readonly maxColumn: number;
@@ -3250,14 +2998,21 @@ declare module monaco.editor {
readonly wordWrapBreakObtrusiveCharacters: string;
}
+ export const enum RenderLineNumbersType {
+ Off = 0,
+ On = 1,
+ Relative = 2,
+ Interval = 3,
+ Custom = 4,
+ }
+
export interface InternalEditorViewOptions {
readonly extraEditorClassName: string;
readonly disableMonospaceOptimizations: boolean;
readonly rulers: number[];
readonly ariaLabel: string;
- readonly renderLineNumbers: boolean;
+ readonly renderLineNumbers: RenderLineNumbersType;
readonly renderCustomLineNumbers: (lineNumber: number) => string;
- readonly renderRelativeLineNumbers: boolean;
readonly selectOnLineNumbers: boolean;
readonly glyphMargin: boolean;
readonly revealHorizontalRightPadding: number;
@@ -3267,8 +3022,10 @@ declare module monaco.editor {
readonly cursorBlinking: TextEditorCursorBlinkingStyle;
readonly mouseWheelZoom: boolean;
readonly cursorStyle: TextEditorCursorStyle;
+ readonly cursorWidth: number;
readonly hideCursorInOverviewRuler: boolean;
readonly scrollBeyondLastLine: boolean;
+ readonly smoothScrolling: boolean;
readonly stopRenderingLineAfter: number;
readonly renderWhitespace: 'none' | 'boundary' | 'all';
readonly renderControlCharacters: boolean;
@@ -3300,6 +3057,7 @@ declare module monaco.editor {
readonly acceptSuggestionOnCommitCharacter: boolean;
readonly snippetSuggestions: 'top' | 'bottom' | 'inline' | 'none';
readonly wordBasedSuggestions: boolean;
+ readonly suggestSelection: 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix';
readonly suggestFontSize: number;
readonly suggestLineHeight: number;
readonly selectionHighlight: boolean;
@@ -3309,6 +3067,8 @@ declare module monaco.editor {
readonly showFoldingControls: 'always' | 'mouseover';
readonly matchBrackets: boolean;
readonly find: InternalEditorFindOptions;
+ readonly colorDecorators: boolean;
+ readonly lightbulbEnabled: boolean;
}
/**
@@ -3418,6 +3178,10 @@ declare module monaco.editor {
* The height of the content (actual height)
*/
readonly contentHeight: number;
+ /**
+ * The position for the minimap
+ */
+ readonly minimapLeft: number;
/**
* The width of the minimap
*/
@@ -3749,7 +3513,72 @@ declare module monaco.editor {
/**
* A rich code editor.
*/
- export interface ICodeEditor extends ICommonCodeEditor {
+ export interface ICodeEditor extends IEditor {
+ /**
+ * An event emitted when the content of the current model has changed.
+ * @event
+ */
+ onDidChangeModelContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the language of the current model has changed.
+ * @event
+ */
+ onDidChangeModelLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the language configuration of the current model has changed.
+ * @event
+ */
+ onDidChangeModelLanguageConfiguration(listener: (e: IModelLanguageConfigurationChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the options of the current model has changed.
+ * @event
+ */
+ onDidChangeModelOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)
+ * @event
+ */
+ onDidChangeConfiguration(listener: (e: IConfigurationChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the cursor position has changed.
+ * @event
+ */
+ onDidChangeCursorPosition(listener: (e: ICursorPositionChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the cursor selection has changed.
+ * @event
+ */
+ onDidChangeCursorSelection(listener: (e: ICursorSelectionChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).
+ * @event
+ */
+ onDidChangeModel(listener: (e: IModelChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the decorations of the current model have changed.
+ * @event
+ */
+ onDidChangeModelDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor gained focus (i.e. cursor blinking).
+ * @event
+ */
+ onDidFocusEditorText(listener: () => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor lost focus.
+ * @event
+ */
+ onDidBlurEditorText(listener: () => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor or an editor widget gained focus.
+ * @event
+ */
+ onDidFocusEditor(listener: () => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor or an editor widget lost focus.
+ * @event
+ */
+ onDidBlurEditor(listener: () => void): IDisposable;
/**
* An event emitted on a "mouseup".
* @event
@@ -3795,6 +3624,134 @@ declare module monaco.editor {
* @event
*/
onDidScrollChange(listener: (e: IScrollEvent) => void): IDisposable;
+ /**
+ * Saves current view state of the editor in a serializable object.
+ */
+ saveViewState(): ICodeEditorViewState;
+ /**
+ * Restores the view state of the editor from a serializable object generated by `saveViewState`.
+ */
+ restoreViewState(state: ICodeEditorViewState): void;
+ /**
+ * Returns true if this editor or one of its widgets has keyboard focus.
+ */
+ hasWidgetFocus(): boolean;
+ /**
+ * Get a contribution of this editor.
+ * @id Unique identifier of the contribution.
+ * @return The contribution or null if contribution not found.
+ */
+ getContribution(id: string): T;
+ /**
+ * Type the getModel() of IEditor.
+ */
+ getModel(): ITextModel;
+ /**
+ * Returns the current editor's configuration
+ */
+ getConfiguration(): InternalEditorOptions;
+ /**
+ * Get value of the current model attached to this editor.
+ * @see `ITextModel.getValue`
+ */
+ getValue(options?: {
+ preserveBOM: boolean;
+ lineEnding: string;
+ }): string;
+ /**
+ * Set the value of the current model attached to this editor.
+ * @see `ITextModel.setValue`
+ */
+ setValue(newValue: string): void;
+ /**
+ * Get the scrollWidth of the editor's viewport.
+ */
+ getScrollWidth(): number;
+ /**
+ * Get the scrollLeft of the editor's viewport.
+ */
+ getScrollLeft(): number;
+ /**
+ * Get the scrollHeight of the editor's viewport.
+ */
+ getScrollHeight(): number;
+ /**
+ * Get the scrollTop of the editor's viewport.
+ */
+ getScrollTop(): number;
+ /**
+ * Change the scrollLeft of the editor's viewport.
+ */
+ setScrollLeft(newScrollLeft: number): void;
+ /**
+ * Change the scrollTop of the editor's viewport.
+ */
+ setScrollTop(newScrollTop: number): void;
+ /**
+ * Change the scroll position of the editor's viewport.
+ */
+ setScrollPosition(position: INewScrollPosition): void;
+ /**
+ * Get an action that is a contribution to this editor.
+ * @id Unique identifier of the contribution.
+ * @return The action or null if action not found.
+ */
+ getAction(id: string): IEditorAction;
+ /**
+ * Execute a command on the editor.
+ * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
+ * @param source The source of the call.
+ * @param command The command to execute
+ */
+ executeCommand(source: string, command: ICommand): void;
+ /**
+ * Push an "undo stop" in the undo-redo stack.
+ */
+ pushUndoStop(): boolean;
+ /**
+ * Execute edits on the editor.
+ * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
+ * @param source The source of the call.
+ * @param edits The edits to execute.
+ * @param endCursoState Cursor state after the edits were applied.
+ */
+ executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean;
+ /**
+ * Execute multiple (concommitent) commands on the editor.
+ * @param source The source of the call.
+ * @param command The commands to execute
+ */
+ executeCommands(source: string, commands: ICommand[]): void;
+ /**
+ * Get all the decorations on a line (filtering out decorations from other editors).
+ */
+ getLineDecorations(lineNumber: number): IModelDecoration[];
+ /**
+ * All decorations added through this call will get the ownerId of this editor.
+ * @see `ITextModel.deltaDecorations`
+ */
+ deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
+ /**
+ * Get the layout info for the editor.
+ */
+ getLayoutInfo(): EditorLayoutInfo;
+ /**
+ * Returns the range that is currently centered in the view port.
+ */
+ getCenteredRangeInViewport(): Range;
+ /**
+ * Returns the ranges that are currently visible.
+ * Does not account for horizontal scrolling.
+ */
+ getVisibleRanges(): Range[];
+ /**
+ * Get the vertical position (top offset) for the line w.r.t. to the first line.
+ */
+ getTopForLineNumber(lineNumber: number): number;
+ /**
+ * Get the vertical position (top offset) for the position w.r.t. to the first line.
+ */
+ getTopForPosition(lineNumber: number, column: number): number;
/**
* Returns the editor's dom node
*/
@@ -3829,10 +3786,6 @@ declare module monaco.editor {
* Change the view zones. View zones are lost when a new model is attached to the editor.
*/
changeViewZones(callback: (accessor: IViewZoneChangeAccessor) => void): void;
- /**
- * Returns the range that is currently centered in the view port.
- */
- getCenteredRangeInViewport(): Range;
/**
* Get the horizontal position (left offset) for the column w.r.t to the beginning of the line.
* This method works only if the line `lineNumber` is currently rendered (in the editor's viewport).
@@ -3843,14 +3796,6 @@ declare module monaco.editor {
* Force an editor render now.
*/
render(): void;
- /**
- * Get the vertical position (top offset) for the line w.r.t. to the first line.
- */
- getTopForLineNumber(lineNumber: number): number;
- /**
- * Get the vertical position (top offset) for the position w.r.t. to the first line.
- */
- getTopForPosition(lineNumber: number, column: number): number;
/**
* Get the hit test target at coordinates `clientX` and `clientY`.
* The coordinates are relative to the top-left of the viewport.
@@ -3876,14 +3821,60 @@ declare module monaco.editor {
applyFontInfo(target: HTMLElement): void;
}
+ /**
+ * Information about a line in the diff editor
+ */
+ export interface IDiffLineInformation {
+ readonly equivalentLineNumber: number;
+ }
+
/**
* A rich diff editor.
*/
- export interface IDiffEditor extends ICommonDiffEditor {
+ export interface IDiffEditor extends IEditor {
/**
* @see ICodeEditor.getDomNode
*/
getDomNode(): HTMLElement;
+ /**
+ * An event emitted when the diff information computed by this diff editor has been updated.
+ * @event
+ */
+ onDidUpdateDiff(listener: () => void): IDisposable;
+ /**
+ * Saves current view state of the editor in a serializable object.
+ */
+ saveViewState(): IDiffEditorViewState;
+ /**
+ * Restores the view state of the editor from a serializable object generated by `saveViewState`.
+ */
+ restoreViewState(state: IDiffEditorViewState): void;
+ /**
+ * Type the getModel() of IEditor.
+ */
+ getModel(): IDiffEditorModel;
+ /**
+ * Get the `original` editor.
+ */
+ getOriginalEditor(): ICodeEditor;
+ /**
+ * Get the `modified` editor.
+ */
+ getModifiedEditor(): ICodeEditor;
+ /**
+ * Get the computed diff information.
+ */
+ getLineChanges(): ILineChange[];
+ /**
+ * Get information based on computed diff about a line number from the original model.
+ * If the diff computation is not finished or the model is missing, will return null.
+ */
+ getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation;
+ /**
+ * Get information based on computed diff about a line number from the modified model.
+ * If the diff computation is not finished or the model is missing, will return null.
+ */
+ getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation;
}
export class FontInfo extends BareFontInfo {
@@ -3904,6 +3895,10 @@ declare module monaco.editor {
readonly lineHeight: number;
readonly letterSpacing: number;
}
+
+ //compatibility:
+ export type IReadOnlyModel = ITextModel;
+ export type IModel = ITextModel;
}
declare module monaco.languages {
@@ -4057,6 +4052,14 @@ declare module monaco.languages {
*/
export function registerCompletionItemProvider(languageId: string, provider: CompletionItemProvider): IDisposable;
+ /**
+ * Register a document color provider (used by Color Picker, Color Decorator).
+ */
+ export function registerColorProvider(languageId: string, provider: DocumentColorProvider): IDisposable;
+
+ /**
+ * Register a folding provider
+ */
/**
* Contains additional diagnostic information about the context in which
* a [code action](#CodeActionProvider.provideCodeActions) is run.
@@ -4068,6 +4071,10 @@ declare module monaco.languages {
* @readonly
*/
readonly markers: editor.IMarkerData[];
+ /**
+ * Requested kind of actions to return.
+ */
+ readonly only?: string;
}
/**
@@ -4078,7 +4085,7 @@ declare module monaco.languages {
/**
* Provide commands for the given document and range.
*/
- provideCodeActions(model: editor.IReadOnlyModel, range: Range, context: CodeActionContext, token: CancellationToken): Command[] | Thenable;
+ provideCodeActions(model: editor.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): (Command | CodeAction)[] | Thenable<(Command | CodeAction)[]>;
}
/**
@@ -4147,7 +4154,11 @@ declare module monaco.languages {
/**
* A human-readable string that represents a doc-comment.
*/
- documentation?: string;
+ documentation?: string | IMarkdownString;
+ /**
+ * A command that should be run upon acceptance of this item.
+ */
+ command?: Command;
/**
* A string that should be used when comparing this item
* with other items. When `falsy` the [label](#CompletionItem.label)
@@ -4176,6 +4187,12 @@ declare module monaco.languages {
* [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`.
*
@@ -4187,6 +4204,12 @@ declare module monaco.languages {
* line completions were [requested](#CompletionItemProvider.provideCompletionItems) at.~~
*/
textEdit?: editor.ISingleEditOperation;
+ /**
+ * An optional array of additional text edits that are applied when
+ * selecting this completion. Edits must not overlap with the main edit
+ * nor with themselves.
+ */
+ additionalTextEdits?: editor.ISingleEditOperation[];
}
/**
@@ -4205,6 +4228,23 @@ declare module monaco.languages {
items: CompletionItem[];
}
+ /**
+ * Contains additional information about the context in which
+ * [completion provider](#CompletionItemProvider.provideCompletionItems) is triggered.
+ */
+ export interface CompletionContext {
+ /**
+ * How the completion was triggered.
+ */
+ triggerKind: SuggestTriggerKind;
+ /**
+ * Character that triggered the completion item provider.
+ *
+ * `undefined` if provider was not triggered by a character.
+ */
+ triggerCharacter?: string;
+ }
+
/**
* The completion item provider interface defines the contract between extensions and
* the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).
@@ -4221,7 +4261,7 @@ declare module monaco.languages {
/**
* Provide completion items for the given position and document.
*/
- provideCompletionItems(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): CompletionItem[] | Thenable | CompletionList | Thenable;
+ provideCompletionItems(document: editor.ITextModel, position: Position, token: CancellationToken, context: CompletionContext): CompletionItem[] | Thenable | CompletionList | Thenable;
/**
* Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation)
* or [details](#CompletionItem.detail).
@@ -4286,6 +4326,10 @@ declare module monaco.languages {
* settings will be used.
*/
surroundingPairs?: IAutoClosingPair[];
+ /**
+ * The language's folding rules.
+ */
+ folding?: FoldingRules;
/**
* **Deprecated** Do not use.
*
@@ -4316,6 +4360,34 @@ declare module monaco.languages {
unIndentedLinePattern?: RegExp;
}
+ /**
+ * Describes language specific folding markers such as '#region' and '#endregion'.
+ * The start and end regexes will be tested against the contents of all lines and must be designed efficiently:
+ * - the regex should start with '^'
+ * - regexp flags (i, g) are ignored
+ */
+ export interface FoldingMarkers {
+ start: RegExp;
+ end: RegExp;
+ }
+
+ /**
+ * Describes folding rules for a language.
+ */
+ export interface FoldingRules {
+ /**
+ * Used by the indentation based strategy to decide wheter empty lines belong to the previous or the next block.
+ * A language adheres to the off-side rule if blocks in that language are expressed by their indentation.
+ * See [wikipedia](https://en.wikipedia.org/wiki/Off-side_rule) for more information.
+ * If not set, `false` is used and empty lines belong to the previous block.
+ */
+ offSide?: boolean;
+ /**
+ * Region markers used by the language.
+ */
+ markers?: FoldingMarkers;
+ }
+
/**
* Describes a rule to be evaluated when pressing Enter.
*/
@@ -4431,7 +4503,7 @@ declare module monaco.languages {
/**
* The contents of this hover.
*/
- contents: MarkedString[];
+ contents: IMarkdownString[];
/**
* The range to which this hover applies. When missing, the
* editor will use the range at the current position or the
@@ -4450,7 +4522,24 @@ declare module monaco.languages {
* position will be merged by the editor. A hover can have a range which defaults
* to the word range at the position when omitted.
*/
- provideHover(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Hover | Thenable;
+ provideHover(model: editor.ITextModel, position: Position, token: CancellationToken): Hover | Thenable;
+ }
+
+ /**
+ * How a suggest provider was triggered.
+ */
+ export enum SuggestTriggerKind {
+ Invoke = 0,
+ TriggerCharacter = 1,
+ TriggerForIncompleteCompletions = 2,
+ }
+
+ export interface CodeAction {
+ title: string;
+ command?: Command;
+ edit?: WorkspaceEdit;
+ diagnostics?: editor.IMarkerData[];
+ kind?: string;
}
/**
@@ -4467,7 +4556,7 @@ declare module monaco.languages {
* The human-readable doc-comment of this signature. Will be shown
* in the UI but can be omitted.
*/
- documentation?: string;
+ documentation?: string | IMarkdownString;
}
/**
@@ -4485,7 +4574,7 @@ declare module monaco.languages {
* The human-readable doc-comment of this signature. Will be shown
* in the UI but can be omitted.
*/
- documentation?: string;
+ documentation?: string | IMarkdownString;
/**
* The parameters of this signature.
*/
@@ -4521,7 +4610,7 @@ declare module monaco.languages {
/**
* Provide help for the signature at the given position and document.
*/
- provideSignatureHelp(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): SignatureHelp | Thenable;
+ provideSignatureHelp(model: editor.ITextModel, position: Position, token: CancellationToken): SignatureHelp | Thenable;
}
/**
@@ -4567,7 +4656,7 @@ declare module monaco.languages {
* Provide a set of document highlights, like all occurrences of a variable or
* all exit-points of a function.
*/
- provideDocumentHighlights(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable;
+ provideDocumentHighlights(model: editor.ITextModel, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable;
}
/**
@@ -4589,7 +4678,7 @@ declare module monaco.languages {
/**
* Provide a set of project-wide references for the given position and document.
*/
- provideReferences(model: editor.IReadOnlyModel, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable;
+ provideReferences(model: editor.ITextModel, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable;
}
/**
@@ -4623,7 +4712,7 @@ declare module monaco.languages {
/**
* Provide the definition of the symbol at the given position and document.
*/
- provideDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;
+ provideDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): Definition | Thenable;
}
/**
@@ -4634,7 +4723,7 @@ declare module monaco.languages {
/**
* Provide the implementation of the symbol at the given position and document.
*/
- provideImplementation(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;
+ provideImplementation(model: editor.ITextModel, position: Position, token: CancellationToken): Definition | Thenable;
}
/**
@@ -4645,7 +4734,7 @@ declare module monaco.languages {
/**
* Provide the type definition of the symbol at the given position and document.
*/
- provideTypeDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;
+ provideTypeDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): Definition | Thenable;
}
/**
@@ -4711,7 +4800,7 @@ declare module monaco.languages {
/**
* Provide symbol information for the given document.
*/
- provideDocumentSymbols(model: editor.IReadOnlyModel, token: CancellationToken): SymbolInformation[] | Thenable;
+ provideDocumentSymbols(model: editor.ITextModel, token: CancellationToken): SymbolInformation[] | Thenable;
}
export interface TextEdit {
@@ -4742,7 +4831,7 @@ declare module monaco.languages {
/**
* Provide formatting edits for a whole document.
*/
- provideDocumentFormattingEdits(model: editor.IReadOnlyModel, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
+ provideDocumentFormattingEdits(model: editor.ITextModel, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
}
/**
@@ -4757,7 +4846,7 @@ declare module monaco.languages {
* or larger range. Often this is done by adjusting the start and end
* of the range to full syntax nodes.
*/
- provideDocumentRangeFormattingEdits(model: editor.IReadOnlyModel, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
+ provideDocumentRangeFormattingEdits(model: editor.ITextModel, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
}
/**
@@ -4773,7 +4862,7 @@ declare module monaco.languages {
* what range the position to expand to, like find the matching `{`
* when `}` has been entered.
*/
- provideOnTypeFormattingEdits(model: editor.IReadOnlyModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
+ provideOnTypeFormattingEdits(model: editor.ITextModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
}
/**
@@ -4781,30 +4870,113 @@ declare module monaco.languages {
*/
export interface ILink {
range: IRange;
- url: string;
+ url?: string;
}
/**
* A provider of links.
*/
export interface LinkProvider {
- provideLinks(model: editor.IReadOnlyModel, token: CancellationToken): ILink[] | Thenable;
+ provideLinks(model: editor.ITextModel, token: CancellationToken): ILink[] | Thenable;
resolveLink?: (link: ILink, token: CancellationToken) => ILink | Thenable;
}
- export interface IResourceEdit {
- resource: Uri;
+ /**
+ * A color in RGBA format.
+ */
+ export interface IColor {
+ /**
+ * The red component in the range [0-1].
+ */
+ readonly red: number;
+ /**
+ * The green component in the range [0-1].
+ */
+ readonly green: number;
+ /**
+ * The blue component in the range [0-1].
+ */
+ readonly blue: number;
+ /**
+ * The alpha component in the range [0-1].
+ */
+ readonly alpha: number;
+ }
+
+ /**
+ * String representations for a color
+ */
+ export interface IColorPresentation {
+ /**
+ * The label of this color presentation. It will be shown on the color
+ * picker header. By default this is also the text that is inserted when selecting
+ * this color presentation.
+ */
+ label: string;
+ /**
+ * An [edit](#TextEdit) which is applied to a document when selecting
+ * this presentation for the color.
+ */
+ textEdit?: TextEdit;
+ /**
+ * An optional array of additional [text edits](#TextEdit) that are applied when
+ * selecting this color presentation.
+ */
+ additionalTextEdits?: TextEdit[];
+ }
+
+ /**
+ * A color range is a range in a text model which represents a color.
+ */
+ export interface IColorInformation {
+ /**
+ * The range within the model.
+ */
range: IRange;
- newText: string;
+ /**
+ * The color represented in this range.
+ */
+ color: IColor;
+ }
+
+ /**
+ * A provider of colors for editor models.
+ */
+ export interface DocumentColorProvider {
+ /**
+ * Provides the color ranges for a specific model.
+ */
+ provideDocumentColors(model: editor.ITextModel, token: CancellationToken): IColorInformation[] | Thenable;
+ /**
+ * Provide the string representations for a color.
+ */
+ provideColorPresentations(model: editor.ITextModel, colorInfo: IColorInformation, token: CancellationToken): IColorPresentation[] | Thenable;
+ }
+
+ export interface ResourceFileEdit {
+ oldUri: Uri;
+ newUri: Uri;
+ }
+
+ export interface ResourceTextEdit {
+ resource: Uri;
+ modelVersionId?: number;
+ edits: TextEdit[];
}
export interface WorkspaceEdit {
- edits: IResourceEdit[];
+ edits: Array;
rejectReason?: string;
}
+ export interface RenameInitialValue {
+ range: IRange;
+ text?: string;
+ }
+
export interface RenameProvider {
- provideRenameEdits(model: editor.IReadOnlyModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable;
+ provideRenameEdits(model: editor.ITextModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable;
+ resolveInitialRenameValue?(model: editor.ITextModel, position: Position, token: CancellationToken): RenameInitialValue | Thenable;
}
export interface Command {
@@ -4822,8 +4994,8 @@ declare module monaco.languages {
export interface CodeLensProvider {
onDidChange?: IEvent;
- provideCodeLenses(model: editor.IReadOnlyModel, token: CancellationToken): ICodeLensSymbol[] | Thenable;
- resolveCodeLens?(model: editor.IReadOnlyModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable;
+ provideCodeLenses(model: editor.ITextModel, token: CancellationToken): ICodeLensSymbol[] | Thenable;
+ resolveCodeLens?(model: editor.ITextModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable;
}
export interface ILanguageExtensionPoint {
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..846c8ebd
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,4296 @@
+{
+ "name": "monaco-editor",
+ "version": "0.10.1",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/events": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
+ "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
+ "dev": true
+ },
+ "@types/fs-extra": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-4.0.8.tgz",
+ "integrity": "sha512-Z5nu9Pbxj9yNeXIK3UwGlRdJth4cZ5sCq05nI7FaI6B0oz28nxkOtp6Lsz0ZnmLHJGvOJfB/VHxSTbVq/i6ujA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "9.4.7"
+ }
+ },
+ "@types/glob": {
+ "version": "5.0.35",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.35.tgz",
+ "integrity": "sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg==",
+ "dev": true,
+ "requires": {
+ "@types/events": "1.2.0",
+ "@types/minimatch": "2.0.29",
+ "@types/node": "9.4.7"
+ }
+ },
+ "@types/handlebars": {
+ "version": "4.0.36",
+ "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.36.tgz",
+ "integrity": "sha512-LjNiTX7TY7wtuC6y3QwC93hKMuqYhgV9A1uXBKNvZtVC8ZvyWAjZkJ5BvT0K7RKqORRYRLMrqCxpw5RgS+MdrQ==",
+ "dev": true
+ },
+ "@types/highlight.js": {
+ "version": "9.12.2",
+ "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.2.tgz",
+ "integrity": "sha512-y5x0XD/WXDaGSyiTaTcKS4FurULJtSiYbGTeQd0m2LYZGBcZZ/7fM6t5H/DzeUF+kv8y6UfmF6yJABQsHcp9VQ==",
+ "dev": true
+ },
+ "@types/lodash": {
+ "version": "4.14.104",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.104.tgz",
+ "integrity": "sha512-ufQcVg4daO8xQ5kopxRHanqFdL4AI7ondQkV+2f+7mz3gvp0LkBx2zBRC6hfs3T87mzQFmf5Fck7Fi145Ul6NQ==",
+ "dev": true
+ },
+ "@types/marked": {
+ "version": "0.0.28",
+ "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.0.28.tgz",
+ "integrity": "sha1-RLp1Tp+lFDJYPo6zCnxN0km1L6o=",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "2.0.29",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-2.0.29.tgz",
+ "integrity": "sha1-UALhT3Xi1x5WQoHfBDHIwbSio2o=",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "9.4.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.7.tgz",
+ "integrity": "sha512-4Ba90mWNx8ddbafuyGGwjkZMigi+AWfYLSDCpovwsE63ia8w93r3oJ8PIAQc3y8U+XHcnMOHPIzNe3o438Ywcw==",
+ "dev": true
+ },
+ "@types/shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha512-M2giRw93PxKS7YjU6GZjtdV9HASdB7TWqizBXe4Ju7AqbKlWvTr0gNO92XH56D/gMxqD/jNHLNfC5hA34yGqrQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "5.0.35",
+ "@types/node": "9.4.7"
+ }
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.1.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
+ },
+ "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.6"
+ }
+ }
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "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
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "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
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "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-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "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.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "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": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz",
+ "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "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
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.2.1",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.1",
+ "pascalcase": "0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ }
+ }
+ },
+ "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
+ },
+ "bl": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz",
+ "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.0.6"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "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
+ },
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "bluebird": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.1.5.tgz",
+ "integrity": "sha1-aSeKHh02WhgXuojzIUwvlCd50K4=",
+ "dev": true
+ },
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.1"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz",
+ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "kind-of": "6.0.2",
+ "repeat-element": "1.1.2",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.2.1",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.0",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.0",
+ "unset-value": "1.0.0"
+ }
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
+ "optional": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
+ }
+ },
+ "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"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "clean-css": {
+ "version": "3.4.28",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
+ "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
+ "dev": true,
+ "requires": {
+ "commander": "2.8.1",
+ "source-map": "0.4.4"
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "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
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
+ }
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
+ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
+ "dev": true,
+ "requires": {
+ "graceful-readlink": "1.0.1"
+ }
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "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
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.5",
+ "typedarray": "0.0.6"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz",
+ "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "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
+ },
+ "corser": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
+ "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=",
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "dev": true,
+ "requires": {
+ "boom": "5.2.0"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.1"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "dateformat": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
+ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true,
+ "optional": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2",
+ "isobject": "3.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
+ },
+ "deprecated": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
+ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=",
+ "dev": true
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "ecstatic": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.2.0.tgz",
+ "integrity": "sha512-Goilx/2cfU9vvfQjgtNgc2VmJAD8CasQ6rZDqCd2u4Hsyd/qFET6nBf60jiHodevR3nl3IGzNKtrzPXWP88utQ==",
+ "dev": true,
+ "requires": {
+ "he": "1.1.1",
+ "mime": "1.6.0",
+ "minimist": "1.2.0",
+ "url-join": "2.0.5"
+ }
+ },
+ "end-of-stream": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
+ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
+ "dev": true,
+ "requires": {
+ "once": "1.3.3"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
+ "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "eventemitter3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "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"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.1"
+ }
+ },
+ "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": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "extract-zip": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
+ "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.0",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.0",
+ "yauzl": "2.4.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+ "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ }
+ }
+ },
+ "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.2",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
+ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
+ "dev": true,
+ "requires": {
+ "ansi-gray": "0.1.1",
+ "color-support": "1.1.3",
+ "time-stamp": "1.1.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "find-index": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
+ "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
+ "dev": true
+ },
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "dev": true,
+ "requires": {
+ "detect-file": "1.0.0",
+ "is-glob": "3.1.0",
+ "micromatch": "3.1.9",
+ "resolve-dir": "1.0.1"
+ }
+ },
+ "fined": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
+ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "is-plain-object": "2.0.4",
+ "object.defaults": "1.1.0",
+ "object.pick": "1.3.0",
+ "parse-filepath": "1.0.2"
+ }
+ },
+ "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
+ },
+ "flagged-respawn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz",
+ "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=",
+ "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": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "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
+ },
+ "fork-stream": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz",
+ "integrity": "sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "dev": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "2.1.18"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "0.2.2"
+ }
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.1"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "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
+ },
+ "gaze": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
+ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
+ "dev": true,
+ "requires": {
+ "globule": "0.1.0"
+ }
+ },
+ "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-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "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"
+ }
+ },
+ "glob": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
+ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "2.0.10",
+ "once": "1.3.3"
+ }
+ },
+ "glob-stream": {
+ "version": "3.1.18",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
+ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
+ "dev": true,
+ "requires": {
+ "glob": "4.5.3",
+ "glob2base": "0.0.12",
+ "minimatch": "2.0.10",
+ "ordered-read-streams": "0.1.0",
+ "through2": "0.6.5",
+ "unique-stream": "1.0.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "glob-watcher": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
+ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
+ "dev": true,
+ "requires": {
+ "gaze": "0.5.2"
+ }
+ },
+ "glob2base": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
+ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
+ "dev": true,
+ "requires": {
+ "find-index": "0.1.1"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "1.0.2",
+ "is-windows": "1.0.2",
+ "resolve-dir": "1.0.1"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "homedir-polyfill": "1.0.1",
+ "ini": "1.3.5",
+ "is-windows": "1.0.2",
+ "which": "1.3.0"
+ }
+ },
+ "globule": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21",
+ "lodash": "1.0.2",
+ "minimatch": "0.2.14"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "1.2.3",
+ "inherits": "1.0.2",
+ "minimatch": "0.2.14"
+ }
+ },
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ }
+ }
+ },
+ "glogg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
+ "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
+ "dev": true,
+ "requires": {
+ "natives": "1.1.1"
+ }
+ },
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+ "dev": true
+ },
+ "gulp": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
+ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
+ "dev": true,
+ "requires": {
+ "archy": "1.0.0",
+ "chalk": "1.1.3",
+ "deprecated": "0.0.1",
+ "gulp-util": "3.0.8",
+ "interpret": "1.1.0",
+ "liftoff": "2.5.0",
+ "minimist": "1.2.0",
+ "orchestrator": "0.3.8",
+ "pretty-hrtime": "1.0.3",
+ "semver": "4.3.6",
+ "tildify": "1.2.0",
+ "v8flags": "2.1.1",
+ "vinyl-fs": "0.3.14"
+ }
+ },
+ "gulp-typedoc": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/gulp-typedoc/-/gulp-typedoc-2.2.0.tgz",
+ "integrity": "sha512-yDBI4CK0CVRONXiI2EXx7rH732pPIXRr6HVlbH05Wbf9uU0/gJ1XiZCef4d43opHl6vA3QkWpM+8NxsMrcoD1w==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "1.1.0",
+ "event-stream": "3.3.4",
+ "fancy-log": "1.3.2",
+ "plugin-error": "0.1.2"
+ }
+ },
+ "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.2.0",
+ "fancy-log": "1.3.2",
+ "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"
+ }
+ },
+ "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.1"
+ }
+ },
+ "handlebars": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "optimist": "0.6.1",
+ "source-map": "0.4.4",
+ "uglify-js": "2.8.29"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2",
+ "har-schema": "2.0.0"
+ }
+ },
+ "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-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "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.6"
+ }
+ }
+ }
+ },
+ "hasha": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
+ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
+ "dev": true,
+ "requires": {
+ "is-stream": "1.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "dev": true,
+ "requires": {
+ "boom": "4.3.1",
+ "cryptiles": "3.1.2",
+ "hoek": "4.2.1",
+ "sntp": "2.1.0"
+ }
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "highlight.js": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
+ "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
+ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
+ "dev": true
+ },
+ "homedir-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "1.0.0"
+ }
+ },
+ "html-tags": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz",
+ "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "1.2.0",
+ "requires-port": "1.0.0"
+ }
+ },
+ "http-server": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.11.1.tgz",
+ "integrity": "sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==",
+ "dev": true,
+ "requires": {
+ "colors": "1.0.3",
+ "corser": "2.0.1",
+ "ecstatic": "3.2.0",
+ "http-proxy": "1.16.2",
+ "opener": "1.4.3",
+ "optimist": "0.6.1",
+ "portfinder": "1.0.13",
+ "union": "0.4.6"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.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.3.3",
+ "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
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "requires": {
+ "is-relative": "1.0.0",
+ "is-windows": "1.0.2"
+ }
+ },
+ "is-absolute-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.0.0.tgz",
+ "integrity": "sha1-nEsgsOXAy++aR5o2ft5vmRZ581k=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "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-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-html": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.0.0.tgz",
+ "integrity": "sha1-nLu/69nuEdwgZoPz7K9N9bFjOhs=",
+ "dev": true,
+ "requires": {
+ "html-tags": "1.2.0"
+ }
+ },
+ "is-my-ip-valid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
+ "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
+ "dev": true
+ },
+ "is-my-json-valid": {
+ "version": "2.17.2",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
+ "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
+ "dev": true,
+ "requires": {
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "is-my-ip-valid": "1.0.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
+ }
+ },
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-odd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
+ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "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-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "1.0.0"
+ }
+ },
+ "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-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "0.1.2"
+ }
+ },
+ "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-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "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
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "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
+ },
+ "js-base64": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
+ "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==",
+ "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-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "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
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true,
+ "optional": 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"
+ }
+ },
+ "kew": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
+ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
+ "optional": true
+ },
+ "liftoff": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
+ "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.1",
+ "findup-sync": "2.0.0",
+ "fined": "1.1.0",
+ "flagged-respawn": "1.0.0",
+ "is-plain-object": "2.0.4",
+ "object.map": "1.0.1",
+ "rechoir": "0.6.2",
+ "resolve": "1.5.0"
+ }
+ },
+ "linerstream": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/linerstream/-/linerstream-0.1.4.tgz",
+ "integrity": "sha1-Xee/afqisPnYXoMyCZtw5BmoRdU=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
+ "dev": true
+ },
+ "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._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._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._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._root": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
+ "dev": true
+ },
+ "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.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"
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "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
+ },
+ "make-iterator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.0.tgz",
+ "integrity": "sha1-V7713IXSOSO6I3ZzJNjo+PPZaUs=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "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
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "1.0.1"
+ }
+ },
+ "marked": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz",
+ "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz",
+ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.1",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.9",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.33.0"
+ }
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "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
+ }
+ }
+ },
+ "monaco-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/monaco-css/-/monaco-css-2.0.1.tgz",
+ "integrity": "sha512-xlrT4CzSxuj4wx5c6aw/j2FFZy8pYiowK+6+kaCk2ov/SiedA5lVh1X9RVhMS0ORDGQ5wdKQftnE6eRkJlYq8g==",
+ "dev": true
+ },
+ "monaco-editor-core": {
+ "version": "0.11.3",
+ "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.11.3.tgz",
+ "integrity": "sha512-e6o/TInK+sRgWaWNj8kIaNinfmTC1vQdwF6QUaZ7h0OT+xILM6zxl+4B0imIbKm7iBYSZR2avH8Hbg8h6qQ2+g==",
+ "dev": true
+ },
+ "monaco-html": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/monaco-html/-/monaco-html-2.0.2.tgz",
+ "integrity": "sha512-SRtZKYdLnRAFkctak1wjS+rpn+i4CxIpXD3AJg1SKksgqObXN6cVJad658xLZ/YU/D3qvgXvn1mwWVd9kK6yug==",
+ "dev": true
+ },
+ "monaco-json": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/monaco-json/-/monaco-json-2.0.1.tgz",
+ "integrity": "sha512-mmQS1PVRQ9I3B3f1gRjtWp2F/HjSXal1O6k+XWhEwfXqd5YPsz1fmz4oRuCg8QbauO97VkNKaaygsPV+NZ3pzA==",
+ "dev": true
+ },
+ "monaco-languages": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.0.2.tgz",
+ "integrity": "sha512-xQEdlbw7nEQoopkPwQTHx3EFPflTrYOqxhY4gGFunbnjY5pIsqROH5/THALSYf3ZWXAZ3vlMxp/lS4eegTdowA==",
+ "dev": true
+ },
+ "monaco-typescript": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/monaco-typescript/-/monaco-typescript-3.0.0.tgz",
+ "integrity": "sha512-eqxb5wG/HtL+Y/Taedh4RzxyaXDJc2YXOizgpr4X+KRHhg+mKOkcJ5QglHs/yQrVisY1CKsF/A66hTnVOaxDbg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "nanomatch": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
+ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-odd": "2.0.0",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "natives": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz",
+ "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==",
+ "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-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "0.1.1",
+ "define-property": "0.2.5",
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "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.6"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "1.0.1",
+ "array-slice": "1.1.0",
+ "for-own": "1.0.0",
+ "isobject": "3.0.1"
+ }
+ },
+ "object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "dev": true,
+ "requires": {
+ "for-own": "1.0.0",
+ "make-iterator": "1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "opener": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz",
+ "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ }
+ }
+ },
+ "orchestrator": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
+ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "0.1.5",
+ "sequencify": "0.0.7",
+ "stream-consume": "0.1.1"
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
+ "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "1.0.0",
+ "map-cache": "0.2.2",
+ "path-root": "0.1.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "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-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "0.1.2"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "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": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "phantomjs-prebuilt": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
+ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
+ "dev": true,
+ "requires": {
+ "es6-promise": "4.2.4",
+ "extract-zip": "1.6.6",
+ "fs-extra": "1.0.0",
+ "hasha": "2.2.0",
+ "kew": "0.7.0",
+ "progress": "1.1.8",
+ "request": "2.85.0",
+ "request-progress": "2.0.1",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "2.4.0",
+ "klaw": "1.3.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "progress": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ },
+ "request": {
+ "version": "2.85.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
+ "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.6",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.2",
+ "har-validator": "5.0.3",
+ "hawk": "6.0.2",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.18",
+ "oauth-sign": "0.8.2",
+ "performance-now": "2.1.0",
+ "qs": "6.5.1",
+ "safe-buffer": "5.1.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.4",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.2.1"
+ }
+ }
+ }
+ },
+ "phridge": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/phridge/-/phridge-2.0.0.tgz",
+ "integrity": "sha1-q6c5KUUkL7SVJ31w52xLl+QoW7Y=",
+ "dev": true,
+ "requires": {
+ "fork-stream": "0.0.4",
+ "linerstream": "0.1.4",
+ "phantomjs-prebuilt": "2.1.16",
+ "temp": "0.8.3"
+ }
+ },
+ "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"
+ }
+ },
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "dev": true,
+ "requires": {
+ "ansi-cyan": "0.1.1",
+ "ansi-red": "0.1.1",
+ "arr-diff": "1.1.0",
+ "arr-union": "2.1.0",
+ "extend-shallow": "1.1.4"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-slice": "0.2.3"
+ }
+ },
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+ "dev": true,
+ "requires": {
+ "kind-of": "1.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
+ "dev": true
+ }
+ }
+ },
+ "portfinder": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
+ "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.1"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "5.0.21",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.21.tgz",
+ "integrity": "sha1-1M9vGXdGSMSSrFfCmPavs8BMrv4=",
+ "dev": true,
+ "requires": {
+ "js-base64": "2.4.3",
+ "source-map": "0.5.7",
+ "supports-color": "3.2.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
+ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
+ "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": "2.3.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz",
+ "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=",
+ "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"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.5.0"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "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
+ },
+ "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.69.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.69.0.tgz",
+ "integrity": "sha1-z5HS4AB1KxIXFVwAUkGRGZGiNGo=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "bl": "1.0.3",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.6",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "1.0.1",
+ "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.18",
+ "node-uuid": "1.4.8",
+ "oauth-sign": "0.8.2",
+ "qs": "6.0.4",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.2.2",
+ "tunnel-agent": "0.4.3"
+ },
+ "dependencies": {
+ "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
+ },
+ "async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.5"
+ }
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz",
+ "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==",
+ "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"
+ }
+ },
+ "form-data": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz",
+ "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=",
+ "dev": true,
+ "requires": {
+ "async": "2.6.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "2.1.18"
+ }
+ },
+ "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.15.0",
+ "is-my-json-valid": "2.17.2",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "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
+ },
+ "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"
+ }
+ },
+ "lodash": {
+ "version": "4.17.5",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
+ "dev": true
+ },
+ "node-uuid": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
+ "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.0.4.tgz",
+ "integrity": "sha1-UQGdhHIMk5uCc36EVWp4Izjs6ns=",
+ "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"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz",
+ "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=",
+ "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
+ }
+ }
+ },
+ "request-progress": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
+ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
+ "dev": true,
+ "requires": {
+ "throttleit": "1.0.0"
+ }
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
+ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "global-modules": "1.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "0.1.4"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "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.3.3",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "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.11"
+ }
+ }
+ }
+ },
+ "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
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "0.1.15"
+ }
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+ "dev": true
+ },
+ "sequencify": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
+ "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "split-string": "3.1.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "shelljs": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
+ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2",
+ "interpret": "1.1.0",
+ "rechoir": "0.6.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.3.3",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "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.11"
+ }
+ }
+ }
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "0.11.2",
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "map-cache": "0.2.2",
+ "source-map": "0.5.7",
+ "source-map-resolve": "0.5.1",
+ "use": "3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "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"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "snapdragon-util": "3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "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.6"
+ }
+ }
+ }
+ },
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.1"
+ }
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ },
+ "source-map-resolve": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz",
+ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==",
+ "dev": true,
+ "requires": {
+ "atob": "2.0.3",
+ "decode-uri-component": "0.2.0",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.4.0",
+ "urix": "0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "sparkles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
+ "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"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2"
+ }
+ },
+ "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"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "0.2.5",
+ "object-copy": "0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "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-consume": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
+ "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==",
+ "dev": true
+ },
+ "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
+ },
+ "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": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
+ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
+ "dev": true,
+ "requires": {
+ "first-chunk-stream": "1.0.0",
+ "is-utf8": "0.2.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
+ },
+ "temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "1.0.2",
+ "rimraf": "2.2.8"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ }
+ }
+ },
+ "throttleit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
+ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+ "dev": true
+ },
+ "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.5",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz",
+ "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "tildify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "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-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "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.6"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "dev": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "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"
+ }
+ },
+ "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
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typedoc": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.8.0.tgz",
+ "integrity": "sha1-1xcrxqKZZPRRt2CcAFvq2t7+I2E=",
+ "dev": true,
+ "requires": {
+ "@types/fs-extra": "4.0.8",
+ "@types/handlebars": "4.0.36",
+ "@types/highlight.js": "9.12.2",
+ "@types/lodash": "4.14.104",
+ "@types/marked": "0.0.28",
+ "@types/minimatch": "2.0.29",
+ "@types/shelljs": "0.7.8",
+ "fs-extra": "4.0.3",
+ "handlebars": "4.0.11",
+ "highlight.js": "9.12.0",
+ "lodash": "4.17.5",
+ "marked": "0.3.17",
+ "minimatch": "3.0.4",
+ "progress": "2.0.0",
+ "shelljs": "0.7.8",
+ "typedoc-default-themes": "0.5.0",
+ "typescript": "2.4.1"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.5",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
+ "dev": true
+ },
+ "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.11"
+ }
+ },
+ "typescript": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz",
+ "integrity": "sha1-w8yxbdqgsjFN4DHn5v7onlujRrw=",
+ "dev": true
+ }
+ }
+ },
+ "typedoc-default-themes": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz",
+ "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz",
+ "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "uncss": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.14.1.tgz",
+ "integrity": "sha1-uvSxcL6uFlszGHEx07Hc1DI2mE4=",
+ "dev": true,
+ "requires": {
+ "async": "1.5.2",
+ "bluebird": "3.1.5",
+ "commander": "2.9.0",
+ "glob": "6.0.4",
+ "is-absolute-url": "2.0.0",
+ "is-html": "1.0.0",
+ "lodash": "4.0.1",
+ "object-assign": "4.1.1",
+ "phridge": "2.0.0",
+ "postcss": "5.0.21",
+ "request": "2.69.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+ "dev": true,
+ "requires": {
+ "graceful-readlink": "1.0.1"
+ }
+ },
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "2.0.10",
+ "once": "1.3.3",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "lodash": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.0.1.tgz",
+ "integrity": "sha1-zYyQLJ4D8uac4+DkVtUFq4nrmPQ=",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "union": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz",
+ "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=",
+ "dev": true,
+ "requires": {
+ "qs": "2.3.3"
+ }
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
+ "requires": {
+ "arr-union": "3.1.0",
+ "get-value": "2.0.6",
+ "is-extendable": "0.1.1",
+ "set-value": "0.4.3"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "to-object-path": "0.3.0"
+ }
+ }
+ }
+ },
+ "unique-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
+ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
+ "dev": true
+ },
+ "universalify": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "0.3.1",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "0.1.4",
+ "isobject": "2.1.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url-join": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
+ "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
+ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
+ "dev": true
+ },
+ "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.2.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
+ "dev": true
+ },
+ "v8flags": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "dev": true,
+ "requires": {
+ "user-home": "1.1.1"
+ }
+ },
+ "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"
+ }
+ },
+ "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.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "0.3.14",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
+ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
+ "dev": true,
+ "requires": {
+ "defaults": "1.0.3",
+ "glob-stream": "3.1.18",
+ "glob-watcher": "0.0.6",
+ "graceful-fs": "3.0.11",
+ "mkdirp": "0.5.1",
+ "strip-bom": "1.0.0",
+ "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
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true,
+ "optional": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "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
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0"
+ }
+ },
+ "yauzl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "dev": true,
+ "requires": {
+ "fd-slicer": "1.0.1"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 88913afc..1882fd5d 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "monaco-editor",
"private": true,
- "version": "0.10.0",
+ "version": "0.10.1",
"description": "A browser based code editor",
"author": "Microsoft Corporation",
"license": "MIT",
@@ -11,6 +11,7 @@
"website": "gulp website"
},
"typings": "./monaco.d.ts",
+ "module": "./esm/vs/editor/editor.main.js",
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/monaco-editor"
@@ -20,15 +21,17 @@
"event-stream": "^3.3.2",
"gulp": "^3.9.1",
"gulp-typedoc": "^2.0.0",
- "http-server": "^0.9.0",
- "monaco-css": "1.3.3",
- "monaco-editor-core": "0.10.0",
- "monaco-html": "1.3.2",
- "monaco-json": "1.3.2",
- "monaco-languages": "0.9.0",
- "monaco-typescript": "2.3.0",
+ "http-server": "^0.11.1",
+ "monaco-css": "2.0.1",
+ "monaco-editor-core": "0.11.3",
+ "monaco-html": "2.0.2",
+ "monaco-json": "2.0.1",
+ "monaco-languages": "1.0.2",
+ "monaco-typescript": "3.0.0",
"rimraf": "^2.5.2",
"typedoc": "^0.8.0",
- "uncss": "^0.14.1"
+ "typescript": "^2.7.2",
+ "uncss": "^0.14.1",
+ "vinyl": "^0.5.3"
}
}
diff --git a/test/dev-setup.js b/test/dev-setup.js
index e4bebe05..aa1ebd63 100644
--- a/test/dev-setup.js
+++ b/test/dev-setup.js
@@ -30,9 +30,9 @@
}
var overwrites = parseQueryString();
var result = {};
- result['editor'] = overwrites['editor'] || 'npm';
+ result['editor'] = overwrites['editor'] || 'npm/dev';
METADATA.PLUGINS.map(function(plugin) {
- result[plugin.name] = overwrites[plugin.name] || 'npm';
+ result[plugin.name] = overwrites[plugin.name] || 'npm/dev';
});
return result;
})();
@@ -57,7 +57,7 @@
};
Component.prototype.getResolvedPath = function() {
var resolvedPath = this.paths[this.selectedPath];
- if (this.selectedPath === 'npm' || this.isRelease()) {
+ if (this.selectedPath === 'npm/dev' || this.selectedPath === 'npm/min' || this.isRelease()) {
if (IS_FILE_PROTOCOL) {
resolvedPath = DIRNAME + '/../' + resolvedPath;
} else {
@@ -76,9 +76,9 @@
Component.prototype.generateUrlForPath = function(pathName) {
var NEW_LOADER_OPTS = {};
Object.keys(LOADER_OPTS).forEach(function(key) {
- NEW_LOADER_OPTS[key] = (LOADER_OPTS[key] === 'npm' ? undefined : LOADER_OPTS[key]);
+ NEW_LOADER_OPTS[key] = (LOADER_OPTS[key] === 'npm/dev' ? undefined : LOADER_OPTS[key]);
});
- NEW_LOADER_OPTS[this.name] = (pathName === 'npm' ? undefined : pathName);
+ NEW_LOADER_OPTS[this.name] = (pathName === 'npm/dev' ? undefined : pathName);
var search = Object.keys(NEW_LOADER_OPTS).map(function(key) {
var value = NEW_LOADER_OPTS[key];
diff --git a/test/index.js b/test/index.js
index 6b89e70c..48becae7 100644
--- a/test/index.js
+++ b/test/index.js
@@ -74,6 +74,7 @@ window.setTimeout(function () {
if (location.hash) {
START_SAMPLE = location.hash.replace(/^\#/, '');
+ START_SAMPLE = decodeURIComponent(START_SAMPLE);
}
samplesData[START_SAMPLE]();
diff --git a/test/playground.generated/creating-the-editor-editor-basic-options.html b/test/playground.generated/creating-the-editor-editor-basic-options.html
index c82fe3ce..e6538f89 100644
--- a/test/playground.generated/creating-the-editor-editor-basic-options.html
+++ b/test/playground.generated/creating-the-editor-editor-basic-options.html
@@ -44,7 +44,7 @@ var editor = monaco.editor.create(document.getElementById("container"), {
value: "// First line\nfunction hello() {\n\talert('Hello world!');\n}\n// Last line",
language: "javascript",
- lineNumbers: false,
+ lineNumbers: "off",
roundedSelection: false,
scrollBeyondLastLine: false,
readOnly: false,
@@ -52,7 +52,7 @@ var editor = monaco.editor.create(document.getElementById("container"), {
});
setTimeout(function() {
editor.updateOptions({
- lineNumbers: true
+ lineNumbers: "on"
});
}, 2000);
diff --git a/test/playground.generated/extending-language-services-configure-json-defaults.html b/test/playground.generated/extending-language-services-configure-json-defaults.html
index 3591d903..04b352ba 100644
--- a/test/playground.generated/extending-language-services-configure-json-defaults.html
+++ b/test/playground.generated/extending-language-services-configure-json-defaults.html
@@ -38,9 +38,13 @@ loadEditor(function() {
// Configures two JSON schemas, with references.
+var id = "foo.json";
+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
+ validate: true,
schemas: [{
uri: "http://myserver/foo-schema.json",
+ fileMatch: [id],
schema: {
type: "object",
properties: {
@@ -54,6 +58,7 @@ monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
}
},{
uri: "http://myserver/bar-schema.json",
+ fileMatch: [id],
schema: {
type: "object",
properties: {
@@ -68,15 +73,18 @@ monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
var jsonCode = [
'{',
- ' "$schema": "http://myserver/foo-schema.json"',
+ ' "p1": "v3",',
+ ' "p2": false',
"}"
].join('\n');
+var model = monaco.editor.createModel(jsonCode, "json", id);
+
monaco.editor.create(document.getElementById("container"), {
- value: jsonCode,
- language: "json"
+ model: model
});
+
/*----------------------------------------SAMPLE CSS END*/
});
diff --git a/website/index.html b/website/index.html
index 75dc9308..c43d42c2 100644
--- a/website/index.html
+++ b/website/index.html
@@ -154,7 +154,7 @@
- © 2017 Microsoft
+ © 2018 Microsoft
diff --git a/website/monarch.html b/website/monarch.html
index 25372ddd..5bdb1f9c 100644
--- a/website/monarch.html
+++ b/website/monarch.html
@@ -4291,7 +4291,7 @@ return {
diff --git a/website/playground.html b/website/playground.html
index 660ab2ba..2b2f45bb 100644
--- a/website/playground.html
+++ b/website/playground.html
@@ -67,7 +67,7 @@
diff --git a/website/playground/monaco.d.ts.txt b/website/playground/monaco.d.ts.txt
index ade5dcfa..645b69e9 100644
--- a/website/playground/monaco.d.ts.txt
+++ b/website/playground/monaco.d.ts.txt
@@ -1,6 +1,6 @@
/*!-----------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
- * Type definitions for monaco-editor v0.10.0
+ * Type definitions for monaco-editor v0.10.1
* Released under the MIT license
*-----------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------
@@ -10,16 +10,7 @@
declare module monaco {
- 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;
- }
+ type Thenable = PromiseLike;
export interface IDisposable {
dispose(): void;
@@ -48,59 +39,50 @@ declare module monaco {
- /**
- * The value callback to complete a promise
- */
- export interface TValueCallback {
- (value: T | Thenable): void;
- }
+ export type TValueCallback = (value: T | PromiseLike) => void;
+
+ export type ProgressCallback = (progress: TProgress) => void;
- export interface ProgressCallback {
- (progress: any): any;
- }
+ export class Promise {
+ constructor(
+ executor: (
+ resolve: (value: T | PromiseLike) => void,
+ reject: (reason: any) => void,
+ progress: (progress: TProgress) => void) => void,
+ oncancel?: () => void);
+ public then(
+ onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,
+ onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,
+ onprogress?: (progress: TProgress) => void): Promise;
- /**
- * A Promise implementation that supports progress and cancelation.
- */
- export class Promise {
+ public done(
+ onfulfilled?: (value: T) => void,
+ onrejected?: (reason: any) => void,
+ onprogress?: (progress: TProgress) => void): void;
- constructor(init: (complete: TValueCallback, error: (err: any) => void, progress: ProgressCallback) => void, oncancel?: any);
-
- public then(success?: (value: V) => Promise, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise, error?: (err: any) => U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise, error?: (err: any) => void, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => Promise | U, error?: (err: any) => void, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => Promise, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => Promise | U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => U, progress?: ProgressCallback): Promise;
- public then(success?: (value: V) => U, error?: (err: any) => void, progress?: ProgressCallback): Promise;
-
- public done(success?: (value: V) => void, error?: (err: any) => any, progress?: ProgressCallback): void;
public cancel(): void;
public static as(value: null): Promise;
public static as(value: undefined): Promise;
- public static as(value: Promise): Promise;
- public static as(value: Thenable): Thenable;
- public static as(value: ValueType): Promise;
+ public static as(value: PromiseLike): PromiseLike;
+ public static as>(value: SomePromise): SomePromise;
+ public static as(value: T): Promise;
+
+ public static is(value: any): value is PromiseLike;
- public static is(value: any): value is Thenable;
public static timeout(delay: number): Promise;
- public static join(promises: Promise[]): Promise;
- public static join(promises: Thenable[]): Thenable;
- public static join(promises: { [n: string]: Promise }): Promise<{ [n: string]: ValueType }>;
- public static any(promises: Promise[]): Promise<{ key: string; value: Promise; }>;
- public static wrap(value: Thenable): Promise;
- public static wrap(value: ValueType): Promise;
+ public static join(promises: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>;
+ public static join(promises: (T | PromiseLike)[]): Promise;
+ public static join(promises: { [n: string]: T | PromiseLike }): Promise<{ [n: string]: T }>;
- public static wrapError(error: Error): Promise;
+ public static any(promises: (T | PromiseLike)[]): Promise<{ key: string; value: Promise; }>;
+
+ public static wrap(value: T | PromiseLike): Promise;
+
+ public static wrapError(error: Error): Promise;
}
export class CancellationTokenSource {
@@ -133,7 +115,7 @@ declare module monaco {
*
*
*/
- export class Uri {
+ export class Uri implements UriComponents {
static isUri(thing: any): thing is Uri;
/**
* scheme is the 'http' part of 'http://www.msft.com/some/path?query#fragment'.
@@ -185,8 +167,16 @@ declare module monaco {
* @param skipEncoding Do not encode the result, default is `false`
*/
toString(skipEncoding?: boolean): string;
- toJSON(): any;
- static revive(data: any): Uri;
+ toJSON(): object;
+ static revive(data: UriComponents | any): Uri;
+ }
+
+ export interface UriComponents {
+ scheme: string;
+ authority: string;
+ path: string;
+ query: string;
+ fragment: string;
}
/**
@@ -377,15 +367,10 @@ declare module monaco {
static readonly WinCtrl: number;
static chord(firstPart: number, secondPart: number): number;
}
- /**
- * 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 | {
- readonly language: string;
- readonly value: string;
- };
+ export interface IMarkdownString {
+ value: string;
+ isTrusted?: boolean;
+ }
export interface IKeyboardEvent {
readonly browserEvent: KeyboardEvent;
@@ -606,10 +591,6 @@ declare module monaco {
* Return the start position (which will be before or equal to the end position)
*/
getStartPosition(): Position;
- /**
- * Clone this range.
- */
- cloneRange(): Range;
/**
* Transform to a user presentable string representation.
*/
@@ -807,7 +788,6 @@ declare module monaco.editor {
export function createDiffEditor(domElement: HTMLElement, options?: IDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;
export interface IDiffNavigator {
- revealFirst: boolean;
canNavigate(): boolean;
next(): void;
previous(): void;
@@ -826,21 +806,21 @@ declare module monaco.editor {
* Create a new editor model.
* You can specify the language that should be set for this model or let the language be inferred from the `uri`.
*/
- export function createModel(value: string, language?: string, uri?: Uri): IModel;
+ export function createModel(value: string, language?: string, uri?: Uri): ITextModel;
/**
* Change the language for a model.
*/
- export function setModelLanguage(model: IModel, language: string): void;
+ export function setModelLanguage(model: ITextModel, language: string): void;
/**
* Set the markers for a model.
*/
- export function setModelMarkers(model: IModel, owner: string, markers: IMarkerData[]): void;
+ export function setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void;
/**
- * Get markers for owner ant/or resource
- * @returns {IMarkerData[]} list of markers
+ * Get markers for owner and/or resource
+ * @returns {IMarker[]} list of markers
* @param filter
*/
export function getModelMarkers(filter: {
@@ -852,31 +832,31 @@ declare module monaco.editor {
/**
* Get the model that has `uri` if it exists.
*/
- export function getModel(uri: Uri): IModel;
+ export function getModel(uri: Uri): ITextModel;
/**
* Get all the created models.
*/
- export function getModels(): IModel[];
+ export function getModels(): ITextModel[];
/**
* Emitted when a model is created.
* @event
*/
- export function onDidCreateModel(listener: (model: IModel) => void): IDisposable;
+ export function onDidCreateModel(listener: (model: ITextModel) => void): IDisposable;
/**
* Emitted right before a model is disposed.
* @event
*/
- export function onWillDisposeModel(listener: (model: IModel) => void): IDisposable;
+ export function onWillDisposeModel(listener: (model: ITextModel) => void): IDisposable;
/**
* Emitted when a different language is set to a model.
* @event
*/
export function onDidChangeModelLanguage(listener: (e: {
- readonly model: IModel;
+ readonly model: ITextModel;
readonly oldLanguage: string;
}) => void): IDisposable;
@@ -899,7 +879,7 @@ declare module monaco.editor {
/**
* Colorize a line in a model.
*/
- export function colorizeModelLine(model: IModel, lineNumber: number, tabSize?: number): string;
+ export function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize?: number): string;
/**
* Tokenize `text` using language `languageId`
@@ -971,6 +951,51 @@ declare module monaco.editor {
label?: string;
}
+ /**
+ * Description of an action contribution
+ */
+ export interface IActionDescriptor {
+ /**
+ * An unique identifier of the contributed action.
+ */
+ id: string;
+ /**
+ * A label of the action that will be presented to the user.
+ */
+ label: string;
+ /**
+ * Precondition rule.
+ */
+ precondition?: string;
+ /**
+ * An array of keybindings for the action.
+ */
+ keybindings?: number[];
+ /**
+ * The keybinding rule (condition on top of precondition).
+ */
+ keybindingContext?: string;
+ /**
+ * Control if the action should show up in the context menu and where.
+ * The context menu of the editor has these default:
+ * navigation - The navigation group comes first in all cases.
+ * 1_modification - This group comes next and contains commands that modify your code.
+ * 9_cutcopypaste - The last default group with the basic editing commands.
+ * You can also create your own group.
+ * Defaults to null (don't show in context menu).
+ */
+ contextMenuGroupId?: string;
+ /**
+ * Control the order in the context menu group.
+ */
+ contextMenuOrder?: number;
+ /**
+ * Method that will be executed when the action is triggered.
+ * @param editor The editor instance is passed in as a convinience
+ */
+ run(editor: ICodeEditor): void | Promise;
+ }
+
/**
* The options to create an editor.
*/
@@ -978,7 +1003,7 @@ declare module monaco.editor {
/**
* The initial model associated with this code editor.
*/
- model?: IModel;
+ model?: ITextModel;
/**
* The initial value of the auto created model in the editor.
* To not create automatically a model, use `model: null`.
@@ -1142,11 +1167,11 @@ declare module monaco.editor {
/**
* Message to be rendered when hovering over the glyph margin decoration.
*/
- glyphMarginHoverMessage?: MarkedString | MarkedString[];
+ glyphMarginHoverMessage?: IMarkdownString | IMarkdownString[];
/**
- * Array of MarkedString to render as the decoration message.
+ * Array of MarkdownString to render as the decoration message.
*/
- hoverMessage?: MarkedString | MarkedString[];
+ hoverMessage?: IMarkdownString | IMarkdownString[];
/**
* Should the decoration expand to encompass a whole line.
*/
@@ -1217,10 +1242,6 @@ declare module monaco.editor {
* Options associated with this decoration.
*/
readonly options: IModelDecorationOptions;
- /**
- * A flag describing if this is a problem decoration (e.g. warning/error).
- */
- readonly isForValidation: boolean;
}
/**
@@ -1301,70 +1322,6 @@ declare module monaco.editor {
minor: number;
}
- /**
- * A builder and helper for edit operations for a command.
- */
- export interface IEditOperationBuilder {
- /**
- * Add a new edit operation (a replace operation).
- * @param range The range to replace (delete). May be empty to represent a simple insert.
- * @param text The text to replace with. May be null to represent a simple delete.
- */
- addEditOperation(range: Range, text: string): void;
- /**
- * Add a new edit operation (a replace operation).
- * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`
- * @param range The range to replace (delete). May be empty to represent a simple insert.
- * @param text The text to replace with. May be null to represent a simple delete.
- */
- addTrackedEditOperation(range: Range, text: string): void;
- /**
- * Track `selection` when applying edit operations.
- * A best effort will be made to not grow/expand the selection.
- * An empty selection will clamp to a nearby character.
- * @param selection The selection to track.
- * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection
- * should clamp to the previous or the next character.
- * @return A unique identifer.
- */
- trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;
- }
-
- /**
- * A helper for computing cursor state after a command.
- */
- export interface ICursorStateComputerData {
- /**
- * Get the inverse edit operations of the added edit operations.
- */
- getInverseEditOperations(): IIdentifiedSingleEditOperation[];
- /**
- * Get a previously tracked selection.
- * @param id The unique identifier returned by `trackSelection`.
- * @return The selection.
- */
- getTrackedSelection(id: string): Selection;
- }
-
- /**
- * A command that modifies text / cursor state on a model.
- */
- export interface ICommand {
- /**
- * Get the edit operations needed to execute this command.
- * @param model The model the command will execute on.
- * @param builder A helper to collect the needed edit operations and to track selections.
- */
- getEditOperations(model: ITokenizedModel, builder: IEditOperationBuilder): void;
- /**
- * Compute the cursor state after the edit operations were applied.
- * @param model The model the commad has executed on.
- * @param helper A helper to get inverse edit operations and to get previously tracked selections.
- * @return The cursor state after the command executed.
- */
- computeCursorState(model: ITokenizedModel, helper: ICursorStateComputerData): Selection;
- }
-
/**
* A single edit operation, that acts as a simple replace.
* i.e. Replace text at `range` with `text` in model.
@@ -1389,10 +1346,6 @@ declare module monaco.editor {
* A single edit operation, that has an identifier.
*/
export interface IIdentifiedSingleEditOperation {
- /**
- * An identifier associated with this single edit operation.
- */
- identifier: ISingleEditOperationIdentifier;
/**
* The range to replace. This can be empty to emulate a simple insert.
*/
@@ -1405,12 +1358,7 @@ declare module monaco.editor {
* This indicates that this operation has "insert" semantics.
* i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.
*/
- forceMoveMarkers: boolean;
- /**
- * This indicates that this operation is inserting automatic whitespace
- * that can be removed on next model edit operation if `config.trimAutoWhitespace` is true.
- */
- isAutoWhitespaceEdit?: boolean;
+ forceMoveMarkers?: boolean;
}
/**
@@ -1437,10 +1385,35 @@ declare module monaco.editor {
trimAutoWhitespace?: boolean;
}
+ export class FindMatch {
+ _findMatchBrand: void;
+ readonly range: Range;
+ readonly matches: string[];
+ }
+
/**
- * A textual read-only model.
+ * Describes the behavior of decorations when typing/editing near their edges.
+ * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`
+ */
+ export enum TrackedRangeStickiness {
+ AlwaysGrowsWhenTypingAtEdges = 0,
+ NeverGrowsWhenTypingAtEdges = 1,
+ GrowsOnlyWhenTypingBefore = 2,
+ GrowsOnlyWhenTypingAfter = 3,
+ }
+
+ /**
+ * A model.
*/
export interface ITextModel {
+ /**
+ * Gets the resource associated with this editor model.
+ */
+ readonly uri: Uri;
+ /**
+ * A unique identifier associated with this model.
+ */
+ readonly id: string;
/**
* Get the resolved options for this model.
*/
@@ -1564,7 +1537,7 @@ declare module monaco.editor {
*/
getFullModelRange(): Range;
/**
- * Returns iff the model was disposed or not.
+ * Returns if the model was disposed or not.
*/
isDisposed(): boolean;
/**
@@ -1578,7 +1551,7 @@ declare module monaco.editor {
* @param limitResultCount Limit the number of results
* @return The ranges where the matches are. It is empty if not matches have been found.
*/
- findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];
+ findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
/**
* Search the model.
* @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
@@ -1590,7 +1563,7 @@ declare module monaco.editor {
* @param limitResultCount Limit the number of results
* @return The ranges where the matches are. It is empty if no matches have been found.
*/
- findMatches(searchString: string, searchScope: IRange, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean, limitResultCount?: number): FindMatch[];
+ findMatches(searchString: string, searchScope: IRange, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
/**
* Search the model for the next match. Loops to the beginning of the model if needed.
* @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
@@ -1601,7 +1574,7 @@ declare module monaco.editor {
* @param captureMatches The result will contain the captured groups.
* @return The range where the next match is. It is null if no next match has been found.
*/
- findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;
+ findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch;
/**
* Search the model for the previous match. Loops to the end of the model if needed.
* @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
@@ -1612,20 +1585,7 @@ declare module monaco.editor {
* @param captureMatches The result will contain the captured groups.
* @return The range where the previous match is. It is null if no previous match has been found.
*/
- findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string, captureMatches: boolean): FindMatch;
- }
-
- export class FindMatch {
- _findMatchBrand: void;
- readonly range: Range;
- readonly matches: string[];
- }
-
- export interface IReadOnlyModel extends ITextModel {
- /**
- * Gets the resource associated with this editor model.
- */
- readonly uri: Uri;
+ findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch;
/**
* Get the language associated with this model.
*/
@@ -1644,12 +1604,6 @@ declare module monaco.editor {
* @return The word under or besides `position`. Will never be null.
*/
getWordUntilPosition(position: IPosition): IWordAtPosition;
- }
-
- /**
- * A model that is tokenized.
- */
- export interface ITokenizedModel extends ITextModel {
/**
* Get the language associated with this model.
*/
@@ -1668,29 +1622,6 @@ declare module monaco.editor {
* @return The word under or besides `position`. Will never be null.
*/
getWordUntilPosition(position: IPosition): IWordAtPosition;
- }
-
- /**
- * A model that can track markers.
- */
- export interface ITextModelWithMarkers extends ITextModel {
- }
-
- /**
- * Describes the behavior of decorations when typing/editing near their edges.
- * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`
- */
- export enum TrackedRangeStickiness {
- AlwaysGrowsWhenTypingAtEdges = 0,
- NeverGrowsWhenTypingAtEdges = 1,
- GrowsOnlyWhenTypingBefore = 2,
- GrowsOnlyWhenTypingAfter = 3,
- }
-
- /**
- * A model that can have decorations.
- */
- export interface ITextModelWithDecorations {
/**
* Perform a minimum ammount of operations, in order to transform the decorations
* identified by `oldDecorations` to the decorations described by `newDecorations`
@@ -1746,12 +1677,12 @@ declare module monaco.editor {
* @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
*/
getAllDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
- }
-
- /**
- * An editable text model.
- */
- export interface IEditableTextModel extends ITextModelWithMarkers {
+ /**
+ * Gets all the decorations that should be rendered in the overview ruler as an array.
+ * @param ownerId If set, it will ignore decorations belonging to other owners.
+ * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
+ */
+ getOverviewRulerDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
/**
* Normalize a string containing whitespace according to indentation rules (converts to spaces or to tabs).
*/
@@ -1790,12 +1721,6 @@ declare module monaco.editor {
* @return The inverse edit operations, that, when applied, will bring the model back to the previous state.
*/
applyEdits(operations: IIdentifiedSingleEditOperation[]): IIdentifiedSingleEditOperation[];
- }
-
- /**
- * A model.
- */
- export interface IModel extends IReadOnlyModel, IEditableTextModel, ITextModelWithMarkers, ITokenizedModel, ITextModelWithDecorations {
/**
* An event emitted when the contents of the model have changed.
* @event
@@ -1816,15 +1741,16 @@ declare module monaco.editor {
* @event
*/
onDidChangeLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the language configuration associated with the model has changed.
+ * @event
+ */
+ onDidChangeLanguageConfiguration(listener: (e: IModelLanguageConfigurationChangedEvent) => void): IDisposable;
/**
* An event emitted right before disposing the model.
* @event
*/
onWillDispose(listener: () => void): IDisposable;
- /**
- * A unique identifier associated with this model.
- */
- readonly id: string;
/**
* Destroy this model. This will unbind the model from the mode
* and make all necessary clean-up to release this object to the GC.
@@ -1832,6 +1758,70 @@ declare module monaco.editor {
dispose(): void;
}
+ /**
+ * A builder and helper for edit operations for a command.
+ */
+ export interface IEditOperationBuilder {
+ /**
+ * Add a new edit operation (a replace operation).
+ * @param range The range to replace (delete). May be empty to represent a simple insert.
+ * @param text The text to replace with. May be null to represent a simple delete.
+ */
+ addEditOperation(range: Range, text: string): void;
+ /**
+ * Add a new edit operation (a replace operation).
+ * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`
+ * @param range The range to replace (delete). May be empty to represent a simple insert.
+ * @param text The text to replace with. May be null to represent a simple delete.
+ */
+ addTrackedEditOperation(range: Range, text: string): void;
+ /**
+ * Track `selection` when applying edit operations.
+ * A best effort will be made to not grow/expand the selection.
+ * An empty selection will clamp to a nearby character.
+ * @param selection The selection to track.
+ * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection
+ * should clamp to the previous or the next character.
+ * @return A unique identifer.
+ */
+ trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;
+ }
+
+ /**
+ * A helper for computing cursor state after a command.
+ */
+ export interface ICursorStateComputerData {
+ /**
+ * Get the inverse edit operations of the added edit operations.
+ */
+ getInverseEditOperations(): IIdentifiedSingleEditOperation[];
+ /**
+ * Get a previously tracked selection.
+ * @param id The unique identifier returned by `trackSelection`.
+ * @return The selection.
+ */
+ getTrackedSelection(id: string): Selection;
+ }
+
+ /**
+ * A command that modifies text / cursor state on a model.
+ */
+ export interface ICommand {
+ /**
+ * Get the edit operations needed to execute this command.
+ * @param model The model the command will execute on.
+ * @param builder A helper to collect the needed edit operations and to track selections.
+ */
+ getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void;
+ /**
+ * Compute the cursor state after the edit operations were applied.
+ * @param model The model the commad has executed on.
+ * @param helper A helper to get inverse edit operations and to get previously tracked selections.
+ * @return The cursor state after the command executed.
+ */
+ computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection;
+ }
+
/**
* A model for the diff editor.
*/
@@ -1839,11 +1829,11 @@ declare module monaco.editor {
/**
* Original model.
*/
- original: IModel;
+ original: ITextModel;
/**
* Modified model.
*/
- modified: IModel;
+ modified: ITextModel;
}
/**
@@ -1892,63 +1882,11 @@ declare module monaco.editor {
readonly charChanges: ICharChange[];
}
- /**
- * Information about a line in the diff editor
- */
- export interface IDiffLineInformation {
- readonly equivalentLineNumber: number;
- }
-
export interface INewScrollPosition {
scrollLeft?: number;
scrollTop?: number;
}
- /**
- * Description of an action contribution
- */
- export interface IActionDescriptor {
- /**
- * An unique identifier of the contributed action.
- */
- id: string;
- /**
- * A label of the action that will be presented to the user.
- */
- label: string;
- /**
- * Precondition rule.
- */
- precondition?: string;
- /**
- * An array of keybindings for the action.
- */
- keybindings?: number[];
- /**
- * The keybinding rule (condition on top of precondition).
- */
- keybindingContext?: string;
- /**
- * Control if the action should show up in the context menu and where.
- * The context menu of the editor has these default:
- * navigation - The navigation group comes first in all cases.
- * 1_modification - This group comes next and contains commands that modify your code.
- * 9_cutcopypaste - The last default group with the basic editing commands.
- * You can also create your own group.
- * Defaults to null (don't show in context menu).
- */
- contextMenuGroupId?: string;
- /**
- * Control the order in the context menu group.
- */
- contextMenuOrder?: number;
- /**
- * Method that will be executed when the action is triggered.
- * @param editor The editor instance is passed in as a convinience
- */
- run(editor: ICommonCodeEditor): void | Promise;
- }
-
export interface IEditorAction {
readonly id: string;
readonly label: string;
@@ -1957,7 +1895,7 @@ declare module monaco.editor {
run(): Promise;
}
- export type IEditorModel = IModel | IDiffEditorModel;
+ export type IEditorModel = ITextModel | IDiffEditorModel;
/**
* A (serializable) state of the cursors.
@@ -2001,6 +1939,11 @@ declare module monaco.editor {
*/
export type IEditorViewState = ICodeEditorViewState | IDiffEditorViewState;
+ export const enum ScrollType {
+ Smooth = 0,
+ Immediate = 1,
+ }
+
/**
* An editor.
*/
@@ -2040,10 +1983,6 @@ declare module monaco.editor {
* Returns true if this editor has keyboard focus (e.g. cursor is blinking).
*/
isFocused(): boolean;
- /**
- * Returns all actions associated with this editor.
- */
- getActions(): IEditorAction[];
/**
* Returns all actions associated with this editor.
*/
@@ -2072,27 +2011,27 @@ declare module monaco.editor {
/**
* Scroll vertically as necessary and reveal a line.
*/
- revealLine(lineNumber: number): void;
+ revealLine(lineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal a line centered vertically.
*/
- revealLineInCenter(lineNumber: number): void;
+ revealLineInCenter(lineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal a line centered vertically only if it lies outside the viewport.
*/
- revealLineInCenterIfOutsideViewport(lineNumber: number): void;
+ revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a position.
*/
- revealPosition(position: IPosition, revealVerticalInCenter?: boolean, revealHorizontal?: boolean): void;
+ revealPosition(position: IPosition, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a position centered vertically.
*/
- revealPositionInCenter(position: IPosition): void;
+ revealPositionInCenter(position: IPosition, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a position centered vertically only if it lies outside the viewport.
*/
- revealPositionInCenterIfOutsideViewport(position: IPosition): void;
+ revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType?: ScrollType): void;
/**
* Returns the primary selection of the editor.
*/
@@ -2129,31 +2068,31 @@ declare module monaco.editor {
/**
* Scroll vertically as necessary and reveal lines.
*/
- revealLines(startLineNumber: number, endLineNumber: number): void;
+ revealLines(startLineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal lines centered vertically.
*/
- revealLinesInCenter(lineNumber: number, endLineNumber: number): void;
+ revealLinesInCenter(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically as necessary and reveal lines centered vertically only if it lies outside the viewport.
*/
- revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number): void;
+ revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range.
*/
- revealRange(range: IRange): void;
+ revealRange(range: IRange, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range centered vertically.
*/
- revealRangeInCenter(range: IRange): void;
+ revealRangeInCenter(range: IRange, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range at the top of the viewport.
*/
- revealRangeAtTop(range: IRange): void;
+ revealRangeAtTop(range: IRange, scrollType?: ScrollType): void;
/**
* Scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.
*/
- revealRangeInCenterIfOutsideViewport(range: IRange): void;
+ revealRangeInCenterIfOutsideViewport(range: IRange, scrollType?: ScrollType): void;
/**
* Directly trigger a handler or an editor action.
* @param source The source of the call.
@@ -2198,233 +2137,10 @@ declare module monaco.editor {
restoreViewState?(state: any): void;
}
- export interface ICommonCodeEditor extends IEditor {
- /**
- * An event emitted when the content of the current model has changed.
- * @event
- */
- onDidChangeModelContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the language of the current model has changed.
- * @event
- */
- onDidChangeModelLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the options of the current model has changed.
- * @event
- */
- onDidChangeModelOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)
- * @event
- */
- onDidChangeConfiguration(listener: (e: IConfigurationChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the cursor position has changed.
- * @event
- */
- onDidChangeCursorPosition(listener: (e: ICursorPositionChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the cursor selection has changed.
- * @event
- */
- onDidChangeCursorSelection(listener: (e: ICursorSelectionChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).
- * @event
- */
- onDidChangeModel(listener: (e: IModelChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the decorations of the current model have changed.
- * @event
- */
- onDidChangeModelDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;
- /**
- * An event emitted when the text inside this editor gained focus (i.e. cursor blinking).
- * @event
- */
- onDidFocusEditorText(listener: () => void): IDisposable;
- /**
- * An event emitted when the text inside this editor lost focus.
- * @event
- */
- onDidBlurEditorText(listener: () => void): IDisposable;
- /**
- * An event emitted when the text inside this editor or an editor widget gained focus.
- * @event
- */
- onDidFocusEditor(listener: () => void): IDisposable;
- /**
- * An event emitted when the text inside this editor or an editor widget lost focus.
- * @event
- */
- onDidBlurEditor(listener: () => void): IDisposable;
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): ICodeEditorViewState;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: ICodeEditorViewState): void;
- /**
- * Returns true if this editor or one of its widgets has keyboard focus.
- */
- hasWidgetFocus(): boolean;
- /**
- * Get a contribution of this editor.
- * @id Unique identifier of the contribution.
- * @return The contribution or null if contribution not found.
- */
- getContribution(id: string): T;
- /**
- * Type the getModel() of IEditor.
- */
- getModel(): IModel;
- /**
- * Returns the current editor's configuration
- */
- getConfiguration(): InternalEditorOptions;
- /**
- * Get value of the current model attached to this editor.
- * @see IModel.getValue
- */
- getValue(options?: {
- preserveBOM: boolean;
- lineEnding: string;
- }): string;
- /**
- * Set the value of the current model attached to this editor.
- * @see IModel.setValue
- */
- setValue(newValue: string): void;
- /**
- * Get the scrollWidth of the editor's viewport.
- */
- getScrollWidth(): number;
- /**
- * Get the scrollLeft of the editor's viewport.
- */
- getScrollLeft(): number;
- /**
- * Get the scrollHeight of the editor's viewport.
- */
- getScrollHeight(): number;
- /**
- * Get the scrollTop of the editor's viewport.
- */
- getScrollTop(): number;
- /**
- * Change the scrollLeft of the editor's viewport.
- */
- setScrollLeft(newScrollLeft: number): void;
- /**
- * Change the scrollTop of the editor's viewport.
- */
- setScrollTop(newScrollTop: number): void;
- /**
- * Change the scroll position of the editor's viewport.
- */
- setScrollPosition(position: INewScrollPosition): void;
- /**
- * Get an action that is a contribution to this editor.
- * @id Unique identifier of the contribution.
- * @return The action or null if action not found.
- */
- getAction(id: string): IEditorAction;
- /**
- * Execute a command on the editor.
- * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
- * @param source The source of the call.
- * @param command The command to execute
- */
- executeCommand(source: string, command: ICommand): void;
- /**
- * Push an "undo stop" in the undo-redo stack.
- */
- pushUndoStop(): boolean;
- /**
- * Execute edits on the editor.
- * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
- * @param source The source of the call.
- * @param edits The edits to execute.
- * @param endCursoState Cursor state after the edits were applied.
- */
- executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean;
- /**
- * Execute multiple (concommitent) commands on the editor.
- * @param source The source of the call.
- * @param command The commands to execute
- */
- executeCommands(source: string, commands: ICommand[]): void;
- /**
- * Get all the decorations on a line (filtering out decorations from other editors).
- */
- getLineDecorations(lineNumber: number): IModelDecoration[];
- /**
- * All decorations added through this call will get the ownerId of this editor.
- * @see IModel.deltaDecorations
- */
- deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
- /**
- * Get the layout info for the editor.
- */
- getLayoutInfo(): EditorLayoutInfo;
- }
-
- export interface ICommonDiffEditor extends IEditor {
- /**
- * An event emitted when the diff information computed by this diff editor has been updated.
- * @event
- */
- onDidUpdateDiff(listener: () => void): IDisposable;
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): IDiffEditorViewState;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: IDiffEditorViewState): void;
- /**
- * Type the getModel() of IEditor.
- */
- getModel(): IDiffEditorModel;
- /**
- * Get the `original` editor.
- */
- getOriginalEditor(): ICommonCodeEditor;
- /**
- * Get the `modified` editor.
- */
- getModifiedEditor(): ICommonCodeEditor;
- /**
- * Get the computed diff information.
- */
- getLineChanges(): ILineChange[];
- /**
- * Get information based on computed diff about a line number from the original model.
- * If the diff computation is not finished or the model is missing, will return null.
- */
- getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation;
- /**
- * Get information based on computed diff about a line number from the modified model.
- * If the diff computation is not finished or the model is missing, will return null.
- */
- getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation;
- /**
- * @see ICodeEditor.getValue
- */
- getValue(options?: {
- preserveBOM: boolean;
- lineEnding: string;
- }): string;
- }
-
/**
* The type of the `IEditor`.
*/
- export var EditorType: {
+ export const EditorType: {
ICodeEditor: string;
IDiffEditor: string;
};
@@ -2443,6 +2159,12 @@ declare module monaco.editor {
readonly newLanguage: string;
}
+ /**
+ * An event describing that the language configuration associated with a model has changed.
+ */
+ export interface IModelLanguageConfigurationChangedEvent {
+ }
+
export interface IModelContentChange {
/**
* The range that got replaced.
@@ -2490,18 +2212,6 @@ declare module monaco.editor {
* An event describing that model decorations have changed.
*/
export interface IModelDecorationsChangedEvent {
- /**
- * Lists of ids for added decorations.
- */
- readonly addedDecorations: string[];
- /**
- * Lists of ids for changed decorations.
- */
- readonly changedDecorations: string[];
- /**
- * List of ids for removed decorations.
- */
- readonly removedDecorations: string[];
}
/**
@@ -2690,6 +2400,11 @@ declare module monaco.editor {
* Defaults to false.
*/
enabled?: boolean;
+ /**
+ * Control the side of the minimap in editor.
+ * Defaults to 'right'.
+ */
+ side?: 'right' | 'left';
/**
* Control the rendering of the minimap slider.
* Defaults to 'mouseover'.
@@ -2707,6 +2422,17 @@ declare module monaco.editor {
maxColumn?: number;
}
+ /**
+ * Configuration options for editor minimap
+ */
+ export interface IEditorLightbulbOptions {
+ /**
+ * Enable the lightbulb code action.
+ * Defaults to true.
+ */
+ enabled?: boolean;
+ }
+
/**
* Configuration options for the editor.
*/
@@ -2737,7 +2463,7 @@ declare module monaco.editor {
* Otherwise, line numbers will not be rendered.
* Defaults to true.
*/
- lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);
+ lineNumbers?: 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
/**
* Should the corresponding line be selected when clicking on the line number?
* Defaults to true.
@@ -2822,6 +2548,10 @@ declare module monaco.editor {
* Defaults to 'line'.
*/
cursorStyle?: string;
+ /**
+ * Control the width of the cursor when cursorStyle is set to 'line'
+ */
+ cursorWidth?: number;
/**
* Enable font ligatures.
* Defaults to false.
@@ -2848,6 +2578,11 @@ declare module monaco.editor {
* Defaults to true.
*/
scrollBeyondLastLine?: boolean;
+ /**
+ * Enable that the editor animates scrolling to a position.
+ * Defaults to false.
+ */
+ smoothScrolling?: boolean;
/**
* Enable that the editor will install an interval to check if its container dom node size has changed.
* Enabling this might have a severe performance impact.
@@ -2913,6 +2648,10 @@ declare module monaco.editor {
* Defaults to true.
*/
links?: boolean;
+ /**
+ * Enable inline color decorators and color picker rendering.
+ */
+ colorDecorators?: boolean;
/**
* Enable custom contextmenu.
* Defaults to true.
@@ -2990,7 +2729,7 @@ declare module monaco.editor {
* Accept suggestions on ENTER.
* Defaults to 'on'.
*/
- acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';
+ acceptSuggestionOnEnter?: boolean | 'on' | 'smart' | 'off';
/**
* Accept suggestions on provider defined characters.
* Defaults to true.
@@ -3008,6 +2747,10 @@ declare module monaco.editor {
* Enable word based suggestions. Defaults to 'true'
*/
wordBasedSuggestions?: boolean;
+ /**
+ * The history mode for suggestions.
+ */
+ suggestSelection?: string;
/**
* The font size for the suggest widget.
* Defaults to the editor font size.
@@ -3033,6 +2776,10 @@ declare module monaco.editor {
* Defaults to true.
*/
codeLens?: boolean;
+ /**
+ * Control the behavior and rendering of the code action lightbulb.
+ */
+ lightbulb?: IEditorLightbulbOptions;
/**
* Enable code folding
* Defaults to true in vscode and to false in monaco-editor.
@@ -3228,6 +2975,7 @@ declare module monaco.editor {
export interface InternalEditorMinimapOptions {
readonly enabled: boolean;
+ readonly side: 'right' | 'left';
readonly showSlider: 'always' | 'mouseover';
readonly renderCharacters: boolean;
readonly maxColumn: number;
@@ -3250,14 +2998,21 @@ declare module monaco.editor {
readonly wordWrapBreakObtrusiveCharacters: string;
}
+ export const enum RenderLineNumbersType {
+ Off = 0,
+ On = 1,
+ Relative = 2,
+ Interval = 3,
+ Custom = 4,
+ }
+
export interface InternalEditorViewOptions {
readonly extraEditorClassName: string;
readonly disableMonospaceOptimizations: boolean;
readonly rulers: number[];
readonly ariaLabel: string;
- readonly renderLineNumbers: boolean;
+ readonly renderLineNumbers: RenderLineNumbersType;
readonly renderCustomLineNumbers: (lineNumber: number) => string;
- readonly renderRelativeLineNumbers: boolean;
readonly selectOnLineNumbers: boolean;
readonly glyphMargin: boolean;
readonly revealHorizontalRightPadding: number;
@@ -3267,8 +3022,10 @@ declare module monaco.editor {
readonly cursorBlinking: TextEditorCursorBlinkingStyle;
readonly mouseWheelZoom: boolean;
readonly cursorStyle: TextEditorCursorStyle;
+ readonly cursorWidth: number;
readonly hideCursorInOverviewRuler: boolean;
readonly scrollBeyondLastLine: boolean;
+ readonly smoothScrolling: boolean;
readonly stopRenderingLineAfter: number;
readonly renderWhitespace: 'none' | 'boundary' | 'all';
readonly renderControlCharacters: boolean;
@@ -3300,6 +3057,7 @@ declare module monaco.editor {
readonly acceptSuggestionOnCommitCharacter: boolean;
readonly snippetSuggestions: 'top' | 'bottom' | 'inline' | 'none';
readonly wordBasedSuggestions: boolean;
+ readonly suggestSelection: 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix';
readonly suggestFontSize: number;
readonly suggestLineHeight: number;
readonly selectionHighlight: boolean;
@@ -3309,6 +3067,8 @@ declare module monaco.editor {
readonly showFoldingControls: 'always' | 'mouseover';
readonly matchBrackets: boolean;
readonly find: InternalEditorFindOptions;
+ readonly colorDecorators: boolean;
+ readonly lightbulbEnabled: boolean;
}
/**
@@ -3418,6 +3178,10 @@ declare module monaco.editor {
* The height of the content (actual height)
*/
readonly contentHeight: number;
+ /**
+ * The position for the minimap
+ */
+ readonly minimapLeft: number;
/**
* The width of the minimap
*/
@@ -3749,7 +3513,72 @@ declare module monaco.editor {
/**
* A rich code editor.
*/
- export interface ICodeEditor extends ICommonCodeEditor {
+ export interface ICodeEditor extends IEditor {
+ /**
+ * An event emitted when the content of the current model has changed.
+ * @event
+ */
+ onDidChangeModelContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the language of the current model has changed.
+ * @event
+ */
+ onDidChangeModelLanguage(listener: (e: IModelLanguageChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the language configuration of the current model has changed.
+ * @event
+ */
+ onDidChangeModelLanguageConfiguration(listener: (e: IModelLanguageConfigurationChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the options of the current model has changed.
+ * @event
+ */
+ onDidChangeModelOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)
+ * @event
+ */
+ onDidChangeConfiguration(listener: (e: IConfigurationChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the cursor position has changed.
+ * @event
+ */
+ onDidChangeCursorPosition(listener: (e: ICursorPositionChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the cursor selection has changed.
+ * @event
+ */
+ onDidChangeCursorSelection(listener: (e: ICursorSelectionChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).
+ * @event
+ */
+ onDidChangeModel(listener: (e: IModelChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the decorations of the current model have changed.
+ * @event
+ */
+ onDidChangeModelDecorations(listener: (e: IModelDecorationsChangedEvent) => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor gained focus (i.e. cursor blinking).
+ * @event
+ */
+ onDidFocusEditorText(listener: () => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor lost focus.
+ * @event
+ */
+ onDidBlurEditorText(listener: () => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor or an editor widget gained focus.
+ * @event
+ */
+ onDidFocusEditor(listener: () => void): IDisposable;
+ /**
+ * An event emitted when the text inside this editor or an editor widget lost focus.
+ * @event
+ */
+ onDidBlurEditor(listener: () => void): IDisposable;
/**
* An event emitted on a "mouseup".
* @event
@@ -3795,6 +3624,134 @@ declare module monaco.editor {
* @event
*/
onDidScrollChange(listener: (e: IScrollEvent) => void): IDisposable;
+ /**
+ * Saves current view state of the editor in a serializable object.
+ */
+ saveViewState(): ICodeEditorViewState;
+ /**
+ * Restores the view state of the editor from a serializable object generated by `saveViewState`.
+ */
+ restoreViewState(state: ICodeEditorViewState): void;
+ /**
+ * Returns true if this editor or one of its widgets has keyboard focus.
+ */
+ hasWidgetFocus(): boolean;
+ /**
+ * Get a contribution of this editor.
+ * @id Unique identifier of the contribution.
+ * @return The contribution or null if contribution not found.
+ */
+ getContribution(id: string): T;
+ /**
+ * Type the getModel() of IEditor.
+ */
+ getModel(): ITextModel;
+ /**
+ * Returns the current editor's configuration
+ */
+ getConfiguration(): InternalEditorOptions;
+ /**
+ * Get value of the current model attached to this editor.
+ * @see `ITextModel.getValue`
+ */
+ getValue(options?: {
+ preserveBOM: boolean;
+ lineEnding: string;
+ }): string;
+ /**
+ * Set the value of the current model attached to this editor.
+ * @see `ITextModel.setValue`
+ */
+ setValue(newValue: string): void;
+ /**
+ * Get the scrollWidth of the editor's viewport.
+ */
+ getScrollWidth(): number;
+ /**
+ * Get the scrollLeft of the editor's viewport.
+ */
+ getScrollLeft(): number;
+ /**
+ * Get the scrollHeight of the editor's viewport.
+ */
+ getScrollHeight(): number;
+ /**
+ * Get the scrollTop of the editor's viewport.
+ */
+ getScrollTop(): number;
+ /**
+ * Change the scrollLeft of the editor's viewport.
+ */
+ setScrollLeft(newScrollLeft: number): void;
+ /**
+ * Change the scrollTop of the editor's viewport.
+ */
+ setScrollTop(newScrollTop: number): void;
+ /**
+ * Change the scroll position of the editor's viewport.
+ */
+ setScrollPosition(position: INewScrollPosition): void;
+ /**
+ * Get an action that is a contribution to this editor.
+ * @id Unique identifier of the contribution.
+ * @return The action or null if action not found.
+ */
+ getAction(id: string): IEditorAction;
+ /**
+ * Execute a command on the editor.
+ * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
+ * @param source The source of the call.
+ * @param command The command to execute
+ */
+ executeCommand(source: string, command: ICommand): void;
+ /**
+ * Push an "undo stop" in the undo-redo stack.
+ */
+ pushUndoStop(): boolean;
+ /**
+ * Execute edits on the editor.
+ * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
+ * @param source The source of the call.
+ * @param edits The edits to execute.
+ * @param endCursoState Cursor state after the edits were applied.
+ */
+ executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean;
+ /**
+ * Execute multiple (concommitent) commands on the editor.
+ * @param source The source of the call.
+ * @param command The commands to execute
+ */
+ executeCommands(source: string, commands: ICommand[]): void;
+ /**
+ * Get all the decorations on a line (filtering out decorations from other editors).
+ */
+ getLineDecorations(lineNumber: number): IModelDecoration[];
+ /**
+ * All decorations added through this call will get the ownerId of this editor.
+ * @see `ITextModel.deltaDecorations`
+ */
+ deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
+ /**
+ * Get the layout info for the editor.
+ */
+ getLayoutInfo(): EditorLayoutInfo;
+ /**
+ * Returns the range that is currently centered in the view port.
+ */
+ getCenteredRangeInViewport(): Range;
+ /**
+ * Returns the ranges that are currently visible.
+ * Does not account for horizontal scrolling.
+ */
+ getVisibleRanges(): Range[];
+ /**
+ * Get the vertical position (top offset) for the line w.r.t. to the first line.
+ */
+ getTopForLineNumber(lineNumber: number): number;
+ /**
+ * Get the vertical position (top offset) for the position w.r.t. to the first line.
+ */
+ getTopForPosition(lineNumber: number, column: number): number;
/**
* Returns the editor's dom node
*/
@@ -3829,10 +3786,6 @@ declare module monaco.editor {
* Change the view zones. View zones are lost when a new model is attached to the editor.
*/
changeViewZones(callback: (accessor: IViewZoneChangeAccessor) => void): void;
- /**
- * Returns the range that is currently centered in the view port.
- */
- getCenteredRangeInViewport(): Range;
/**
* Get the horizontal position (left offset) for the column w.r.t to the beginning of the line.
* This method works only if the line `lineNumber` is currently rendered (in the editor's viewport).
@@ -3843,14 +3796,6 @@ declare module monaco.editor {
* Force an editor render now.
*/
render(): void;
- /**
- * Get the vertical position (top offset) for the line w.r.t. to the first line.
- */
- getTopForLineNumber(lineNumber: number): number;
- /**
- * Get the vertical position (top offset) for the position w.r.t. to the first line.
- */
- getTopForPosition(lineNumber: number, column: number): number;
/**
* Get the hit test target at coordinates `clientX` and `clientY`.
* The coordinates are relative to the top-left of the viewport.
@@ -3876,14 +3821,60 @@ declare module monaco.editor {
applyFontInfo(target: HTMLElement): void;
}
+ /**
+ * Information about a line in the diff editor
+ */
+ export interface IDiffLineInformation {
+ readonly equivalentLineNumber: number;
+ }
+
/**
* A rich diff editor.
*/
- export interface IDiffEditor extends ICommonDiffEditor {
+ export interface IDiffEditor extends IEditor {
/**
* @see ICodeEditor.getDomNode
*/
getDomNode(): HTMLElement;
+ /**
+ * An event emitted when the diff information computed by this diff editor has been updated.
+ * @event
+ */
+ onDidUpdateDiff(listener: () => void): IDisposable;
+ /**
+ * Saves current view state of the editor in a serializable object.
+ */
+ saveViewState(): IDiffEditorViewState;
+ /**
+ * Restores the view state of the editor from a serializable object generated by `saveViewState`.
+ */
+ restoreViewState(state: IDiffEditorViewState): void;
+ /**
+ * Type the getModel() of IEditor.
+ */
+ getModel(): IDiffEditorModel;
+ /**
+ * Get the `original` editor.
+ */
+ getOriginalEditor(): ICodeEditor;
+ /**
+ * Get the `modified` editor.
+ */
+ getModifiedEditor(): ICodeEditor;
+ /**
+ * Get the computed diff information.
+ */
+ getLineChanges(): ILineChange[];
+ /**
+ * Get information based on computed diff about a line number from the original model.
+ * If the diff computation is not finished or the model is missing, will return null.
+ */
+ getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation;
+ /**
+ * Get information based on computed diff about a line number from the modified model.
+ * If the diff computation is not finished or the model is missing, will return null.
+ */
+ getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation;
}
export class FontInfo extends BareFontInfo {
@@ -3904,6 +3895,10 @@ declare module monaco.editor {
readonly lineHeight: number;
readonly letterSpacing: number;
}
+
+ //compatibility:
+ export type IReadOnlyModel = ITextModel;
+ export type IModel = ITextModel;
}
declare module monaco.languages {
@@ -4057,6 +4052,14 @@ declare module monaco.languages {
*/
export function registerCompletionItemProvider(languageId: string, provider: CompletionItemProvider): IDisposable;
+ /**
+ * Register a document color provider (used by Color Picker, Color Decorator).
+ */
+ export function registerColorProvider(languageId: string, provider: DocumentColorProvider): IDisposable;
+
+ /**
+ * Register a folding provider
+ */
/**
* Contains additional diagnostic information about the context in which
* a [code action](#CodeActionProvider.provideCodeActions) is run.
@@ -4068,6 +4071,10 @@ declare module monaco.languages {
* @readonly
*/
readonly markers: editor.IMarkerData[];
+ /**
+ * Requested kind of actions to return.
+ */
+ readonly only?: string;
}
/**
@@ -4078,7 +4085,7 @@ declare module monaco.languages {
/**
* Provide commands for the given document and range.
*/
- provideCodeActions(model: editor.IReadOnlyModel, range: Range, context: CodeActionContext, token: CancellationToken): Command[] | Thenable;
+ provideCodeActions(model: editor.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): (Command | CodeAction)[] | Thenable<(Command | CodeAction)[]>;
}
/**
@@ -4147,7 +4154,11 @@ declare module monaco.languages {
/**
* A human-readable string that represents a doc-comment.
*/
- documentation?: string;
+ documentation?: string | IMarkdownString;
+ /**
+ * A command that should be run upon acceptance of this item.
+ */
+ command?: Command;
/**
* A string that should be used when comparing this item
* with other items. When `falsy` the [label](#CompletionItem.label)
@@ -4176,6 +4187,12 @@ declare module monaco.languages {
* [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`.
*
@@ -4187,6 +4204,12 @@ declare module monaco.languages {
* line completions were [requested](#CompletionItemProvider.provideCompletionItems) at.~~
*/
textEdit?: editor.ISingleEditOperation;
+ /**
+ * An optional array of additional text edits that are applied when
+ * selecting this completion. Edits must not overlap with the main edit
+ * nor with themselves.
+ */
+ additionalTextEdits?: editor.ISingleEditOperation[];
}
/**
@@ -4205,6 +4228,23 @@ declare module monaco.languages {
items: CompletionItem[];
}
+ /**
+ * Contains additional information about the context in which
+ * [completion provider](#CompletionItemProvider.provideCompletionItems) is triggered.
+ */
+ export interface CompletionContext {
+ /**
+ * How the completion was triggered.
+ */
+ triggerKind: SuggestTriggerKind;
+ /**
+ * Character that triggered the completion item provider.
+ *
+ * `undefined` if provider was not triggered by a character.
+ */
+ triggerCharacter?: string;
+ }
+
/**
* The completion item provider interface defines the contract between extensions and
* the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).
@@ -4221,7 +4261,7 @@ declare module monaco.languages {
/**
* Provide completion items for the given position and document.
*/
- provideCompletionItems(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): CompletionItem[] | Thenable | CompletionList | Thenable;
+ provideCompletionItems(document: editor.ITextModel, position: Position, token: CancellationToken, context: CompletionContext): CompletionItem[] | Thenable | CompletionList | Thenable;
/**
* Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation)
* or [details](#CompletionItem.detail).
@@ -4286,6 +4326,10 @@ declare module monaco.languages {
* settings will be used.
*/
surroundingPairs?: IAutoClosingPair[];
+ /**
+ * The language's folding rules.
+ */
+ folding?: FoldingRules;
/**
* **Deprecated** Do not use.
*
@@ -4316,6 +4360,34 @@ declare module monaco.languages {
unIndentedLinePattern?: RegExp;
}
+ /**
+ * Describes language specific folding markers such as '#region' and '#endregion'.
+ * The start and end regexes will be tested against the contents of all lines and must be designed efficiently:
+ * - the regex should start with '^'
+ * - regexp flags (i, g) are ignored
+ */
+ export interface FoldingMarkers {
+ start: RegExp;
+ end: RegExp;
+ }
+
+ /**
+ * Describes folding rules for a language.
+ */
+ export interface FoldingRules {
+ /**
+ * Used by the indentation based strategy to decide wheter empty lines belong to the previous or the next block.
+ * A language adheres to the off-side rule if blocks in that language are expressed by their indentation.
+ * See [wikipedia](https://en.wikipedia.org/wiki/Off-side_rule) for more information.
+ * If not set, `false` is used and empty lines belong to the previous block.
+ */
+ offSide?: boolean;
+ /**
+ * Region markers used by the language.
+ */
+ markers?: FoldingMarkers;
+ }
+
/**
* Describes a rule to be evaluated when pressing Enter.
*/
@@ -4431,7 +4503,7 @@ declare module monaco.languages {
/**
* The contents of this hover.
*/
- contents: MarkedString[];
+ contents: IMarkdownString[];
/**
* The range to which this hover applies. When missing, the
* editor will use the range at the current position or the
@@ -4450,7 +4522,24 @@ declare module monaco.languages {
* position will be merged by the editor. A hover can have a range which defaults
* to the word range at the position when omitted.
*/
- provideHover(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Hover | Thenable;
+ provideHover(model: editor.ITextModel, position: Position, token: CancellationToken): Hover | Thenable;
+ }
+
+ /**
+ * How a suggest provider was triggered.
+ */
+ export enum SuggestTriggerKind {
+ Invoke = 0,
+ TriggerCharacter = 1,
+ TriggerForIncompleteCompletions = 2,
+ }
+
+ export interface CodeAction {
+ title: string;
+ command?: Command;
+ edit?: WorkspaceEdit;
+ diagnostics?: editor.IMarkerData[];
+ kind?: string;
}
/**
@@ -4467,7 +4556,7 @@ declare module monaco.languages {
* The human-readable doc-comment of this signature. Will be shown
* in the UI but can be omitted.
*/
- documentation?: string;
+ documentation?: string | IMarkdownString;
}
/**
@@ -4485,7 +4574,7 @@ declare module monaco.languages {
* The human-readable doc-comment of this signature. Will be shown
* in the UI but can be omitted.
*/
- documentation?: string;
+ documentation?: string | IMarkdownString;
/**
* The parameters of this signature.
*/
@@ -4521,7 +4610,7 @@ declare module monaco.languages {
/**
* Provide help for the signature at the given position and document.
*/
- provideSignatureHelp(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): SignatureHelp | Thenable;
+ provideSignatureHelp(model: editor.ITextModel, position: Position, token: CancellationToken): SignatureHelp | Thenable;
}
/**
@@ -4567,7 +4656,7 @@ declare module monaco.languages {
* Provide a set of document highlights, like all occurrences of a variable or
* all exit-points of a function.
*/
- provideDocumentHighlights(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable;
+ provideDocumentHighlights(model: editor.ITextModel, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable;
}
/**
@@ -4589,7 +4678,7 @@ declare module monaco.languages {
/**
* Provide a set of project-wide references for the given position and document.
*/
- provideReferences(model: editor.IReadOnlyModel, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable;
+ provideReferences(model: editor.ITextModel, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable;
}
/**
@@ -4623,7 +4712,7 @@ declare module monaco.languages {
/**
* Provide the definition of the symbol at the given position and document.
*/
- provideDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;
+ provideDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): Definition | Thenable;
}
/**
@@ -4634,7 +4723,7 @@ declare module monaco.languages {
/**
* Provide the implementation of the symbol at the given position and document.
*/
- provideImplementation(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;
+ provideImplementation(model: editor.ITextModel, position: Position, token: CancellationToken): Definition | Thenable;
}
/**
@@ -4645,7 +4734,7 @@ declare module monaco.languages {
/**
* Provide the type definition of the symbol at the given position and document.
*/
- provideTypeDefinition(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Definition | Thenable;
+ provideTypeDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): Definition | Thenable;
}
/**
@@ -4711,7 +4800,7 @@ declare module monaco.languages {
/**
* Provide symbol information for the given document.
*/
- provideDocumentSymbols(model: editor.IReadOnlyModel, token: CancellationToken): SymbolInformation[] | Thenable;
+ provideDocumentSymbols(model: editor.ITextModel, token: CancellationToken): SymbolInformation[] | Thenable;
}
export interface TextEdit {
@@ -4742,7 +4831,7 @@ declare module monaco.languages {
/**
* Provide formatting edits for a whole document.
*/
- provideDocumentFormattingEdits(model: editor.IReadOnlyModel, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
+ provideDocumentFormattingEdits(model: editor.ITextModel, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
}
/**
@@ -4757,7 +4846,7 @@ declare module monaco.languages {
* or larger range. Often this is done by adjusting the start and end
* of the range to full syntax nodes.
*/
- provideDocumentRangeFormattingEdits(model: editor.IReadOnlyModel, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
+ provideDocumentRangeFormattingEdits(model: editor.ITextModel, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
}
/**
@@ -4773,7 +4862,7 @@ declare module monaco.languages {
* what range the position to expand to, like find the matching `{`
* when `}` has been entered.
*/
- provideOnTypeFormattingEdits(model: editor.IReadOnlyModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
+ provideOnTypeFormattingEdits(model: editor.ITextModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable;
}
/**
@@ -4781,30 +4870,113 @@ declare module monaco.languages {
*/
export interface ILink {
range: IRange;
- url: string;
+ url?: string;
}
/**
* A provider of links.
*/
export interface LinkProvider {
- provideLinks(model: editor.IReadOnlyModel, token: CancellationToken): ILink[] | Thenable;
+ provideLinks(model: editor.ITextModel, token: CancellationToken): ILink[] | Thenable;
resolveLink?: (link: ILink, token: CancellationToken) => ILink | Thenable;
}
- export interface IResourceEdit {
- resource: Uri;
+ /**
+ * A color in RGBA format.
+ */
+ export interface IColor {
+ /**
+ * The red component in the range [0-1].
+ */
+ readonly red: number;
+ /**
+ * The green component in the range [0-1].
+ */
+ readonly green: number;
+ /**
+ * The blue component in the range [0-1].
+ */
+ readonly blue: number;
+ /**
+ * The alpha component in the range [0-1].
+ */
+ readonly alpha: number;
+ }
+
+ /**
+ * String representations for a color
+ */
+ export interface IColorPresentation {
+ /**
+ * The label of this color presentation. It will be shown on the color
+ * picker header. By default this is also the text that is inserted when selecting
+ * this color presentation.
+ */
+ label: string;
+ /**
+ * An [edit](#TextEdit) which is applied to a document when selecting
+ * this presentation for the color.
+ */
+ textEdit?: TextEdit;
+ /**
+ * An optional array of additional [text edits](#TextEdit) that are applied when
+ * selecting this color presentation.
+ */
+ additionalTextEdits?: TextEdit[];
+ }
+
+ /**
+ * A color range is a range in a text model which represents a color.
+ */
+ export interface IColorInformation {
+ /**
+ * The range within the model.
+ */
range: IRange;
- newText: string;
+ /**
+ * The color represented in this range.
+ */
+ color: IColor;
+ }
+
+ /**
+ * A provider of colors for editor models.
+ */
+ export interface DocumentColorProvider {
+ /**
+ * Provides the color ranges for a specific model.
+ */
+ provideDocumentColors(model: editor.ITextModel, token: CancellationToken): IColorInformation[] | Thenable;
+ /**
+ * Provide the string representations for a color.
+ */
+ provideColorPresentations(model: editor.ITextModel, colorInfo: IColorInformation, token: CancellationToken): IColorPresentation[] | Thenable;
+ }
+
+ export interface ResourceFileEdit {
+ oldUri: Uri;
+ newUri: Uri;
+ }
+
+ export interface ResourceTextEdit {
+ resource: Uri;
+ modelVersionId?: number;
+ edits: TextEdit[];
}
export interface WorkspaceEdit {
- edits: IResourceEdit[];
+ edits: Array;
rejectReason?: string;
}
+ export interface RenameInitialValue {
+ range: IRange;
+ text?: string;
+ }
+
export interface RenameProvider {
- provideRenameEdits(model: editor.IReadOnlyModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable;
+ provideRenameEdits(model: editor.ITextModel, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable;
+ resolveInitialRenameValue?(model: editor.ITextModel, position: Position, token: CancellationToken): RenameInitialValue | Thenable;
}
export interface Command {
@@ -4822,8 +4994,8 @@ declare module monaco.languages {
export interface CodeLensProvider {
onDidChange?: IEvent;
- provideCodeLenses(model: editor.IReadOnlyModel, token: CancellationToken): ICodeLensSymbol[] | Thenable;
- resolveCodeLens?(model: editor.IReadOnlyModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable;
+ provideCodeLenses(model: editor.ITextModel, token: CancellationToken): ICodeLensSymbol[] | Thenable;
+ resolveCodeLens?(model: editor.ITextModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable;
}
export interface ILanguageExtensionPoint {
diff --git a/website/playground/new-samples/creating-the-editor/editor-basic-options/sample.js b/website/playground/new-samples/creating-the-editor/editor-basic-options/sample.js
index 615f2208..bb61b4c1 100644
--- a/website/playground/new-samples/creating-the-editor/editor-basic-options/sample.js
+++ b/website/playground/new-samples/creating-the-editor/editor-basic-options/sample.js
@@ -6,7 +6,7 @@ var editor = monaco.editor.create(document.getElementById("container"), {
value: "// First line\nfunction hello() {\n\talert('Hello world!');\n}\n// Last line",
language: "javascript",
- lineNumbers: false,
+ lineNumbers: "off",
roundedSelection: false,
scrollBeyondLastLine: false,
readOnly: false,
@@ -14,6 +14,6 @@ var editor = monaco.editor.create(document.getElementById("container"), {
});
setTimeout(function() {
editor.updateOptions({
- lineNumbers: true
+ lineNumbers: "on"
});
}, 2000);
diff --git a/website/playground/new-samples/extending-language-services/completion-provider-example/sample.js b/website/playground/new-samples/extending-language-services/completion-provider-example/sample.js
index 4f58251e..5a5a2017 100644
--- a/website/playground/new-samples/extending-language-services/completion-provider-example/sample.js
+++ b/website/playground/new-samples/extending-language-services/completion-provider-example/sample.js
@@ -28,7 +28,8 @@ monaco.languages.registerCompletionItemProvider('json', {
provideCompletionItems: function(model, position) {
// find out if we are completing a property in the 'dependencies' object.
var textUntilPosition = model.getValueInRange({startLineNumber: 1, startColumn: 1, endLineNumber: position.lineNumber, endColumn: position.column});
- var match = textUntilPosition.match(/"dependencies"\s*:\s*{\s*("[^"]*"\s*:\s*"[^"]*"\s*,\s*)*("[^"]*)?$/); if (match) {
+ var match = textUntilPosition.match(/"dependencies"\s*:\s*{\s*("[^"]*"\s*:\s*"[^"]*"\s*,\s*)*("[^"]*)?$/);
+ if (match) {
return createDependencyProposals();
}
return [];
diff --git a/website/playground/new-samples/extending-language-services/configure-json-defaults/sample.js b/website/playground/new-samples/extending-language-services/configure-json-defaults/sample.js
index 71647c83..3a0d1b92 100644
--- a/website/playground/new-samples/extending-language-services/configure-json-defaults/sample.js
+++ b/website/playground/new-samples/extending-language-services/configure-json-defaults/sample.js
@@ -1,8 +1,12 @@
// Configures two JSON schemas, with references.
+var id = "foo.json";
+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
+ validate: true,
schemas: [{
uri: "http://myserver/foo-schema.json",
+ fileMatch: [id],
schema: {
type: "object",
properties: {
@@ -16,6 +20,7 @@ monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
}
},{
uri: "http://myserver/bar-schema.json",
+ fileMatch: [id],
schema: {
type: "object",
properties: {
@@ -30,11 +35,13 @@ monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
var jsonCode = [
'{',
- ' "$schema": "http://myserver/foo-schema.json"',
+ ' "p1": "v3",',
+ ' "p2": false',
"}"
].join('\n');
+var model = monaco.editor.createModel(jsonCode, "json", id);
+
monaco.editor.create(document.getElementById("container"), {
- value: jsonCode,
- language: "json"
-});
\ No newline at end of file
+ model: model
+});