From 657c37dd5f20312878ab0ceb0500e17657c5b10c Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 18 Mar 2019 10:57:31 -0700 Subject: [PATCH 01/13] WIP: Dependency service --- .vscode/settings.json | 6 +- server/package.json | 1 + server/src/modes/languageModes.ts | 8 ++- server/src/modes/script/javascript.ts | 83 ++++++++++++------------ server/src/modes/template/index.ts | 16 ++--- server/src/services/dependencyService.ts | 77 ++++++++++++++++++++++ server/src/services/vls.ts | 21 ++++-- server/src/utils/prettier/requirePkg.ts | 19 +++--- server/yarn.lock | 12 ++++ 9 files changed, 170 insertions(+), 73 deletions(-) create mode 100644 server/src/services/dependencyService.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 2a70a0d926..8eb7190dbe 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,6 @@ { "tslint.enable": true, "files.exclude": { - "server/dist": true, - "docs/_book": true, - "dist": true + "docs/_book": true } -} \ No newline at end of file +} diff --git a/server/package.json b/server/package.json index 588765c989..6b86c36b60 100644 --- a/server/package.json +++ b/server/package.json @@ -55,6 +55,7 @@ "@types/mocha": "^5.2.5", "@types/node": "^10.12.10", "@types/prettier": "^1.16.1", + "@types/read-pkg-up": "^3.0.1", "@types/resolve": "0.0.8", "codecov": "^3.0.4", "glob": "^7.1.2", diff --git a/server/src/modes/languageModes.ts b/server/src/modes/languageModes.ts index 80dfc2f1c0..a56d31c241 100644 --- a/server/src/modes/languageModes.ts +++ b/server/src/modes/languageModes.ts @@ -28,11 +28,17 @@ import { getVueHTMLMode } from './template'; import { getStylusMode } from './style/stylus'; import { DocumentContext } from '../types'; import { VueInfoService } from '../services/vueInfoService'; +import { DependencyService } from '../services/dependencyService'; + +export interface VLSServices { + infoService?: VueInfoService; + dependencyService?: DependencyService; +} export interface LanguageMode { getId(): string; configure?(options: any): void; - configureService?(infoService: VueInfoService): void; + configureService?(services: VLSServices): void; updateFileInfo?(doc: TextDocument): void; doValidation?(document: TextDocument): Diagnostic[]; diff --git a/server/src/modes/script/javascript.ts b/server/src/modes/script/javascript.ts index e0bb3efba7..697335730c 100644 --- a/server/src/modes/script/javascript.ts +++ b/server/src/modes/script/javascript.ts @@ -22,7 +22,7 @@ import { Position, FormattingOptions } from 'vscode-languageserver-types'; -import { LanguageMode } from '../languageModes'; +import { LanguageMode, VLSServices } from '../languageModes'; import { VueDocumentRegions, LanguageRange } from '../embeddedSupport'; import { getServiceHost } from './serviceHost'; import { prettierify, prettierEslintify } from '../../utils/prettier'; @@ -36,6 +36,7 @@ import { nullMode, NULL_SIGNATURE } from '../nullMode'; import { VLSFormatConfig } from '../../config'; import { VueInfoService } from '../../services/vueInfoService'; import { getComponentInfo } from './componentInfo'; +import { DependencyService } from '../../services/dependencyService'; // Todo: After upgrading to LS server 4.0, use CompletionContext for filtering trigger chars // https://microsoft.github.io/language-server-protocol/specification#completion-request-leftwards_arrow_with_hook @@ -64,7 +65,8 @@ export function getJavascriptMode( const { updateCurrentTextDocument } = serviceHost; let config: any = {}; - let vueInfoService: VueInfoService | null = null; + let vueInfoService: VueInfoService | undefined; + let dependencyService: DependencyService | undefined; return { getId() { @@ -73,8 +75,9 @@ export function getJavascriptMode( configure(c) { config = c; }, - configureService(infoService: VueInfoService) { - vueInfoService = infoService; + configureService(services: VLSServices) { + vueInfoService = services.infoService; + dependencyService = services.dependencyService; }, updateFileInfo(doc: TextDocument): void { if (!vueInfoService) { @@ -123,14 +126,10 @@ export function getJavascriptMode( if (NON_SCRIPT_TRIGGERS.includes(triggerChar)) { return { isIncomplete: false, items: [] }; } - const completions = service.getCompletionsAtPosition( - fileFsPath, - offset, - { - includeExternalModuleExports: _.get(config, ['vetur', 'completion', 'autoImport']), - includeInsertTextCompletions: false - } - ); + const completions = service.getCompletionsAtPosition(fileFsPath, offset, { + includeExternalModuleExports: _.get(config, ['vetur', 'completion', 'autoImport']), + includeInsertTextCompletions: false + }); if (!completions) { return { isIncomplete: false, items: [] }; } @@ -257,9 +256,7 @@ export function getJavascriptMode( return occurrences.map(entry => { return { range: convertRange(scriptDoc, entry.textSpan), - kind: entry.isWriteAccess - ? DocumentHighlightKind.Write - : DocumentHighlightKind.Text + kind: entry.isWriteAccess ? DocumentHighlightKind.Write : DocumentHighlightKind.Text }; }); } @@ -382,16 +379,18 @@ export function getJavascriptMode( return defaultFormatter === 'prettier' ? prettierify(code, filePath, range, vlsFormatConfig, parser, needInitialIndent) : prettierEslintify(code, filePath, range, vlsFormatConfig, parser, needInitialIndent); - } - - else { + } else { const initialIndentLevel = needInitialIndent ? 1 : 0; const formatSettings: ts.FormatCodeSettings = scriptDoc.languageId === 'javascript' ? config.javascript.format : config.typescript.format; - const convertedFormatSettings = convertOptions(formatSettings, { - tabSize: vlsFormatConfig.options.tabSize, - insertSpaces: !vlsFormatConfig.options.useTabs - }, initialIndentLevel); + const convertedFormatSettings = convertOptions( + formatSettings, + { + tabSize: vlsFormatConfig.options.tabSize, + insertSpaces: !vlsFormatConfig.options.useTabs + }, + initialIndentLevel + ); const fileFsPath = getFileFsPath(doc.uri); const start = scriptDoc.offsetAt(range.start); @@ -519,29 +518,31 @@ function convertOptions( function convertCodeAction( doc: TextDocument, codeActions: ts.CodeAction[], - regionStart: LanguageModelCache) { + regionStart: LanguageModelCache +) { const textEdits: TextEdit[] = []; for (const action of codeActions) { for (const change of action.changes) { - textEdits.push(...change.textChanges.map(tc => { - // currently, only import codeAction is available - // change start of doc to start of script region - if (tc.span.start === 0 && tc.span.length === 0) { - const region = regionStart.get(doc); - if (region) { - const line = region.start.line; - return { - range: Range.create(line + 1, 0, line + 1, 0), - newText: tc.newText - }; + textEdits.push( + ...change.textChanges.map(tc => { + // currently, only import codeAction is available + // change start of doc to start of script region + if (tc.span.start === 0 && tc.span.length === 0) { + const region = regionStart.get(doc); + if (region) { + const line = region.start.line; + return { + range: Range.create(line + 1, 0, line + 1, 0), + newText: tc.newText + }; + } } - } - return { - range: convertRange(doc, tc.span), - newText: tc.newText - }; - } - )); + return { + range: convertRange(doc, tc.span), + newText: tc.newText + }; + }) + ); } } return textEdits; diff --git a/server/src/modes/template/index.ts b/server/src/modes/template/index.ts index 526b8244b0..f878d4c190 100644 --- a/server/src/modes/template/index.ts +++ b/server/src/modes/template/index.ts @@ -36,7 +36,7 @@ export function getVueHTMLMode( const lintEngine = createLintEngine(); let config: any = {}; - let vueInfoService: VueInfoService; + let vueInfoService: VueInfoService | undefined; return { getId() { @@ -47,8 +47,8 @@ export function getVueHTMLMode( enabledTagProviders = getEnabledTagProviders(tagProviderSettings); config = c; }, - configureService(infoService: VueInfoService) { - vueInfoService = infoService; + configureService(services) { + vueInfoService = services.infoService; }, doValidation(document) { const embedded = embeddedDocuments.get(document); @@ -57,7 +57,8 @@ export function getVueHTMLMode( doComplete(document: TextDocument, position: Position) { const embedded = embeddedDocuments.get(document); const tagProviders: IHTMLTagProvider[] = [...enabledTagProviders]; - const info = vueInfoService.getInfo(document); + + const info = vueInfoService ? vueInfoService.getInfo(document) : undefined; if (info && info.componentInfo.childComponents) { tagProviders.push(getComponentInfoTagProvider(info.componentInfo.childComponents)); } @@ -67,10 +68,7 @@ export function getVueHTMLMode( doHover(document: TextDocument, position: Position) { const embedded = embeddedDocuments.get(document); const tagProviders: IHTMLTagProvider[] = [...enabledTagProviders]; - const info = vueInfoService.getInfo(document); - if (info && info.componentInfo.childComponents) { - tagProviders.push(getComponentInfoTagProvider(info.componentInfo.childComponents)); - } + return doHover(embedded, position, vueDocuments.get(embedded), tagProviders); }, findDocumentHighlight(document: TextDocument, position: Position) { @@ -87,7 +85,7 @@ export function getVueHTMLMode( }, findDefinition(document: TextDocument, position: Position) { const embedded = embeddedDocuments.get(document); - const info = vueInfoService.getInfo(document); + const info = vueInfoService ? vueInfoService.getInfo(document) : undefined; return findDefinition(embedded, position, vueDocuments.get(embedded), info); }, onDocumentRemoved(document: TextDocument) { diff --git a/server/src/services/dependencyService.ts b/server/src/services/dependencyService.ts new file mode 100644 index 0000000000..5f0a4a1e8a --- /dev/null +++ b/server/src/services/dependencyService.ts @@ -0,0 +1,77 @@ +import * as path from 'path'; + +const enum State { + Loaded, + Unloaded +} + +interface UnloadedDependency { + name: string; + state: State.Unloaded; +} + +interface LoadedDependency { + name: string; + state: State.Loaded; + version: string; + bundled: boolean; + module: T; +} + +type RuntimeDependency = LoadedDependency | UnloadedDependency; + +type T_PrettyHtml = typeof import('@starptech/prettyhtml'); +type T_ESLint = typeof import('eslint'); +type T_ESLintPluginVue = typeof import('eslint-plugin-vue'); +type T_JSBeautify = typeof import('eslint-plugin-vue'); +type T_Prettier = typeof import('prettier'); +// type T_PrettierEslint = typeof import('prettier-eslint'); +type T_StylusSupremacy = typeof import('stylus-supremacy'); +type T_TypeScript = typeof import('typescript'); + +interface VLSDependencies { + prettyhtml: RuntimeDependency; + eslint: RuntimeDependency; + eslintPluginVue: RuntimeDependency; + jsbeautify: RuntimeDependency; + prettier: RuntimeDependency; + // prettierEslint: RuntimeDependency; + stylusSupremacy: RuntimeDependency; + typescript: RuntimeDependency; +} + +export class DependencyService { + private dependencies: VLSDependencies = { + prettyhtml: { name: 'prettyhtml', state: State.Unloaded }, + eslint: { name: 'eslint', state: State.Unloaded }, + eslintPluginVue: { name: 'eslint-plugin-vue', state: State.Unloaded }, + jsbeautify: { name: 'js-beautify', state: State.Unloaded }, + prettier: { name: 'prettier', state: State.Unloaded }, + // prettierEslint: { name: 'prettier-eslint', state: State.Unloaded }, + stylusSupremacy: { name: 'stylus-supremacy', state: State.Unloaded }, + typescript: { name: 'typescript', state: State.Unloaded } + }; + + constructor(private workspacePath: string) {} + + async loadDependencies() { + const workspaceTSPath = path.resolve(this.workspacePath, 'node_modules/typescript'); + const tsModule = await import(workspaceTSPath); + + this.dependencies.typescript = { + name: 'typecript', + state: State.Loaded, + version: '1.0.0', + bundled: true, + module: tsModule + }; + } + + getDependency(d: keyof VLSDependencies) { + if (!this.dependencies[d]) { + return undefined; + } + + return this.dependencies[d]; + } +} diff --git a/server/src/services/vls.ts b/server/src/services/vls.ts index ee70a16bf0..241552a897 100644 --- a/server/src/services/vls.ts +++ b/server/src/services/vls.ts @@ -27,7 +27,7 @@ import { TextDocument, TextDocumentChangeEvent, TextEdit, - ColorPresentation, + ColorPresentation } from 'vscode-languageserver-types'; import Uri from 'vscode-uri'; import { getLanguageModes, LanguageModes } from '../modes/languageModes'; @@ -35,9 +35,12 @@ import { NULL_COMPLETION, NULL_HOVER, NULL_SIGNATURE } from '../modes/nullMode'; import { DocumentContext } from '../types'; import { DocumentService } from './documentService'; import { VueInfoService } from './vueInfoService'; +import { DependencyService } from './dependencyService'; export class VLS { private documentService: DocumentService; + private vueInfoService: VueInfoService; + private dependencyService: DependencyService; private languageModes: LanguageModes; @@ -53,20 +56,24 @@ export class VLS { javascript: true }; - private vueInfoService: VueInfoService; - constructor(private workspacePath: string, private lspConnection: IConnection) { this.languageModes = getLanguageModes(workspacePath); + + this.documentService = new DocumentService(); + this.documentService.listen(lspConnection); + this.vueInfoService = new VueInfoService(this.languageModes); + this.dependencyService = new DependencyService(workspacePath); + this.languageModes.getAllModes().forEach(m => { if (m.configureService) { - m.configureService(this.vueInfoService); + m.configureService({ + infoService: this.vueInfoService, + dependencyService: this.dependencyService + }); } }); - this.documentService = new DocumentService(); - this.documentService.listen(lspConnection); - this.setupConfigListeners(); this.setupLanguageFeatures(); this.setupFileChangeListeners(); diff --git a/server/src/utils/prettier/requirePkg.ts b/server/src/utils/prettier/requirePkg.ts index f8b43cfa04..c91d60b0d4 100644 --- a/server/src/utils/prettier/requirePkg.ts +++ b/server/src/utils/prettier/requirePkg.ts @@ -4,7 +4,7 @@ */ import * as path from 'path'; import * as resolve from 'resolve'; -const readPkgUp = require('read-pkg-up'); +import * as readPkgUp from 'read-pkg-up'; /** * Recursively search for a package.json upwards containing given package @@ -14,16 +14,15 @@ const readPkgUp = require('read-pkg-up'); * @returns {string} resolved path to prettier */ function findPkg(fspath: string, pkgName: string): string | undefined { - const res = readPkgUp.sync({ cwd: fspath, normalize: false }); + const { pkg, path: pkgPath } = readPkgUp.sync({ cwd: fspath, normalize: false }); const { root } = path.parse(fspath); if ( - res.pkg && - ((res.pkg.dependencies && res.pkg.dependencies[pkgName]) || - (res.pkg.devDependencies && res.pkg.devDependencies[pkgName])) + pkg && + ((pkg.dependencies && pkg.dependencies[pkgName]) || (pkg.devDependencies && pkg.devDependencies[pkgName])) ) { - return resolve.sync(pkgName, { basedir: res.path }); - } else if (res.path) { - const parent = path.resolve(path.dirname(res.path), '..'); + return resolve.sync(pkgName, { basedir: pkgPath }); + } else if (pkgPath) { + const parent = path.resolve(path.dirname(pkgPath), '..'); if (parent !== root) { return findPkg(parent, pkgName); } @@ -44,9 +43,7 @@ function requireLocalPkg(fspath: string, pkgName: string): any { try { return require(modulePath); } catch (e) { - console.log( - `Failed to load ${pkgName} from ${modulePath}. Using bundled version` - ); + console.log(`Failed to load ${pkgName} from ${modulePath}. Using bundled version.`); } } diff --git a/server/yarn.lock b/server/yarn.lock index b71f931288..0065180491 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -270,10 +270,22 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.27.tgz#eb3843f15d0ba0986cc7e4d734d2ee8b50709ef8" integrity sha512-e9wgeY6gaY21on3ve0xAjgBVjGDWq/xUteK0ujsE53bUoxycMkqfnkUgMt6ffZtykZ5X12Mg3T7Pw4TRCObDKg== +"@types/normalize-package-data@*": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/prettier@^1.16.1": version "1.16.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.16.1.tgz#328d1c9b54402e44119398bcb6a31b7bbd606d59" +"@types/read-pkg-up@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/read-pkg-up/-/read-pkg-up-3.0.1.tgz#05911057c3be1aade38bfecbb9a8554dbd0582be" + integrity sha512-rMD+eDN93H/f6UGe6HJjJ08L+Vro+LN0bfCdYxsSb3Np13s75Lv+E/XBgw14kjz83Pfi82fb5z3/jtw1S3DvgA== + dependencies: + "@types/normalize-package-data" "*" + "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" From e40b6557cfa3cd87a97095b5b187438e88692a2e Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 18 Mar 2019 14:29:20 -0700 Subject: [PATCH 02/13] Async initialization --- server/src/modes/languageModes.ts | 173 ++++++++++++----------- server/src/modes/template/index.ts | 5 +- server/src/services/dependencyService.ts | 6 +- server/src/services/documentService.ts | 5 +- server/src/services/vls.ts | 66 +++++++-- server/src/services/vueInfoService.ts | 13 +- server/src/types.ts | 2 +- server/src/vueServerMain.ts | 57 ++------ 8 files changed, 169 insertions(+), 158 deletions(-) diff --git a/server/src/modes/languageModes.ts b/server/src/modes/languageModes.ts index a56d31c241..cd55237f21 100644 --- a/server/src/modes/languageModes.ts +++ b/server/src/modes/languageModes.ts @@ -60,98 +60,99 @@ export interface LanguageMode { dispose(): void; } -export interface LanguageModes { - getModeAtPosition(document: TextDocument, position: Position): LanguageMode | null; - getModesInRange(document: TextDocument, range: Range): LanguageModeRange[]; - getAllModes(): LanguageMode[]; - getAllModesInDocument(document: TextDocument): LanguageMode[]; - getMode(languageId: string): LanguageMode; - onDocumentRemoved(document: TextDocument): void; - dispose(): void; -} - export interface LanguageModeRange extends Range { mode: LanguageMode; attributeValue?: boolean; } -export function getLanguageModes(workspacePath: string | null | undefined): LanguageModes { - const documentRegions = getLanguageModelCache(10, 60, document => getDocumentRegions(document)); - - let modelCaches: LanguageModelCache[] = []; - modelCaches.push(documentRegions); - - const jsMode = getJavascriptMode(documentRegions, workspacePath); - let modes: { [k: string]: LanguageMode } = { - vue: getVueMode(), - 'vue-html': getVueHTMLMode(documentRegions, workspacePath), - css: getCSSMode(documentRegions), - postcss: getPostCSSMode(documentRegions), - scss: getSCSSMode(documentRegions), - less: getLESSMode(documentRegions), - stylus: getStylusMode(documentRegions), - javascript: jsMode, - tsx: jsMode, - typescript: jsMode - }; - - return { - getModeAtPosition(document: TextDocument, position: Position): LanguageMode | null { - const languageId = documentRegions.get(document).getLanguageAtPosition(position); - if (languageId) { - return modes[languageId]; - } - return null; - }, - getModesInRange(document: TextDocument, range: Range): LanguageModeRange[] { - return documentRegions - .get(document) - .getLanguageRanges(range) - .map(r => { - return { - start: r.start, - end: r.end, - mode: modes[r.languageId], - attributeValue: r.attributeValue - }; - }); - }, - getAllModesInDocument(document: TextDocument): LanguageMode[] { - const result = []; - for (const languageId of documentRegions.get(document).getLanguagesInDocument()) { - const mode = modes[languageId]; - if (mode) { - result.push(mode); - } - } - return result; - }, - getAllModes(): LanguageMode[] { - const result = []; - for (const languageId in modes) { - const mode = modes[languageId]; - if (mode) { - result.push(mode); - } - } - return result; - }, - getMode(languageId: string): LanguageMode { - return modes[languageId]; - }, - onDocumentRemoved(document: TextDocument) { - modelCaches.forEach(mc => mc.onDocumentRemoved(document)); - for (const mode in modes) { - modes[mode].onDocumentRemoved(document); +export class LanguageModes { + private modes: { [k: string]: LanguageMode } = {}; + private documentRegions: LanguageModelCache; + private modelCaches: LanguageModelCache[]; + + constructor() { + this.documentRegions = getLanguageModelCache(10, 60, document => getDocumentRegions(document)); + + this.modelCaches = []; + this.modelCaches.push(this.documentRegions); + } + + async init(workspacePath: string) { + const jsMode = getJavascriptMode(this.documentRegions, workspacePath); + + this.modes['vue'] = getVueMode(); + this.modes['vue-html'] = getVueHTMLMode(this.documentRegions, workspacePath); + this.modes['css'] = getCSSMode(this.documentRegions); + this.modes['postcss'] = getPostCSSMode(this.documentRegions); + this.modes['scss'] = getSCSSMode(this.documentRegions); + this.modes['less'] = getLESSMode(this.documentRegions); + this.modes['stylus'] = getStylusMode(this.documentRegions); + this.modes['javascript'] = jsMode; + this.modes['tsx'] = jsMode; + this.modes['typescript'] = jsMode; + } + + getModeAtPosition(document: TextDocument, position: Position): LanguageMode | null { + const languageId = this.documentRegions.get(document).getLanguageAtPosition(position); + if (languageId) { + return this.modes[languageId]; + } + return null; + } + + getModesInRange(document: TextDocument, range: Range): LanguageModeRange[] { + return this.documentRegions + .get(document) + .getLanguageRanges(range) + .map(r => { + return { + start: r.start, + end: r.end, + mode: this.modes[r.languageId], + attributeValue: r.attributeValue + }; + }); + } + + getAllModesInDocument(document: TextDocument): LanguageMode[] { + const result = []; + for (const languageId of this.documentRegions.get(document).getLanguagesInDocument()) { + const mode = this.modes[languageId]; + if (mode) { + result.push(mode); } - }, - dispose(): void { - modelCaches.forEach(mc => mc.dispose()); - modelCaches = []; - for (const mode in modes) { - modes[mode].dispose(); + } + return result; + } + + getAllModes(): LanguageMode[] { + const result = []; + for (const languageId in this.modes) { + const mode = this.modes[languageId]; + if (mode) { + result.push(mode); } - modes = {}; // drop all references } - }; + return result; + } + + getMode(languageId: string): LanguageMode { + return this.modes[languageId]; + } + + onDocumentRemoved(document: TextDocument) { + this.modelCaches.forEach(mc => mc.onDocumentRemoved(document)); + for (const mode in this.modes) { + this.modes[mode].onDocumentRemoved(document); + } + } + + dispose(): void { + this.modelCaches.forEach(mc => mc.dispose()); + this.modelCaches = []; + for (const mode in this.modes) { + this.modes[mode].dispose(); + } + this.modes = {}; // drop all references + } } diff --git a/server/src/modes/template/index.ts b/server/src/modes/template/index.ts index f878d4c190..4150e83b6c 100644 --- a/server/src/modes/template/index.ts +++ b/server/src/modes/template/index.ts @@ -23,10 +23,7 @@ import { getComponentInfoTagProvider } from './tagProviders/componentInfoTagProv type DocumentRegionCache = LanguageModelCache; -export function getVueHTMLMode( - documentRegions: DocumentRegionCache, - workspacePath: string | null | undefined -): LanguageMode { +export function getVueHTMLMode(documentRegions: DocumentRegionCache, workspacePath: string | undefined): LanguageMode { let tagProviderSettings = getTagProviderSettings(workspacePath); let enabledTagProviders = getEnabledTagProviders(tagProviderSettings); const embeddedDocuments = getLanguageModelCache(10, 60, document => diff --git a/server/src/services/dependencyService.ts b/server/src/services/dependencyService.ts index 5f0a4a1e8a..2a176f1159 100644 --- a/server/src/services/dependencyService.ts +++ b/server/src/services/dependencyService.ts @@ -52,10 +52,10 @@ export class DependencyService { typescript: { name: 'typescript', state: State.Unloaded } }; - constructor(private workspacePath: string) {} + constructor() {} - async loadDependencies() { - const workspaceTSPath = path.resolve(this.workspacePath, 'node_modules/typescript'); + async init(workspacePath: string) { + const workspaceTSPath = path.resolve(workspacePath, 'node_modules/typescript'); const tsModule = await import(workspaceTSPath); this.dependencies.typescript = { diff --git a/server/src/services/documentService.ts b/server/src/services/documentService.ts index 3127e1acc5..4963b0e43a 100644 --- a/server/src/services/documentService.ts +++ b/server/src/services/documentService.ts @@ -7,11 +7,8 @@ import { IConnection, TextDocuments } from 'vscode-languageserver'; export class DocumentService { private documents: TextDocuments; - constructor() { + constructor(conn: IConnection) { this.documents = new TextDocuments(); - } - - listen(conn: IConnection) { this.documents.listen(conn); } diff --git a/server/src/services/vls.ts b/server/src/services/vls.ts index 241552a897..c106ea91d7 100644 --- a/server/src/services/vls.ts +++ b/server/src/services/vls.ts @@ -7,7 +7,10 @@ import { FileChangeType, IConnection, TextDocumentPositionParams, - ColorPresentationParams + ColorPresentationParams, + InitializeParams, + ServerCapabilities, + TextDocumentSyncKind } from 'vscode-languageserver'; import { ColorInformation, @@ -30,7 +33,7 @@ import { ColorPresentation } from 'vscode-languageserver-types'; import Uri from 'vscode-uri'; -import { getLanguageModes, LanguageModes } from '../modes/languageModes'; +import { LanguageModes } from '../modes/languageModes'; import { NULL_COMPLETION, NULL_HOVER, NULL_SIGNATURE } from '../modes/nullMode'; import { DocumentContext } from '../types'; import { DocumentService } from './documentService'; @@ -38,6 +41,9 @@ import { VueInfoService } from './vueInfoService'; import { DependencyService } from './dependencyService'; export class VLS { + // @Todo: Remove this and DocumentContext + private workspacePath: string | undefined; + private documentService: DocumentService; private vueInfoService: VueInfoService; private dependencyService: DependencyService; @@ -56,14 +62,28 @@ export class VLS { javascript: true }; - constructor(private workspacePath: string, private lspConnection: IConnection) { - this.languageModes = getLanguageModes(workspacePath); + constructor(private lspConnection: IConnection) { + this.documentService = new DocumentService(this.lspConnection); + this.vueInfoService = new VueInfoService(); + this.dependencyService = new DependencyService(); + + this.languageModes = new LanguageModes(); + } + + async init(params: InitializeParams) { + const workspacePath = params.rootPath; + if (!workspacePath) { + console.error('No workspace path found. Vetur initialization failed.'); + return { + capabilities: {} + }; + } - this.documentService = new DocumentService(); - this.documentService.listen(lspConnection); + this.workspacePath = workspacePath; - this.vueInfoService = new VueInfoService(this.languageModes); - this.dependencyService = new DependencyService(workspacePath); + this.languageModes.init(workspacePath); + this.vueInfoService.init(this.languageModes); + await this.dependencyService.init(workspacePath); this.languageModes.getAllModes().forEach(m => { if (m.configureService) { @@ -75,12 +95,20 @@ export class VLS { }); this.setupConfigListeners(); - this.setupLanguageFeatures(); + this.setupLSPHandlers(); this.setupFileChangeListeners(); this.lspConnection.onShutdown(() => { this.dispose(); }); + + if (params.initializationOptions && params.initializationOptions.config) { + this.configure(params.initializationOptions.config); + } + } + + listen() { + this.lspConnection.listen(); } private setupConfigListeners() { @@ -91,7 +119,7 @@ export class VLS { this.documentService.getAllDocuments().forEach(this.triggerValidation); } - private setupLanguageFeatures() { + private setupLSPHandlers() { this.lspConnection.onCompletion(this.onCompletion.bind(this)); this.lspConnection.onCompletionResolve(this.onCompletionResolve.bind(this)); @@ -366,6 +394,24 @@ export class VLS { dispose(): void { this.languageModes.dispose(); } + + get capabilities(): ServerCapabilities { + return { + textDocumentSync: TextDocumentSyncKind.Full, + completionProvider: { resolveProvider: true, triggerCharacters: ['.', ':', '<', '"', "'", '/', '@', '*'] }, + signatureHelpProvider: { triggerCharacters: ['('] }, + documentFormattingProvider: true, + hoverProvider: true, + documentHighlightProvider: true, + documentLinkProvider: { + resolveProvider: false + }, + documentSymbolProvider: true, + definitionProvider: true, + referencesProvider: true, + colorProvider: true + }; + } } function pushAll(to: T[], from: T[]) { diff --git a/server/src/services/vueInfoService.ts b/server/src/services/vueInfoService.ts index f7f450b9fa..afdb05eb85 100644 --- a/server/src/services/vueInfoService.ts +++ b/server/src/services/vueInfoService.ts @@ -1,7 +1,7 @@ -import { LanguageModes } from '../modes/languageModes'; import { TextDocument } from 'vscode-languageserver'; import { getFileFsPath } from '../utils/paths'; import { Definition } from 'vscode-languageserver-types'; +import { LanguageModes } from '../modes/languageModes'; /** * State associated with a specific Vue file @@ -38,7 +38,7 @@ export interface ChildComponent { definition?: { path: string; start: number; - end: number + end: number; }; info?: VueFileInfo; } @@ -61,16 +61,21 @@ export interface MethodInfo { } export class VueInfoService { + private languageModes: LanguageModes | undefined; private vueFileInfo: Map = new Map(); - constructor(private languageModes: LanguageModes) {} + constructor() {} + + init(languageModes: LanguageModes) { + this.languageModes = languageModes; + } updateInfo(doc: TextDocument, info: VueFileInfo) { this.vueFileInfo.set(getFileFsPath(doc.uri), info); } getInfo(doc: TextDocument) { - this.languageModes.getAllModesInDocument(doc).forEach(m => { + this.languageModes!.getAllModesInDocument(doc).forEach(m => { if (m.updateFileInfo) { m.updateFileInfo(doc); } diff --git a/server/src/types.ts b/server/src/types.ts index 07df408568..c9ed8e833e 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -1,3 +1,3 @@ export interface DocumentContext { resolveReference(ref: string, base?: string): string; -} \ No newline at end of file +} diff --git a/server/src/vueServerMain.ts b/server/src/vueServerMain.ts index f9c87aec09..4d72df6f2d 100644 --- a/server/src/vueServerMain.ts +++ b/server/src/vueServerMain.ts @@ -1,57 +1,22 @@ -import { - createConnection, - InitializeParams, - InitializeResult, - TextDocumentSyncKind -} from 'vscode-languageserver'; +import { createConnection, InitializeParams, InitializeResult } from 'vscode-languageserver'; import { VLS } from './services/vls'; -// Create a connection for the server -const connection = - process.argv.length <= 2 - ? createConnection(process.stdin, process.stdout) // no arg specified - : createConnection(); +const connection = process.argv.length <= 2 ? createConnection(process.stdin, process.stdout) : createConnection(); console.log = connection.console.log.bind(connection.console); console.error = connection.console.error.bind(connection.console); -// After the server has started the client sends an initilize request. The server receives -// in the passed params the rootPath of the workspace plus the client capabilites -connection.onInitialize((params: InitializeParams): InitializeResult => { - const initializationOptions = params.initializationOptions; +const vls = new VLS(connection); +connection.onInitialize( + async (params: InitializeParams): Promise => { + await vls.init(params); + + console.log('Vetur initialized'); - const workspacePath = params.rootPath; - if (!workspacePath) { - console.error('No workspace path found. Vetur initialization failed'); return { - capabilities: {} + capabilities: vls.capabilities }; } +); - console.log('Vetur initialized'); - const vls = new VLS(workspacePath, connection); - - if (initializationOptions && initializationOptions.config) { - vls.configure(initializationOptions.config); - } - - return { - capabilities: { - textDocumentSync: TextDocumentSyncKind.Full, - completionProvider: { resolveProvider: true, triggerCharacters: ['.', ':', '<', '"', "'", '/', '@', '*'] }, - signatureHelpProvider: { triggerCharacters: ['('] }, - documentFormattingProvider: true, - hoverProvider: true, - documentHighlightProvider: true, - documentLinkProvider: { - resolveProvider: false - }, - documentSymbolProvider: true, - definitionProvider: true, - referencesProvider: true, - colorProvider: true - } - }; -}); - -connection.listen(); +vls.listen(); From 6a686051dcc327766b472026b5880c73a720dcc4 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Tue, 19 Mar 2019 23:05:52 -0700 Subject: [PATCH 03/13] Simplify initialization --- server/src/modes/languageModes.ts | 13 +++++++++---- server/src/modes/script/javascript.ts | 13 ++++--------- server/src/modes/template/index.ts | 11 +++++------ server/src/services/vls.ts | 16 +++++----------- 4 files changed, 23 insertions(+), 30 deletions(-) diff --git a/server/src/modes/languageModes.ts b/server/src/modes/languageModes.ts index cd55237f21..c6585fcc9f 100644 --- a/server/src/modes/languageModes.ts +++ b/server/src/modes/languageModes.ts @@ -38,7 +38,6 @@ export interface VLSServices { export interface LanguageMode { getId(): string; configure?(options: any): void; - configureService?(services: VLSServices): void; updateFileInfo?(doc: TextDocument): void; doValidation?(document: TextDocument): Diagnostic[]; @@ -77,11 +76,17 @@ export class LanguageModes { this.modelCaches.push(this.documentRegions); } - async init(workspacePath: string) { - const jsMode = getJavascriptMode(this.documentRegions, workspacePath); + async init(workspacePath: string, services: VLSServices) { + const vueHtmlMode = getVueHTMLMode(this.documentRegions, workspacePath); + const jsMode = getJavascriptMode( + this.documentRegions, + workspacePath, + services.infoService, + services.dependencyService + ); this.modes['vue'] = getVueMode(); - this.modes['vue-html'] = getVueHTMLMode(this.documentRegions, workspacePath); + this.modes['vue-html'] = vueHtmlMode; this.modes['css'] = getCSSMode(this.documentRegions); this.modes['postcss'] = getPostCSSMode(this.documentRegions); this.modes['scss'] = getSCSSMode(this.documentRegions); diff --git a/server/src/modes/script/javascript.ts b/server/src/modes/script/javascript.ts index 697335730c..019fdd1d7f 100644 --- a/server/src/modes/script/javascript.ts +++ b/server/src/modes/script/javascript.ts @@ -22,7 +22,7 @@ import { Position, FormattingOptions } from 'vscode-languageserver-types'; -import { LanguageMode, VLSServices } from '../languageModes'; +import { LanguageMode } from '../languageModes'; import { VueDocumentRegions, LanguageRange } from '../embeddedSupport'; import { getServiceHost } from './serviceHost'; import { prettierify, prettierEslintify } from '../../utils/prettier'; @@ -44,7 +44,9 @@ const NON_SCRIPT_TRIGGERS = ['<', '/', '*', ':']; export function getJavascriptMode( documentRegions: LanguageModelCache, - workspacePath: string | null | undefined + workspacePath: string | undefined, + vueInfoService?: VueInfoService, + dependencyService?: DependencyService ): LanguageMode { if (!workspacePath) { return { @@ -65,9 +67,6 @@ export function getJavascriptMode( const { updateCurrentTextDocument } = serviceHost; let config: any = {}; - let vueInfoService: VueInfoService | undefined; - let dependencyService: DependencyService | undefined; - return { getId() { return 'javascript'; @@ -75,10 +74,6 @@ export function getJavascriptMode( configure(c) { config = c; }, - configureService(services: VLSServices) { - vueInfoService = services.infoService; - dependencyService = services.dependencyService; - }, updateFileInfo(doc: TextDocument): void { if (!vueInfoService) { return; diff --git a/server/src/modes/template/index.ts b/server/src/modes/template/index.ts index 4150e83b6c..42ac7ee7d9 100644 --- a/server/src/modes/template/index.ts +++ b/server/src/modes/template/index.ts @@ -23,7 +23,11 @@ import { getComponentInfoTagProvider } from './tagProviders/componentInfoTagProv type DocumentRegionCache = LanguageModelCache; -export function getVueHTMLMode(documentRegions: DocumentRegionCache, workspacePath: string | undefined): LanguageMode { +export function getVueHTMLMode( + documentRegions: DocumentRegionCache, + workspacePath: string | undefined, + vueInfoService?: VueInfoService +): LanguageMode { let tagProviderSettings = getTagProviderSettings(workspacePath); let enabledTagProviders = getEnabledTagProviders(tagProviderSettings); const embeddedDocuments = getLanguageModelCache(10, 60, document => @@ -33,8 +37,6 @@ export function getVueHTMLMode(documentRegions: DocumentRegionCache, workspacePa const lintEngine = createLintEngine(); let config: any = {}; - let vueInfoService: VueInfoService | undefined; - return { getId() { return 'vue-html'; @@ -44,9 +46,6 @@ export function getVueHTMLMode(documentRegions: DocumentRegionCache, workspacePa enabledTagProviders = getEnabledTagProviders(tagProviderSettings); config = c; }, - configureService(services) { - vueInfoService = services.infoService; - }, doValidation(document) { const embedded = embeddedDocuments.get(document); return doValidation(embedded, lintEngine); diff --git a/server/src/services/vls.ts b/server/src/services/vls.ts index c106ea91d7..249e68e92b 100644 --- a/server/src/services/vls.ts +++ b/server/src/services/vls.ts @@ -81,18 +81,12 @@ export class VLS { this.workspacePath = workspacePath; - this.languageModes.init(workspacePath); - this.vueInfoService.init(this.languageModes); - await this.dependencyService.init(workspacePath); - - this.languageModes.getAllModes().forEach(m => { - if (m.configureService) { - m.configureService({ - infoService: this.vueInfoService, - dependencyService: this.dependencyService - }); - } + await this.languageModes.init(workspacePath, { + infoService: this.vueInfoService, + dependencyService: this.dependencyService }); + await this.vueInfoService.init(this.languageModes); + await this.dependencyService.init(workspacePath); this.setupConfigListeners(); this.setupLSPHandlers(); From 9894d455c15486fbc0b4828fd6d6e520dbd13832 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Wed, 20 Mar 2019 00:09:27 -0700 Subject: [PATCH 04/13] Convert more to use tsModule --- server/src/modes/languageModes.ts | 2 +- server/src/modes/script/javascript.ts | 38 ++++--- server/src/modes/script/preprocess.ts | 48 +++++---- server/src/modes/script/serviceHost.ts | 126 +++++++++++++---------- server/src/services/dependencyService.ts | 18 ++-- server/src/services/vls.ts | 4 +- tslint.json | 3 +- 7 files changed, 137 insertions(+), 102 deletions(-) diff --git a/server/src/modes/languageModes.ts b/server/src/modes/languageModes.ts index c6585fcc9f..e0927a77aa 100644 --- a/server/src/modes/languageModes.ts +++ b/server/src/modes/languageModes.ts @@ -78,7 +78,7 @@ export class LanguageModes { async init(workspacePath: string, services: VLSServices) { const vueHtmlMode = getVueHTMLMode(this.documentRegions, workspacePath); - const jsMode = getJavascriptMode( + const jsMode = await getJavascriptMode( this.documentRegions, workspacePath, services.infoService, diff --git a/server/src/modes/script/javascript.ts b/server/src/modes/script/javascript.ts index 019fdd1d7f..632fe1152e 100644 --- a/server/src/modes/script/javascript.ts +++ b/server/src/modes/script/javascript.ts @@ -36,18 +36,18 @@ import { nullMode, NULL_SIGNATURE } from '../nullMode'; import { VLSFormatConfig } from '../../config'; import { VueInfoService } from '../../services/vueInfoService'; import { getComponentInfo } from './componentInfo'; -import { DependencyService } from '../../services/dependencyService'; +import { DependencyService, T_TypeScript, State } from '../../services/dependencyService'; // Todo: After upgrading to LS server 4.0, use CompletionContext for filtering trigger chars // https://microsoft.github.io/language-server-protocol/specification#completion-request-leftwards_arrow_with_hook const NON_SCRIPT_TRIGGERS = ['<', '/', '*', ':']; -export function getJavascriptMode( +export async function getJavascriptMode( documentRegions: LanguageModelCache, workspacePath: string | undefined, vueInfoService?: VueInfoService, dependencyService?: DependencyService -): LanguageMode { +): Promise { if (!workspacePath) { return { ...nullMode @@ -63,7 +63,15 @@ export function getJavascriptMode( return vueDocument.getLanguageRangeByType('script'); }); - const serviceHost = getServiceHost(workspacePath, jsDocuments); + let tsModule: T_TypeScript = ts; + if (dependencyService) { + const tsDependency = dependencyService.getDependency('typescript'); + if (tsDependency && tsDependency.state === State.Loaded) { + tsModule = tsDependency.module; + } + } + + const serviceHost = getServiceHost(tsModule, workspacePath, jsDocuments); const { updateCurrentTextDocument } = serviceHost; let config: any = {}; @@ -71,7 +79,7 @@ export function getJavascriptMode( getId() { return 'javascript'; }, - configure(c) { + configure(c: any) { config = c; }, updateFileInfo(doc: TextDocument): void { @@ -105,7 +113,7 @@ export function getJavascriptMode( return { range: convertRange(scriptDoc, diag as ts.TextSpan), severity: DiagnosticSeverity.Error, - message: ts.flattenDiagnosticMessageText(diag.messageText, '\n') + message: tsModule.flattenDiagnosticMessageText(diag.messageText, '\n') }; }); }, @@ -166,8 +174,8 @@ export function getJavascriptMode( item.data.source ); if (details) { - item.detail = ts.displayPartsToString(details.displayParts); - item.documentation = ts.displayPartsToString(details.documentation); + item.detail = tsModule.displayPartsToString(details.displayParts); + item.documentation = tsModule.displayPartsToString(details.documentation); if (details.codeActions && config.vetur.completion.autoImport) { const textEdits = convertCodeAction(doc, details.codeActions, regionStart); item.additionalTextEdits = textEdits; @@ -185,8 +193,8 @@ export function getJavascriptMode( const fileFsPath = getFileFsPath(doc.uri); const info = service.getQuickInfoAtPosition(fileFsPath, scriptDoc.offsetAt(position)); if (info) { - const display = ts.displayPartsToString(info.displayParts); - const doc = ts.displayPartsToString(info.documentation); + const display = tsModule.displayPartsToString(info.displayParts); + const doc = tsModule.displayPartsToString(info.documentation); const markedContents: MarkedString[] = [{ language: 'ts', value: display }]; if (doc) { markedContents.unshift(doc, '\n'); @@ -221,20 +229,20 @@ export function getJavascriptMode( parameters: [] }; - signature.label += ts.displayPartsToString(item.prefixDisplayParts); + signature.label += tsModule.displayPartsToString(item.prefixDisplayParts); item.parameters.forEach((p, i, a) => { - const label = ts.displayPartsToString(p.displayParts); + const label = tsModule.displayPartsToString(p.displayParts); const parameter: ParameterInformation = { label, - documentation: ts.displayPartsToString(p.documentation) + documentation: tsModule.displayPartsToString(p.documentation) }; signature.label += label; signature.parameters!.push(parameter); if (i < a.length - 1) { - signature.label += ts.displayPartsToString(item.separatorDisplayParts); + signature.label += tsModule.displayPartsToString(item.separatorDisplayParts); } }); - signature.label += ts.displayPartsToString(item.suffixDisplayParts); + signature.label += tsModule.displayPartsToString(item.suffixDisplayParts); ret.signatures.push(signature); }); return ret; diff --git a/server/src/modes/script/preprocess.ts b/server/src/modes/script/preprocess.ts index 1a4c2a2ec4..3cd07f3744 100644 --- a/server/src/modes/script/preprocess.ts +++ b/server/src/modes/script/preprocess.ts @@ -3,6 +3,7 @@ import * as path from 'path'; import { getDocumentRegions } from '../embeddedSupport'; import { TextDocument } from 'vscode-languageserver-types'; +import { T_TypeScript } from '../../services/dependencyService'; export function isVue(filename: string): boolean { return path.extname(filename) === '.vue'; @@ -15,14 +16,14 @@ export function parseVue(text: string): string { return script.getText() || 'export default {};'; } -function isTSLike(scriptKind: ts.ScriptKind | undefined) { - return scriptKind === ts.ScriptKind.TS || scriptKind === ts.ScriptKind.TSX; -} +export function createUpdater(tsModule: T_TypeScript) { + const clssf = tsModule.createLanguageServiceSourceFile; + const ulssf = tsModule.updateLanguageServiceSourceFile; + const scriptKindTracker = new WeakMap(); -export function createUpdater() { - const clssf = ts.createLanguageServiceSourceFile; - const ulssf = ts.updateLanguageServiceSourceFile; - const scriptKindTracker = new WeakMap(); + function isTSLike(scriptKind: ts.ScriptKind | undefined) { + return scriptKind === ts.ScriptKind.TS || scriptKind === ts.ScriptKind.TSX; + } return { createLanguageServiceSourceFile( @@ -36,7 +37,7 @@ export function createUpdater() { const sourceFile = clssf(fileName, scriptSnapshot, scriptTarget, version, setNodeParents, scriptKind); scriptKindTracker.set(sourceFile, scriptKind); if (isVue(fileName) && !isTSLike(scriptKind)) { - modifyVueSource(sourceFile); + modifyVueSource(tsModule, sourceFile); } return sourceFile; }, @@ -50,29 +51,29 @@ export function createUpdater() { const scriptKind = scriptKindTracker.get(sourceFile); sourceFile = ulssf(sourceFile, scriptSnapshot, version, textChangeRange, aggressiveChecks); if (isVue(sourceFile.fileName) && !isTSLike(scriptKind)) { - modifyVueSource(sourceFile); + modifyVueSource(tsModule, sourceFile); } return sourceFile; } }; } -function modifyVueSource(sourceFile: ts.SourceFile): void { +function modifyVueSource(tsModule: T_TypeScript, sourceFile: ts.SourceFile): void { const exportDefaultObject = sourceFile.statements.find( st => - st.kind === ts.SyntaxKind.ExportAssignment && - (st as ts.ExportAssignment).expression.kind === ts.SyntaxKind.ObjectLiteralExpression + st.kind === tsModule.SyntaxKind.ExportAssignment && + (st as ts.ExportAssignment).expression.kind === tsModule.SyntaxKind.ObjectLiteralExpression ); if (exportDefaultObject) { // 1. add `import Vue from 'vue' // (the span of the inserted statement must be (0,0) to avoid overlapping existing statements) - const setZeroPos = getWrapperRangeSetter({ pos: 0, end: 0 }); + const setZeroPos = getWrapperRangeSetter(tsModule, { pos: 0, end: 0 }); const vueImport = setZeroPos( - ts.createImportDeclaration( + tsModule.createImportDeclaration( undefined, undefined, - setZeroPos(ts.createImportClause(ts.createIdentifier('__vueEditorBridge'), undefined as any)), - setZeroPos(ts.createLiteral('vue-editor-bridge')) + setZeroPos(tsModule.createImportClause(tsModule.createIdentifier('__vueEditorBridge'), undefined as any)), + setZeroPos(tsModule.createLiteral('vue-editor-bridge')) ) ); const statements: Array = sourceFile.statements as any; @@ -81,17 +82,22 @@ function modifyVueSource(sourceFile: ts.SourceFile): void { // 2. find the export default and wrap it in `__vueEditorBridge(...)` if it exists and is an object literal // (the span of the function construct call and *all* its members must be the same as the object literal it wraps) const objectLiteral = (exportDefaultObject as ts.ExportAssignment).expression as ts.ObjectLiteralExpression; - const setObjPos = getWrapperRangeSetter(objectLiteral); - const vue = ts.setTextRange(ts.createIdentifier('__vueEditorBridge'), { + const setObjPos = getWrapperRangeSetter(tsModule, objectLiteral); + const vue = tsModule.setTextRange(tsModule.createIdentifier('__vueEditorBridge'), { pos: objectLiteral.pos, end: objectLiteral.pos + 1 }); - (exportDefaultObject as ts.ExportAssignment).expression = setObjPos(ts.createCall(vue, undefined, [objectLiteral])); + (exportDefaultObject as ts.ExportAssignment).expression = setObjPos( + tsModule.createCall(vue, undefined, [objectLiteral]) + ); setObjPos(((exportDefaultObject as ts.ExportAssignment).expression as ts.CallExpression).arguments!); } } /** Create a function that calls setTextRange on synthetic wrapper nodes that need a valid range */ -function getWrapperRangeSetter(wrapped: ts.TextRange): (wrapperNode: T) => T { - return (wrapperNode: T) => ts.setTextRange(wrapperNode, wrapped); +function getWrapperRangeSetter( + tsModule: T_TypeScript, + wrapped: ts.TextRange +): (wrapperNode: T) => T { + return (wrapperNode: T) => tsModule.setTextRange(wrapperNode, wrapped); } diff --git a/server/src/modes/script/serviceHost.ts b/server/src/modes/script/serviceHost.ts index 9949fd582d..78db8272a8 100644 --- a/server/src/modes/script/serviceHost.ts +++ b/server/src/modes/script/serviceHost.ts @@ -8,54 +8,72 @@ import { LanguageModelCache } from '../languageModelCache'; import { createUpdater, parseVue, isVue } from './preprocess'; import { getFileFsPath, getFilePath } from '../../utils/paths'; import * as bridge from './bridge'; +import { T_TypeScript } from '../../services/dependencyService'; -// Patch typescript functions to insert `import Vue from 'vue'` and `new Vue` around export default. -// NOTE: this is a global hack that all ts instances after is changed -const { createLanguageServiceSourceFile, updateLanguageServiceSourceFile } = createUpdater(); -(ts as any).createLanguageServiceSourceFile = createLanguageServiceSourceFile; -(ts as any).updateLanguageServiceSourceFile = updateLanguageServiceSourceFile; +function patchTS(tsModule: T_TypeScript) { + // Patch typescript functions to insert `import Vue from 'vue'` and `new Vue` around export default. + // NOTE: this is a global hack that all ts instances after is changed + const { createLanguageServiceSourceFile, updateLanguageServiceSourceFile } = createUpdater(tsModule); + (tsModule as any).createLanguageServiceSourceFile = createLanguageServiceSourceFile; + (tsModule as any).updateLanguageServiceSourceFile = updateLanguageServiceSourceFile; +} -const vueSys: ts.System = { - ...ts.sys, - fileExists(path: string) { - if (isVueProject(path)) { - return ts.sys.fileExists(path.slice(0, -3)); - } - return ts.sys.fileExists(path); - }, - readFile(path, encoding) { - if (isVueProject(path)) { - const fileText = ts.sys.readFile(path.slice(0, -3), encoding); - return fileText ? parseVue(fileText) : fileText; - } else { - const fileText = ts.sys.readFile(path, encoding); - return fileText; +function getVueSys(tsModule: T_TypeScript) { + const vueSys: ts.System = { + ...tsModule.sys, + fileExists(path: string) { + if (isVueProject(path)) { + return tsModule.sys.fileExists(path.slice(0, -3)); + } + return tsModule.sys.fileExists(path); + }, + readFile(path, encoding) { + if (isVueProject(path)) { + const fileText = tsModule.sys.readFile(path.slice(0, -3), encoding); + return fileText ? parseVue(fileText) : fileText; + } else { + const fileText = tsModule.sys.readFile(path, encoding); + return fileText; + } } + }; + + if (tsModule.sys.realpath) { + const realpath = tsModule.sys.realpath; + vueSys.realpath = function(path) { + if (isVueProject(path)) { + return realpath(path.slice(0, -3)) + '.ts'; + } + return realpath(path); + }; } -}; -if (ts.sys.realpath) { - const realpath = ts.sys.realpath; - vueSys.realpath = function(path) { - if (isVueProject(path)) { - return realpath(path.slice(0, -3)) + '.ts'; - } - return realpath(path); + return vueSys; +} + +function getDefaultCompilerOptions(tsModule: T_TypeScript) { + const defaultCompilerOptions: ts.CompilerOptions = { + allowNonTsExtensions: true, + allowJs: true, + lib: ['lib.dom.d.ts', 'lib.es2017.d.ts'], + target: tsModule.ScriptTarget.Latest, + moduleResolution: tsModule.ModuleResolutionKind.NodeJs, + module: tsModule.ModuleKind.CommonJS, + jsx: tsModule.JsxEmit.Preserve, + allowSyntheticDefaultImports: true }; + + return defaultCompilerOptions; } -const defaultCompilerOptions: ts.CompilerOptions = { - allowNonTsExtensions: true, - allowJs: true, - lib: ['lib.dom.d.ts', 'lib.es2017.d.ts'], - target: ts.ScriptTarget.Latest, - moduleResolution: ts.ModuleResolutionKind.NodeJs, - module: ts.ModuleKind.CommonJS, - jsx: ts.JsxEmit.Preserve, - allowSyntheticDefaultImports: true -}; +export function getServiceHost( + tsModule: T_TypeScript, + workspacePath: string, + jsDocuments: LanguageModelCache +) { + patchTS(tsModule); + const vueSys = getVueSys(tsModule); -export function getServiceHost(workspacePath: string, jsDocuments: LanguageModelCache) { let currentScriptDoc: TextDocument; const versions = new Map(); const scriptDocs = new Map(); @@ -64,7 +82,7 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel const files = parsedConfig.fileNames; const isOldVersion = inferIsOldVersion(workspacePath); const compilerOptions = { - ...defaultCompilerOptions, + ...getDefaultCompilerOptions(tsModule), ...parsedConfig.options }; compilerOptions.allowNonTsExtensions = true; @@ -84,7 +102,7 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel if (lastDoc && currentScriptDoc.languageId !== lastDoc.languageId) { // if languageId changed, restart the language service; it can't handle file type changes jsLanguageService.dispose(); - jsLanguageService = ts.createLanguageService(host); + jsLanguageService = tsModule.createLanguageService(host); } scriptDocs.set(fileFsPath, currentScriptDoc); versions.set(fileFsPath, (versions.get(fileFsPath) || 0) + 1); @@ -122,14 +140,14 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel fileName = uri.fsPath; const doc = scriptDocs.get(fileName) || - jsDocuments.get(TextDocument.create(uri.toString(), 'vue', 0, ts.sys.readFile(fileName) || '')); + jsDocuments.get(TextDocument.create(uri.toString(), 'vue', 0, tsModule.sys.readFile(fileName) || '')); return getScriptKind(doc.languageId); } else { if (fileName === bridge.fileName) { - return ts.Extension.Ts; + return tsModule.Extension.Ts; } // NOTE: Typescript 2.3 should export getScriptKindFromFileName. Then this cast should be removed. - return (ts as any).getScriptKindFromFileName(fileName); + return (tsModule as any).getScriptKindFromFileName(fileName); } }, @@ -147,13 +165,13 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel if (name === bridge.moduleName) { return { resolvedFileName: bridge.fileName, - extension: ts.Extension.Ts + extension: tsModule.Extension.Ts }; } if (path.isAbsolute(name) || !isVue(name)) { - return ts.resolveModuleName(name, containingFile, compilerOptions, ts.sys).resolvedModule; + return tsModule.resolveModuleName(name, containingFile, compilerOptions, tsModule.sys).resolvedModule; } - const resolved = ts.resolveModuleName(name, containingFile, compilerOptions, vueSys).resolvedModule; + const resolved = tsModule.resolveModuleName(name, containingFile, compilerOptions, vueSys).resolvedModule; if (!resolved) { return undefined as any; } @@ -164,11 +182,13 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel const uri = Uri.file(resolvedFileName); const doc = scriptDocs.get(resolvedFileName) || - jsDocuments.get(TextDocument.create(uri.toString(), 'vue', 0, ts.sys.readFile(resolvedFileName) || '')); + jsDocuments.get(TextDocument.create(uri.toString(), 'vue', 0, tsModule.sys.readFile(resolvedFileName) || '')); const extension = doc.languageId === 'typescript' - ? ts.Extension.Ts - : doc.languageId === 'tsx' ? ts.Extension.Tsx : ts.Extension.Js; + ? tsModule.Extension.Ts + : doc.languageId === 'tsx' + ? tsModule.Extension.Tsx + : tsModule.Extension.Js; return { resolvedFileName, extension }; }); }, @@ -183,7 +203,7 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel } const normalizedFileFsPath = getNormalizedFileFsPath(fileName); const doc = scriptDocs.get(normalizedFileFsPath); - let fileText = doc ? doc.getText() : ts.sys.readFile(normalizedFileFsPath) || ''; + let fileText = doc ? doc.getText() : tsModule.sys.readFile(normalizedFileFsPath) || ''; if (!doc && isVue(fileName)) { // Note: This is required in addition to the parsing in embeddedSupport because // this works for .vue files that aren't even loaded by VS Code yet. @@ -196,11 +216,11 @@ export function getServiceHost(workspacePath: string, jsDocuments: LanguageModel }; }, getCurrentDirectory: () => workspacePath, - getDefaultLibFileName: ts.getDefaultLibFilePath, + getDefaultLibFileName: tsModule.getDefaultLibFilePath, getNewLine: () => '\n' }; - let jsLanguageService = ts.createLanguageService(host); + let jsLanguageService = tsModule.createLanguageService(host); return { updateCurrentTextDocument, updateExternalDocument, diff --git a/server/src/services/dependencyService.ts b/server/src/services/dependencyService.ts index 2a176f1159..d17876a0bb 100644 --- a/server/src/services/dependencyService.ts +++ b/server/src/services/dependencyService.ts @@ -1,6 +1,6 @@ import * as path from 'path'; -const enum State { +export const enum State { Loaded, Unloaded } @@ -20,14 +20,14 @@ interface LoadedDependency { type RuntimeDependency = LoadedDependency | UnloadedDependency; -type T_PrettyHtml = typeof import('@starptech/prettyhtml'); -type T_ESLint = typeof import('eslint'); -type T_ESLintPluginVue = typeof import('eslint-plugin-vue'); -type T_JSBeautify = typeof import('eslint-plugin-vue'); -type T_Prettier = typeof import('prettier'); -// type T_PrettierEslint = typeof import('prettier-eslint'); -type T_StylusSupremacy = typeof import('stylus-supremacy'); -type T_TypeScript = typeof import('typescript'); +export type T_PrettyHtml = typeof import('@starptech/prettyhtml'); +export type T_ESLint = typeof import('eslint'); +export type T_ESLintPluginVue = typeof import('eslint-plugin-vue'); +export type T_JSBeautify = typeof import('eslint-plugin-vue'); +export type T_Prettier = typeof import('prettier'); +// export type T_PrettierEslint = typeof import('prettier-eslint'); +export type T_StylusSupremacy = typeof import('stylus-supremacy'); +export type T_TypeScript = typeof import('typescript'); interface VLSDependencies { prettyhtml: RuntimeDependency; diff --git a/server/src/services/vls.ts b/server/src/services/vls.ts index 249e68e92b..932e8b61dc 100644 --- a/server/src/services/vls.ts +++ b/server/src/services/vls.ts @@ -81,12 +81,12 @@ export class VLS { this.workspacePath = workspacePath; + await this.vueInfoService.init(this.languageModes); + await this.dependencyService.init(workspacePath); await this.languageModes.init(workspacePath, { infoService: this.vueInfoService, dependencyService: this.dependencyService }); - await this.vueInfoService.init(this.languageModes); - await this.dependencyService.init(workspacePath); this.setupConfigListeners(); this.setupLSPHandlers(); diff --git a/tslint.json b/tslint.json index d4a2b68e6f..8d508e4148 100644 --- a/tslint.json +++ b/tslint.json @@ -21,7 +21,8 @@ "whitespace": true, "semicolon": [true, "always"], "triple-equals": true, - "variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore"] + "variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore"], + "no-floating-promises": true }, "linterOptions": { } From 88deaaa1142a4720d35bed3df7bd01e4598f9de4 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Wed, 20 Mar 2019 09:24:52 -0700 Subject: [PATCH 05/13] More using tsModule --- server/src/modes/script/childComponents.ts | 16 ++-- server/src/modes/script/componentInfo.ts | 85 ++++++++++++++-------- server/src/modes/script/javascript.ts | 2 +- server/src/modes/script/serviceHost.ts | 38 +++++----- server/src/services/dependencyService.ts | 5 +- 5 files changed, 89 insertions(+), 57 deletions(-) diff --git a/server/src/modes/script/childComponents.ts b/server/src/modes/script/childComponents.ts index 3f33eb4125..0dfc40023a 100644 --- a/server/src/modes/script/childComponents.ts +++ b/server/src/modes/script/childComponents.ts @@ -1,5 +1,6 @@ import * as ts from 'typescript'; import { getLastChild, buildDocumentation, getObjectLiteralExprFromExportExpr } from './componentInfo'; +import { T_TypeScript } from '../../services/dependencyService'; interface InternalChildComponent { name: string; @@ -7,12 +8,13 @@ interface InternalChildComponent { definition?: { path: string; start: number; - end: number + end: number; }; defaultExportExpr?: ts.Node; } export function getChildComponents( + tsModule: T_TypeScript, defaultExportType: ts.Type, checker: ts.TypeChecker, tagCasing = 'kebab' @@ -27,7 +29,7 @@ export function getChildComponents( return undefined; } - if (componentsDeclaration.kind === ts.SyntaxKind.ObjectLiteralExpression) { + if (componentsDeclaration.kind === tsModule.SyntaxKind.ObjectLiteralExpression) { const componentsType = checker.getTypeOfSymbolAtLocation(componentsSymbol, componentsDeclaration); const result: InternalChildComponent[] = []; @@ -42,10 +44,10 @@ export function getChildComponents( } let objectLiteralSymbol: ts.Symbol | undefined; - if (s.valueDeclaration.kind === ts.SyntaxKind.PropertyAssignment) { + if (s.valueDeclaration.kind === tsModule.SyntaxKind.PropertyAssignment) { objectLiteralSymbol = checker.getSymbolAtLocation((s.valueDeclaration as ts.PropertyAssignment).initializer) || s; - } else if (s.valueDeclaration.kind === ts.SyntaxKind.ShorthandPropertyAssignment) { + } else if (s.valueDeclaration.kind === tsModule.SyntaxKind.ShorthandPropertyAssignment) { objectLiteralSymbol = checker.getShorthandAssignmentValueSymbol(s.valueDeclaration) || s; } @@ -53,7 +55,7 @@ export function getChildComponents( return; } - if (objectLiteralSymbol.flags & ts.SymbolFlags.Alias) { + if (objectLiteralSymbol.flags & tsModule.SymbolFlags.Alias) { const definitionObjectLiteralSymbol = checker.getAliasedSymbol(objectLiteralSymbol); if (definitionObjectLiteralSymbol.valueDeclaration) { const defaultExportExpr = getLastChild(definitionObjectLiteralSymbol.valueDeclaration); @@ -63,13 +65,13 @@ export function getChildComponents( result.push({ name: componentName, - documentation: buildDocumentation(definitionObjectLiteralSymbol, checker), + documentation: buildDocumentation(tsModule, definitionObjectLiteralSymbol, checker), definition: { path: definitionObjectLiteralSymbol.valueDeclaration.getSourceFile().fileName, start: defaultExportExpr.getStart(undefined, true), end: defaultExportExpr.getEnd() }, - defaultExportExpr: getObjectLiteralExprFromExportExpr(defaultExportExpr) + defaultExportExpr: getObjectLiteralExprFromExportExpr(tsModule, defaultExportExpr) }); } } diff --git a/server/src/modes/script/componentInfo.ts b/server/src/modes/script/componentInfo.ts index 6992b89ae3..004090725c 100644 --- a/server/src/modes/script/componentInfo.ts +++ b/server/src/modes/script/componentInfo.ts @@ -8,8 +8,10 @@ import { ChildComponent } from '../../services/vueInfoService'; import { getChildComponents } from './childComponents'; +import { T_TypeScript } from '../../services/dependencyService'; export function getComponentInfo( + tsModule: T_TypeScript, service: ts.LanguageService, fileFsPath: string, config: any @@ -26,15 +28,20 @@ export function getComponentInfo( const checker = program.getTypeChecker(); - const defaultExportExpr = getDefaultExportObjectLiteralExpr(sourceFile); + const defaultExportExpr = getDefaultExportObjectLiteralExpr(tsModule, sourceFile); if (!defaultExportExpr) { return undefined; } - const vueFileInfo = analyzeDefaultExportExpr(defaultExportExpr, checker); + const vueFileInfo = analyzeDefaultExportExpr(tsModule, defaultExportExpr, checker); const defaultExportType = checker.getTypeAtLocation(defaultExportExpr); - const internalChildComponents = getChildComponents(defaultExportType, checker, config.vetur.completion.tagCasing); + const internalChildComponents = getChildComponents( + tsModule, + defaultExportType, + checker, + config.vetur.completion.tagCasing + ); if (internalChildComponents) { const childComponents: ChildComponent[] = []; @@ -43,7 +50,7 @@ export function getComponentInfo( name: c.name, documentation: c.documentation, definition: c.definition, - info: c.defaultExportExpr ? analyzeDefaultExportExpr(c.defaultExportExpr, checker) : undefined + info: c.defaultExportExpr ? analyzeDefaultExportExpr(tsModule, c.defaultExportExpr, checker) : undefined }); }); vueFileInfo.componentInfo.childComponents = childComponents; @@ -52,13 +59,17 @@ export function getComponentInfo( return vueFileInfo; } -export function analyzeDefaultExportExpr(defaultExportExpr: ts.Node, checker: ts.TypeChecker): VueFileInfo { +export function analyzeDefaultExportExpr( + tsModule: T_TypeScript, + defaultExportExpr: ts.Node, + checker: ts.TypeChecker +): VueFileInfo { const defaultExportType = checker.getTypeAtLocation(defaultExportExpr); - const props = getProps(defaultExportType, checker); - const data = getData(defaultExportType, checker); - const computed = getComputed(defaultExportType, checker); - const methods = getMethods(defaultExportType, checker); + const props = getProps(tsModule, defaultExportType, checker); + const data = getData(tsModule, defaultExportType, checker); + const computed = getComputed(tsModule, defaultExportType, checker); + const methods = getMethods(tsModule, defaultExportType, checker); return { componentInfo: { @@ -70,17 +81,20 @@ export function analyzeDefaultExportExpr(defaultExportExpr: ts.Node, checker: ts }; } -function getDefaultExportObjectLiteralExpr(sourceFile: ts.SourceFile): ts.Expression | undefined { - const exportStmts = sourceFile.statements.filter(st => st.kind === ts.SyntaxKind.ExportAssignment); +function getDefaultExportObjectLiteralExpr( + tsModule: T_TypeScript, + sourceFile: ts.SourceFile +): ts.Expression | undefined { + const exportStmts = sourceFile.statements.filter(st => st.kind === tsModule.SyntaxKind.ExportAssignment); if (exportStmts.length === 0) { return undefined; } const exportExpr = (exportStmts[0] as ts.ExportAssignment).expression; - return getObjectLiteralExprFromExportExpr(exportExpr); + return getObjectLiteralExprFromExportExpr(tsModule, exportExpr); } -function getProps(defaultExportType: ts.Type, checker: ts.TypeChecker): PropInfo[] | undefined { +function getProps(tsModule: T_TypeScript, defaultExportType: ts.Type, checker: ts.TypeChecker): PropInfo[] | undefined { const propsSymbol = checker.getPropertyOfType(defaultExportType, 'props'); if (!propsSymbol || !propsSymbol.valueDeclaration) { return undefined; @@ -94,9 +108,9 @@ function getProps(defaultExportType: ts.Type, checker: ts.TypeChecker): PropInfo /** * Plain array props like `props: ['foo', 'bar']` */ - if (propsDeclaration.kind === ts.SyntaxKind.ArrayLiteralExpression) { + if (propsDeclaration.kind === tsModule.SyntaxKind.ArrayLiteralExpression) { return (propsDeclaration as ts.ArrayLiteralExpression).elements - .filter(expr => expr.kind === ts.SyntaxKind.StringLiteral) + .filter(expr => expr.kind === tsModule.SyntaxKind.StringLiteral) .map(expr => { return { name: (expr as ts.StringLiteral).text @@ -115,13 +129,13 @@ function getProps(defaultExportType: ts.Type, checker: ts.TypeChecker): PropInfo * } * ``` */ - if (propsDeclaration.kind === ts.SyntaxKind.ObjectLiteralExpression) { + if (propsDeclaration.kind === tsModule.SyntaxKind.ObjectLiteralExpression) { const propsType = checker.getTypeOfSymbolAtLocation(propsSymbol, propsDeclaration); return checker.getPropertiesOfType(propsType).map(s => { return { name: s.name, - documentation: buildDocumentation(s, checker) + documentation: buildDocumentation(tsModule, s, checker) }; }); } @@ -142,7 +156,7 @@ function getProps(defaultExportType: ts.Type, checker: ts.TypeChecker): PropInfo * } * ``` */ -function getData(defaultExportType: ts.Type, checker: ts.TypeChecker): DataInfo[] | undefined { +function getData(tsModule: T_TypeScript, defaultExportType: ts.Type, checker: ts.TypeChecker): DataInfo[] | undefined { const dataSymbol = checker.getPropertyOfType(defaultExportType, 'data'); if (!dataSymbol || !dataSymbol.valueDeclaration) { return undefined; @@ -157,12 +171,16 @@ function getData(defaultExportType: ts.Type, checker: ts.TypeChecker): DataInfo[ return dataReturnTypeProperties.getProperties().map(s => { return { name: s.name, - documentation: buildDocumentation(s, checker) + documentation: buildDocumentation(tsModule, s, checker) }; }); } -function getComputed(defaultExportType: ts.Type, checker: ts.TypeChecker): ComputedInfo[] | undefined { +function getComputed( + tsModule: T_TypeScript, + defaultExportType: ts.Type, + checker: ts.TypeChecker +): ComputedInfo[] | undefined { const computedSymbol = checker.getPropertyOfType(defaultExportType, 'computed'); if (!computedSymbol || !computedSymbol.valueDeclaration) { return undefined; @@ -173,13 +191,13 @@ function getComputed(defaultExportType: ts.Type, checker: ts.TypeChecker): Compu return undefined; } - if (computedDeclaration.kind === ts.SyntaxKind.ObjectLiteralExpression) { + if (computedDeclaration.kind === tsModule.SyntaxKind.ObjectLiteralExpression) { const computedType = checker.getTypeOfSymbolAtLocation(computedSymbol, computedDeclaration); return checker.getPropertiesOfType(computedType).map(s => { return { name: s.name, - documentation: buildDocumentation(s, checker) + documentation: buildDocumentation(tsModule, s, checker) }; }); } @@ -187,7 +205,11 @@ function getComputed(defaultExportType: ts.Type, checker: ts.TypeChecker): Compu return undefined; } -function getMethods(defaultExportType: ts.Type, checker: ts.TypeChecker): MethodInfo[] | undefined { +function getMethods( + tsModule: T_TypeScript, + defaultExportType: ts.Type, + checker: ts.TypeChecker +): MethodInfo[] | undefined { const methodsSymbol = checker.getPropertyOfType(defaultExportType, 'methods'); if (!methodsSymbol || !methodsSymbol.valueDeclaration) { return undefined; @@ -198,13 +220,13 @@ function getMethods(defaultExportType: ts.Type, checker: ts.TypeChecker): Method return undefined; } - if (methodsDeclaration.kind === ts.SyntaxKind.ObjectLiteralExpression) { + if (methodsDeclaration.kind === tsModule.SyntaxKind.ObjectLiteralExpression) { const methodsType = checker.getTypeOfSymbolAtLocation(methodsSymbol, methodsDeclaration); return checker.getPropertiesOfType(methodsType).map(s => { return { name: s.name, - documentation: buildDocumentation(s, checker) + documentation: buildDocumentation(tsModule, s, checker) }; }); } @@ -212,12 +234,15 @@ function getMethods(defaultExportType: ts.Type, checker: ts.TypeChecker): Method return undefined; } -export function getObjectLiteralExprFromExportExpr(exportExpr: ts.Node): ts.Expression | undefined { +export function getObjectLiteralExprFromExportExpr( + tsModule: T_TypeScript, + exportExpr: ts.Node +): ts.Expression | undefined { switch (exportExpr.kind) { - case ts.SyntaxKind.CallExpression: + case tsModule.SyntaxKind.CallExpression: // Vue.extend or synthetic __vueEditorBridge return (exportExpr as ts.CallExpression).arguments[0]; - case ts.SyntaxKind.ObjectLiteralExpression: + case tsModule.SyntaxKind.ObjectLiteralExpression: return exportExpr as ts.ObjectLiteralExpression; } return undefined; @@ -232,7 +257,7 @@ export function getLastChild(d: ts.Declaration) { return children[children.length - 1]; } -export function buildDocumentation(s: ts.Symbol, checker: ts.TypeChecker) { +export function buildDocumentation(tsModule: T_TypeScript, s: ts.Symbol, checker: ts.TypeChecker) { let documentation = s .getDocumentationComment(checker) .map(d => d.text) @@ -241,7 +266,7 @@ export function buildDocumentation(s: ts.Symbol, checker: ts.TypeChecker) { documentation += '\n'; if (s.valueDeclaration) { - if (s.valueDeclaration.kind === ts.SyntaxKind.PropertyAssignment) { + if (s.valueDeclaration.kind === tsModule.SyntaxKind.PropertyAssignment) { documentation += `\`\`\`js\n${formatJSLikeDocumentation(s.valueDeclaration.getText())}\n\`\`\`\n`; } else { documentation += `\`\`\`js\n${formatJSLikeDocumentation(s.valueDeclaration.getText())}\n\`\`\`\n`; diff --git a/server/src/modes/script/javascript.ts b/server/src/modes/script/javascript.ts index 632fe1152e..a3e1933e02 100644 --- a/server/src/modes/script/javascript.ts +++ b/server/src/modes/script/javascript.ts @@ -89,7 +89,7 @@ export async function getJavascriptMode( const { service } = updateCurrentTextDocument(doc); const fileFsPath = getFileFsPath(doc.uri); - const info = getComponentInfo(service, fileFsPath, config); + const info = getComponentInfo(tsModule, service, fileFsPath, config); if (info) { vueInfoService.updateInfo(doc, info); } diff --git a/server/src/modes/script/serviceHost.ts b/server/src/modes/script/serviceHost.ts index 78db8272a8..5b7bcb02ab 100644 --- a/server/src/modes/script/serviceHost.ts +++ b/server/src/modes/script/serviceHost.ts @@ -78,9 +78,9 @@ export function getServiceHost( const versions = new Map(); const scriptDocs = new Map(); - const parsedConfig = getParsedConfig(workspacePath); + const parsedConfig = getParsedConfig(tsModule, workspacePath); const files = parsedConfig.fileNames; - const isOldVersion = inferIsOldVersion(workspacePath); + const isOldVersion = inferIsOldVersion(tsModule, workspacePath); const compilerOptions = { ...getDefaultCompilerOptions(tsModule), ...parsedConfig.options @@ -141,7 +141,7 @@ export function getServiceHost( const doc = scriptDocs.get(fileName) || jsDocuments.get(TextDocument.create(uri.toString(), 'vue', 0, tsModule.sys.readFile(fileName) || '')); - return getScriptKind(doc.languageId); + return getScriptKind(tsModule, doc.languageId); } else { if (fileName === bridge.fileName) { return tsModule.Extension.Ts; @@ -239,9 +239,9 @@ function isVueProject(path: string) { return path.endsWith('.vue.ts') && !path.includes('node_modules'); } -function defaultIgnorePatterns(workspacePath: string) { +function defaultIgnorePatterns(tsModule: T_TypeScript, workspacePath: string) { const nodeModules = ['node_modules', '**/node_modules/*']; - const gitignore = ts.findConfigFile(workspacePath, ts.sys.fileExists, '.gitignore'); + const gitignore = tsModule.findConfigFile(workspacePath, tsModule.sys.fileExists, '.gitignore'); if (!gitignore) { return nodeModules; } @@ -250,14 +250,18 @@ function defaultIgnorePatterns(workspacePath: string) { return nodeModules.concat(filtered); } -function getScriptKind(langId: string): ts.ScriptKind { - return langId === 'typescript' ? ts.ScriptKind.TS : langId === 'tsx' ? ts.ScriptKind.TSX : ts.ScriptKind.JS; +function getScriptKind(tsModule: T_TypeScript, langId: string): ts.ScriptKind { + return langId === 'typescript' + ? tsModule.ScriptKind.TS + : langId === 'tsx' + ? tsModule.ScriptKind.TSX + : tsModule.ScriptKind.JS; } -function inferIsOldVersion(workspacePath: string): boolean { - const packageJSONPath = ts.findConfigFile(workspacePath, ts.sys.fileExists, 'package.json'); +function inferIsOldVersion(tsModule: T_TypeScript, workspacePath: string): boolean { + const packageJSONPath = tsModule.findConfigFile(workspacePath, tsModule.sys.fileExists, 'package.json'); try { - const packageJSON = packageJSONPath && JSON.parse(ts.sys.readFile(packageJSONPath)!); + const packageJSON = packageJSONPath && JSON.parse(tsModule.sys.readFile(packageJSONPath)!); const vueStr = packageJSON.dependencies.vue || packageJSON.devDependencies.vue; // use a sloppy method to infer version, to reduce dep on semver or so const vueDep = vueStr.match(/\d+\.\d+/)[0]; @@ -268,17 +272,17 @@ function inferIsOldVersion(workspacePath: string): boolean { } } -function getParsedConfig(workspacePath: string) { +function getParsedConfig(tsModule: T_TypeScript, workspacePath: string) { const configFilename = - ts.findConfigFile(workspacePath, ts.sys.fileExists, 'tsconfig.json') || - ts.findConfigFile(workspacePath, ts.sys.fileExists, 'jsconfig.json'); - const configJson = (configFilename && ts.readConfigFile(configFilename, ts.sys.readFile).config) || { - exclude: defaultIgnorePatterns(workspacePath) + tsModule.findConfigFile(workspacePath, tsModule.sys.fileExists, 'tsconfig.json') || + tsModule.findConfigFile(workspacePath, tsModule.sys.fileExists, 'jsconfig.json'); + const configJson = (configFilename && tsModule.readConfigFile(configFilename, tsModule.sys.readFile).config) || { + exclude: defaultIgnorePatterns(tsModule, workspacePath) }; // existingOptions should be empty since it always takes priority - return ts.parseJsonConfigFileContent( + return tsModule.parseJsonConfigFileContent( configJson, - ts.sys, + tsModule.sys, workspacePath, /*existingOptions*/ {}, configFilename, diff --git a/server/src/services/dependencyService.ts b/server/src/services/dependencyService.ts index d17876a0bb..3ee643dc19 100644 --- a/server/src/services/dependencyService.ts +++ b/server/src/services/dependencyService.ts @@ -57,12 +57,13 @@ export class DependencyService { async init(workspacePath: string) { const workspaceTSPath = path.resolve(workspacePath, 'node_modules/typescript'); const tsModule = await import(workspaceTSPath); + console.log(`Loading TypeScript ${tsModule.version}`); this.dependencies.typescript = { name: 'typecript', state: State.Loaded, - version: '1.0.0', - bundled: true, + version: tsModule.version, + bundled: false, module: tsModule }; } From 0f390295ce55994468960f1cacfb425b81ad3835 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Wed, 20 Mar 2019 10:10:32 -0700 Subject: [PATCH 06/13] Less deps --- test/lsp/fixture/package.json | 6 +- test/lsp/fixture/yarn.lock | 1905 +-------------------------------- 2 files changed, 39 insertions(+), 1872 deletions(-) diff --git a/test/lsp/fixture/package.json b/test/lsp/fixture/package.json index 4abcf2dfc9..8f15f5a9e9 100644 --- a/test/lsp/fixture/package.json +++ b/test/lsp/fixture/package.json @@ -65,7 +65,6 @@ "file-loader": "^1.1.5", "friendly-errors-webpack-plugin": "^1.6.1", "html-webpack-plugin": "^2.30.1", - "node-sass": "^4.5.3", "offline-plugin": "^4.8.4", "postcss-loader": "^2.0.7", "postcss-nested": "^2.1.2", @@ -73,13 +72,10 @@ "prettier-eslint-cli": "^4.4.0", "raw-loader": "^0.5.1", "rimraf": "^2.6.2", - "sass-loader": "^6.0.6", "style-loader": "^0.19.0", + "typescript": "^3.3.4000", "vue-loader": "^13.3.0", "vue-template-compiler": "^2.5.3", - "webpack": "3.7.1", - "webpack-dev-middleware": "^1.12.0", - "webpack-hot-middleware": "^2.19.1", "xo": "^0.18.2" } } diff --git a/test/lsp/fixture/yarn.lock b/test/lsp/fixture/yarn.lock index dbf8bee9f1..a30e607fe4 100644 --- a/test/lsp/fixture/yarn.lock +++ b/test/lsp/fixture/yarn.lock @@ -20,13 +20,6 @@ accepts@~1.3.4: mime-types "~2.1.16" negotiator "0.6.1" -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= - dependencies: - acorn "^4.0.3" - acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -39,12 +32,7 @@ acorn@^3.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= - -acorn@^5.0.0, acorn@^5.1.1: +acorn@^5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" integrity sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA== @@ -59,12 +47,12 @@ ajv-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= -ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: +ajv-keywords@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" integrity sha1-opbhf3v658HOT34N5T0pyzIWLfA= -ajv@^4.7.0, ajv@^4.9.1: +ajv@^4.7.0: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= @@ -72,7 +60,7 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.0, ajv@^5.2.3: +ajv@^5.0.0, ajv@^5.2.0, ajv@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" integrity sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI= @@ -92,25 +80,11 @@ ajv@^5.3.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -133,11 +107,6 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" integrity sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ== -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -160,27 +129,6 @@ ansi-styles@^3.0.0, ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - integrity sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0= - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" @@ -188,18 +136,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -227,57 +163,11 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - integrity sha1-SLokC0WpKA6UdImQull9IWYX/UA= - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y= - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - async-validator@~1.8.1: version "1.8.5" resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0" @@ -285,18 +175,13 @@ async-validator@~1.8.1: dependencies: babel-runtime "6.x" -async@^2.1.2, async@^2.1.5, async@^2.4.1: +async@^2.4.1: version "2.5.0" resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" integrity sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw== dependencies: lodash "^4.14.0" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - autoprefixer@^6.3.1: version "6.7.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" @@ -321,21 +206,6 @@ autoprefixer@^7.1.5: postcss "^6.0.13" postcss-value-parser "^3.2.3" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.2.1, aws4@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= - babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -956,45 +826,16 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" - integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw== - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40= - dependencies: - tweetnacl "^0.14.3" - big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== -binary-extensions@^1.0.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" - integrity sha1-muuabF6IY4qtFx4Wf1kAq+JINdA= - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" @@ -1021,27 +862,6 @@ boolify@^1.0.0: resolved "https://registry.yarnpkg.com/boolify/-/boolify-1.0.1.tgz#b5c09e17cacd113d11b7bb3ed384cc012994d86b" integrity sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs= -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= - dependencies: - hoek "2.x.x" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE= - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw== - dependencies: - hoek "4.x.x" - boxen@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" @@ -1063,78 +883,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.0.tgz#1d2ad62a8b479f23f0ab631c1be86a82dbccbe48" - integrity sha512-W2bIMLYoZ9oow7TyePpMJk9l9LY7O3R61a/68bVCDOtnJynnwe3ZeW2IzzSkrQnPKNdJrxVDn3ALZNisSBwb7g== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo= - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0= - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0= - dependencies: - pako "~0.2.0" - browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -1156,30 +904,11 @@ buf-compare@^1.0.0: resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" integrity sha1-/vKNqLgROgoNtEMLC2Rntpcws0o= -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1222,21 +951,11 @@ camelcase-keys@^4.1.0: map-obj "^2.0.0" quick-lru "^1.0.0" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1267,19 +986,6 @@ capture-stack-trace@^1.0.0: resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" integrity sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0= -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - chalk@2.1.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" @@ -1300,30 +1006,6 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" @@ -1367,15 +1049,6 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -1385,16 +1058,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -clone-deep@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" - integrity sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg= - dependencies: - for-own "^1.0.0" - is-plain-object "^2.0.1" - kind-of "^3.2.2" - shallow-clone "^0.1.2" - clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" @@ -1459,13 +1122,6 @@ colors@~1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk= - dependencies: - delayed-stream "~1.0.0" - commander@2.11.x, commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -1509,18 +1165,6 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - consolidate@^0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.14.5.tgz#5a25047bc76f73072667c8cb52c989888f494c63" @@ -1528,11 +1172,6 @@ consolidate@^0.14.0: dependencies: bluebird "^3.1.1" -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -1590,7 +1229,7 @@ core-js@^2.0.0, core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" integrity sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs= -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -1608,14 +1247,6 @@ cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: parse-json "^2.2.0" require-from-string "^1.1.0" -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30= - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -1623,28 +1254,6 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - integrity sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0= - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - cross-env@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.5.tgz#4383d364d9660873dd185b398af3bfef5efffef3" @@ -1653,14 +1262,6 @@ cross-env@^5.0.5: cross-spawn "^5.1.0" is-windows "^1.0.0" -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" @@ -1678,36 +1279,6 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= - dependencies: - boom "2.x.x" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - integrity sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4= - dependencies: - boom "5.x.x" - -crypto-browserify@^3.11.0: - version "3.11.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" - integrity sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" @@ -1827,18 +1398,6 @@ d@1: dependencies: es5-ext "^0.10.9" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" @@ -1858,7 +1417,7 @@ debug@^3.0.1, debug@^3.1.0: dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1910,29 +1469,11 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@1.1.1, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -1950,15 +1491,6 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4= - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dlv@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7" @@ -2002,11 +1534,6 @@ dom-serializer@0: domelementtype "~1.1.1" entities "~1.1.1" -domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw= - domelementtype@1: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" @@ -2051,13 +1578,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU= - dependencies: - jsbn "~0.1.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2085,19 +1605,6 @@ element-ui@^2.4.5: resize-observer-polyfill "^1.5.0" throttle-debounce "^1.0.1" -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -2115,28 +1622,11 @@ enhance-visitors@^1.0.0: dependencies: lodash "^4.13.1" -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" - integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" - entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= -errno@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0= - dependencies: - prr "~0.0.0" - error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" @@ -2535,19 +2025,6 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" @@ -2579,20 +2056,6 @@ exit-hook@^1.0.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - express@^4.16.2: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" @@ -2629,11 +2092,6 @@ express@^4.16.2: utils-merge "1.0.1" vary "~1.1.2" -extend@~3.0.0, extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= - external-editor@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" @@ -2643,13 +2101,6 @@ external-editor@^2.0.4: jschardet "^1.4.2" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extract-text-webpack-plugin@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.1.tgz#605a8893faca1dd49bb0d2ca87493f33fd43d102" @@ -2660,11 +2111,6 @@ extract-text-webpack-plugin@^3.0.1: schema-utils "^0.3.0" webpack-sources "^1.0.1" -extsprintf@1.3.0, extsprintf@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" @@ -2716,22 +2162,6 @@ file-loader@^1.1.5: loader-utils "^1.0.2" schema-utils "^0.3.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" @@ -2784,53 +2214,6 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" - integrity sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -2864,33 +2247,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - integrity sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw== - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU= - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2901,27 +2257,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gaze@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" - integrity sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU= - dependencies: - globule "^1.0.0" - generate-function@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" @@ -2967,29 +2302,7 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== @@ -3053,15 +2366,6 @@ globby@^6.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globule@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" - integrity sha1-HcScaCLdnoovoAuiopUAboZkvQk= - dependencies: - glob "~7.1.1" - lodash "~4.17.4" - minimatch "~3.0.2" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -3084,32 +2388,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio= - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3127,11 +2405,6 @@ has-flag@^2.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" @@ -3139,78 +2412,16 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - integrity sha1-ZuodhW206KVHDK32/OI65SRO8uE= - dependencies: - inherits "^2.0.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - hash-sum@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ== - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - he@1.1.x, he@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= - -hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" - integrity sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ== - home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3229,11 +2440,6 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" integrity sha1-ZouTd26q5V696POtRkswekljYl4= -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - html-minifier@^3.2.3: version "3.5.5" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.5.tgz#3bdc9427e638bbe3dbde96c0eb988b044f02739e" @@ -3285,29 +2491,6 @@ http-errors@1.6.2, http-errors@~1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI= - iconv-lite@0.4.19, iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -3325,11 +2508,6 @@ icss-utils@^2.1.0: dependencies: postcss "^6.0.1" -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= - ignore@^3.2.0, ignore@^3.2.6, ignore@^3.3.3: version "3.3.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" @@ -3355,11 +2533,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= - indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -3377,11 +2550,6 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3390,16 +2558,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" @@ -3481,18 +2644,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - integrity sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw= - is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" @@ -3505,33 +2656,11 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-error@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" integrity sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw= -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3564,13 +2693,6 @@ is-get-set-prop@^1.0.0: get-set-props "^0.1.0" lowercase-keys "^1.0.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" @@ -3608,20 +2730,6 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - is-obj-prop@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-obj-prop/-/is-obj-prop-1.0.0.tgz#b34de79c450b8d7c73ab2cdf67dc875adb85f80e" @@ -3659,23 +2767,6 @@ is-plain-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -3723,11 +2814,6 @@ is-svg@^2.0.0: dependencies: html-comment-regex "^1.1.0" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -3743,7 +2829,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3753,24 +2839,7 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -js-base64@^2.1.8, js-base64@^2.1.9: +js-base64@^2.1.9: version "2.3.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" integrity sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw== @@ -3801,11 +2870,6 @@ js-yaml@~3.7.0: argparse "^1.0.7" esprima "^2.6.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jschardet@^1.4.2: version "1.5.1" resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" @@ -3821,21 +2885,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== - json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -3848,11 +2902,6 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -3875,37 +2924,6 @@ jsonpointer@^4.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2, kind-of@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -3913,16 +2931,6 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -3959,11 +2967,6 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= - loader-utils@0.2.x, loader-utils@^0.2.15, loader-utils@^0.2.16: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" @@ -3974,7 +2977,7 @@ loader-utils@0.2.x, loader-utils@^0.2.15, loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= @@ -3991,21 +2994,11 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - lodash.camelcase@^4.1.1, lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -lodash.clonedeep@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" @@ -4031,21 +3024,11 @@ lodash.merge@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" integrity sha1-aYhLoUSsM/5plzemCG3v+t0PicU= -lodash.mergewith@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" - integrity sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU= - lodash.snakecase@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - lodash.unescape@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" @@ -4061,7 +3044,7 @@ lodash.upperfirst@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.4: +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= @@ -4086,11 +3069,6 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.1.tgz#189078c94ab9053ee215a0acdbf24244ea0f6502" integrity sha1-GJB4yUq5BT7iFaCs2/JCROoPZQI= -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - loose-envify@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" @@ -4158,14 +3136,6 @@ math-expression-evaluator@^1.2.14: resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= -md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -4178,15 +3148,7 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.4.2, meow@^3.7.0: +meow@^3.4.2: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= @@ -4228,46 +3190,19 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" integrity sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE= -mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: +mime-types@~2.1.15, mime-types@~2.1.16: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" integrity sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo= dependencies: mime-db "~1.30.0" -mime@1.4.1, mime@^1.3.4: +mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== @@ -4277,17 +3212,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" integrity sha1-5md4PZLonb00KBi1IwudYqZyrRg= -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M= - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -4304,15 +3229,7 @@ minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -4344,11 +3261,6 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.3.0, nan@^2.3.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" - integrity sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY= - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -4380,109 +3292,13 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" -node-gyp@^3.3.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" - integrity sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA= - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - minimatch "^3.0.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "2" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" - integrity sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY= - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.6.36: - version "0.6.38" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" - integrity sha1-6Sog+DQWQVu0CG9tH7eLPac9ET0= - dependencies: - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-sass@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" - integrity sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg= - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.3.2" - node-gyp "^3.3.1" - npmlog "^4.0.0" - request "^2.79.0" - sass-graph "^2.1.1" - stdout-stream "^1.4.0" - -"nopt@2 || 3", nopt@~3.0.6: +nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -4493,13 +3309,6 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" @@ -4527,16 +3336,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" @@ -4554,11 +3353,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - obj-props@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/obj-props/-/obj-props-1.1.0.tgz#626313faa442befd4a44e9a02c3cb6bde937b511" @@ -4569,14 +3363,6 @@ object-assign@^4.0.1, object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - offline-plugin@^4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-4.8.4.tgz#1084c59f6606bded5ee5a6bf6208e2b9f5bdd339" @@ -4595,7 +3381,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.3: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -4626,23 +3412,11 @@ optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8= - os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -4652,19 +3426,11 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - integrity sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -4692,11 +3458,6 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= - param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" @@ -4704,27 +3465,6 @@ param-case@2.1.x: dependencies: no-case "^2.2.0" -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - integrity sha1-N8T5t+06tlx0gXtfJICTf7+XxxI= - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -4737,11 +3477,6 @@ parseurl@~1.3.2: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= - path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -4795,27 +3530,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -pbkdf2@^3.0.3: - version "3.0.14" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" - integrity sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5218,11 +3932,6 @@ prepend-http@^1.0.0, prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - prettier-eslint-cli@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.4.0.tgz#3ceca9d5a207f4dde90a40545f317d6e13a3f932" @@ -5295,11 +4004,6 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= -process@^0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" @@ -5328,52 +4032,21 @@ proxy-addr@~2.0.2: forwarded "~0.1.2" ipaddr.js "1.5.2" -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo= - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY= - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - q@^1.1.2: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" integrity sha1-3QG6ydBtMObyGa7LglPunr3DCPE= -qs@6.5.1, qs@~6.5.1: +qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= - quasar-framework@^0.17.12: version "0.17.12" resolved "https://registry.yarnpkg.com/quasar-framework/-/quasar-framework-0.17.12.tgz#76d4d094f3ca78108ae8436a810cb00ab55b93e5" @@ -5387,37 +4060,12 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0, querystring@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" - integrity sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.0.3, range-parser@~1.2.0: +range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= @@ -5437,7 +4085,7 @@ raw-loader@^0.5.1: resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: +rc@^1.0.1, rc@^1.1.6: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" integrity sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU= @@ -5491,7 +4139,7 @@ readable-stream@1.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: +readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== @@ -5504,16 +4152,6 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - readline2@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" @@ -5573,13 +4211,6 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -5630,11 +4261,6 @@ relateurl@0.2.x: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - renderkid@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" @@ -5646,16 +4272,6 @@ renderkid@^2.0.1: strip-ansi "^3.0.0" utila "~0.3" -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" @@ -5663,62 +4279,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@2, request@^2.79.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" - integrity sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - 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.17" - 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.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5797,28 +4357,13 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@^2.2.8, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - integrity sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc= - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - run-async@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" @@ -5857,32 +4402,11 @@ rxjs@^5.3.0: dependencies: symbol-observable "^1.0.1" -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -sass-graph@^2.1.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^7.0.0" - -sass-loader@^6.0.6: - version "6.0.6" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9" - integrity sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ== - dependencies: - async "^2.1.5" - clone-deep "^0.3.0" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - pify "^3.0.0" - sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -5895,14 +4419,6 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -5915,11 +4431,6 @@ semver-diff@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - send@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" @@ -5949,21 +4460,11 @@ serve-static@1.13.1: parseurl "~1.3.2" send "0.16.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" @@ -5974,24 +4475,6 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.9" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" - integrity sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -6035,20 +4518,6 @@ slice-ansi@1.0.0: dependencies: is-fullwidth-code-point "^2.0.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= - dependencies: - hoek "2.x.x" - -sntp@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b" - integrity sha1-UGQRDwr4X3z9t9a2ekACjOUrSys= - dependencies: - hoek "4.x.x" - sort-keys@^1.0.0, sort-keys@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -6080,13 +4549,6 @@ source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -6114,21 +4576,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - integrity sha1-US322mKHFEMW3EwY/hzx2UBzm+M= - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - stackframe@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" @@ -6139,32 +4586,6 @@ stackframe@^1.0.3: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= -stdout-stream@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" - integrity sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s= - dependencies: - readable-stream "^2.0.1" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-http@^2.3.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" - integrity sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -6177,7 +4598,7 @@ string-length@^1.0.1: dependencies: strip-ansi "^3.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -6194,7 +4615,7 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string_decoder@^0.10.25, string_decoder@~0.10.x: +string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= @@ -6206,11 +4627,6 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -6274,7 +4690,7 @@ supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: +supports-color@^4.0.0, supports-color@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== @@ -6328,34 +4744,6 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" - integrity sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI= - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - integrity sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ= - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.0.0, tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6383,23 +4771,11 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -time-stamp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" - integrity sha1-lcakRTDhW6jW9KPsuMOj+sRto1c= - timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -timers-browserify@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" - integrity sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg== - dependencies: - setimmediate "^1.0.4" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -6407,11 +4783,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -6422,13 +4793,6 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" integrity sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw= -tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" - integrity sha1-C2GKVWW23qkL80JdBNVe3EdadWE= - dependencies: - punycode "^1.4.1" - trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -6444,23 +4808,6 @@ tryit@^1.0.1: resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" integrity sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics= -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -6494,6 +4841,11 @@ typescript@^2.5.1: resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" integrity sha1-7znN6ierrAtQAkLWcmq5DgyEZjE= +typescript@^3.3.4000: + version "3.3.4000" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0" + integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA== + uglify-js@3.1.x: version "3.1.3" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.3.tgz#d61f0453b4718cab01581f3162aa90bab7520b42" @@ -6502,35 +4854,6 @@ uglify-js@3.1.x: commander "~2.11.0" source-map "~0.5.1" -uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= - dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -6597,14 +4920,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" @@ -6617,13 +4932,6 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util@0.10.3, util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - utila@~0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" @@ -6639,11 +4947,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.0, uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== - validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -6662,22 +4965,6 @@ vendors@^1.0.0: resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" integrity sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI= -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" - vue-eslint-parser@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" @@ -6755,36 +5042,6 @@ vuex@^3.0.1: resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2" integrity sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w== -watchpack@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" - integrity sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw= - dependencies: - async "^2.1.2" - chokidar "^1.7.0" - graceful-fs "^4.1.2" - -webpack-dev-middleware@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" - integrity sha1-007++y7dp+HTtdvgcolRMhllFwk= - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - time-stamp "^2.0.0" - -webpack-hot-middleware@^2.19.1: - version "2.19.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.19.1.tgz#5db32c31c955c1ead114d37c7519ea554da0d405" - integrity sha512-2x60xmz7XBCNN/Drol+7i85E/5RrNrf+ivOPCgrxhP1F3q3WxpVjjvj8n8fOS1bS9oTRKEDfBYVAtkxqsG7LwQ== - dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" - querystring "^0.2.0" - strip-ansi "^3.0.0" - webpack-sources@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" @@ -6793,63 +5050,23 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" -webpack@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.7.1.tgz#6046b5c415ff7df7a0dc54c5b6b86098e8b952da" - integrity sha512-8MR+gVfxsvtx4J1UlbRGkUJEpDQUBFmisRmpPO5cVLgF21R8UMChX39OOjDz63a+m/iswGoqATszdZB2VCsYuA== - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" - whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.9: +which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - integrity sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w== - dependencies: - string-width "^1.0.2" - widest-line@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" @@ -6857,16 +5074,6 @@ widest-line@^1.0.0: dependencies: string-width "^1.0.1" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -6990,13 +5197,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" @@ -7004,7 +5204,7 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" -yargs@8.0.2, yargs@^8.0.2: +yargs@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= @@ -7022,32 +5222,3 @@ yargs@8.0.2, yargs@^8.0.2: which-module "^2.0.0" y18n "^3.2.1" yargs-parser "^7.0.0" - -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" From 6690cc36c5fd6adc7ec3e04f3c1cffc25570591b Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Wed, 20 Mar 2019 10:10:51 -0700 Subject: [PATCH 07/13] Fix failing tests --- server/src/modes/languageModes.ts | 2 +- server/src/services/dependencyService.ts | 2 +- test/lsp/diagnostics/basic.test.ts | 5 +---- test/lsp/diagnostics/helper.ts | 11 +++++++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server/src/modes/languageModes.ts b/server/src/modes/languageModes.ts index e0927a77aa..6c1044f874 100644 --- a/server/src/modes/languageModes.ts +++ b/server/src/modes/languageModes.ts @@ -77,7 +77,7 @@ export class LanguageModes { } async init(workspacePath: string, services: VLSServices) { - const vueHtmlMode = getVueHTMLMode(this.documentRegions, workspacePath); + const vueHtmlMode = getVueHTMLMode(this.documentRegions, workspacePath, services.infoService); const jsMode = await getJavascriptMode( this.documentRegions, workspacePath, diff --git a/server/src/services/dependencyService.ts b/server/src/services/dependencyService.ts index 3ee643dc19..0041ca6cd3 100644 --- a/server/src/services/dependencyService.ts +++ b/server/src/services/dependencyService.ts @@ -57,7 +57,7 @@ export class DependencyService { async init(workspacePath: string) { const workspaceTSPath = path.resolve(workspacePath, 'node_modules/typescript'); const tsModule = await import(workspaceTSPath); - console.log(`Loading TypeScript ${tsModule.version}`); + console.log(`Using workspace version of TypeScript. Loading TypeScript ${tsModule.version}.`); this.dependencies.typescript = { name: 'typecript', diff --git a/test/lsp/diagnostics/basic.test.ts b/test/lsp/diagnostics/basic.test.ts index f775b12868..c1acc38def 100644 --- a/test/lsp/diagnostics/basic.test.ts +++ b/test/lsp/diagnostics/basic.test.ts @@ -42,10 +42,7 @@ describe('Should find common diagnostics for all regions', () => { { range: range(17, 2, 21, 3), severity: vscode.DiagnosticSeverity.Error, - // tslint:disable - message: - "Argument of type '{ components: { Ite: any; }; data(this: CombinedVueInstance, DefaultMethods, DefaultComputed, PropsDefinition, DefaultMethods, DefaultComputed, PropsDefinition { return isEqualDiagnostic(d, ed); - }) + }), + `Cannot find matching diagnostics for ${ed.message}\n${JSON.stringify(ed)}\n` ); }); function isEqualDiagnostic(d1: vscode.Diagnostic, d2: vscode.Diagnostic) { const sourceIsEqual = d1.source ? d1.source === d2.source : true; - return d1.severity === d2.severity && d1.message === d2.message && d1.range.isEqual(d2.range) && sourceIsEqual; + return ( + d1.severity === d2.severity && + // Only check beginning equality as TS's long messages are ever-changing + d1.message.slice(0, 40) === d2.message.slice(0, 40) && + d1.range.isEqual(d2.range) && + sourceIsEqual + ); } } From 4562c759de4ade816af8114176c90cfc98a7d2e0 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Wed, 20 Mar 2019 10:24:52 -0700 Subject: [PATCH 08/13] Add TS 2.8 test --- test/lsp-ts-28/completion/helper.ts | 62 + test/lsp-ts-28/completion/script.test.ts | 31 + test/lsp-ts-28/completion/style.test.ts | 35 + test/lsp-ts-28/completion/template.test.ts | 50 + test/lsp-ts-28/definition/basic.test.ts | 46 + test/lsp-ts-28/diagnostics/basic.test.ts | 70 + test/lsp-ts-28/diagnostics/eslint.test.ts | 39 + test/lsp-ts-28/diagnostics/helper.ts | 35 + .../lsp-ts-28/documentHighlight/basic.test.ts | 57 + test/lsp-ts-28/documentLink/basic.test.ts | 35 + test/lsp-ts-28/documentSymbol/basic.test.ts | 115 + test/lsp-ts-28/fixture/.vscode/settings.json | 3 + test/lsp-ts-28/fixture/LICENSE | 21 + test/lsp-ts-28/fixture/README.md | 28 + test/lsp-ts-28/fixture/build/config.js | 10 + test/lsp-ts-28/fixture/build/index.html | 10 + test/lsp-ts-28/fixture/build/log-plugin.js | 15 + test/lsp-ts-28/fixture/build/server.js | 50 + test/lsp-ts-28/fixture/build/utils.js | 64 + test/lsp-ts-28/fixture/build/webpack.base.js | 82 + test/lsp-ts-28/fixture/build/webpack.dev.js | 33 + test/lsp-ts-28/fixture/build/webpack.prod.js | 94 + test/lsp-ts-28/fixture/client/app.js | 15 + .../client/completion/script/Basic.vue | 26 + .../client/completion/script/Framework.vue | 4 + .../fixture/client/completion/script/Item.vue | 13 + .../fixture/client/completion/style/Basic.vue | 34 + .../client/completion/template/Basic.vue | 19 + .../client/completion/template/Framework.vue | 4 + .../client/completion/template/Item.vue | 13 + .../client/completion/template/Quasar.vue | 4 + .../fixture/client/components/App.vue | 30 + .../fixture/client/components/Counter.vue | 55 + .../fixture/client/components/Item.vue | 13 + .../fixture/client/definition/Basic.Item.vue | 13 + .../fixture/client/definition/Basic.vue | 55 + .../fixture/client/diagnostics/Basic.vue | 35 + .../fixture/client/diagnostics/ESLint.vue | 50 + .../client/documentHighlight/Basic.Item.vue | 13 + .../client/documentHighlight/Basic.vue | 56 + .../fixture/client/documentLink/Basic.vue | 6 + .../fixture/client/documentSymbol/Basic.vue | 21 + .../client/formatting/Basic.Expected.vue | 15 + .../fixture/client/formatting/Basic.vue | 25 + .../formatting/VueHNUserView.Expected.vue | 25 + .../client/formatting/VueHNUserView.vue | 25 + test/lsp-ts-28/fixture/client/hover/Basic.vue | 56 + test/lsp-ts-28/fixture/client/index.js | 9 + .../fixture/client/promise-polyfill.js | 3 + test/lsp-ts-28/fixture/client/pwa.js | 15 + .../fixture/client/references/Basic.Item.vue | 13 + .../fixture/client/references/Basic.vue | 56 + test/lsp-ts-28/fixture/client/router/index.js | 15 + test/lsp-ts-28/fixture/client/store/index.js | 33 + .../client/templateCompletion/Basic.vue | 47 + .../client/templateCompletion/Parent.vue | 51 + .../fixture/client/views/Home.expected.vue | 18 + test/lsp-ts-28/fixture/client/views/Home.vue | 25 + test/lsp-ts-28/fixture/package.json | 81 + test/lsp-ts-28/fixture/static/favicon.ico | Bin 0 -> 27824 bytes test/lsp-ts-28/fixture/tsconfig.json | 16 + test/lsp-ts-28/fixture/yarn.lock | 5224 +++++++++++++++++ test/lsp-ts-28/formatting/basic.test.ts | 44 + test/lsp-ts-28/helper.ts | 47 + test/lsp-ts-28/hover/basic.test.ts | 62 + test/lsp-ts-28/index.ts | 9 + test/lsp-ts-28/references/basic.test.ts | 64 + .../templateCompletion/basic.test.ts | 114 + test/lsp-ts-28/util.ts | 25 + 69 files changed, 7581 insertions(+) create mode 100644 test/lsp-ts-28/completion/helper.ts create mode 100644 test/lsp-ts-28/completion/script.test.ts create mode 100644 test/lsp-ts-28/completion/style.test.ts create mode 100644 test/lsp-ts-28/completion/template.test.ts create mode 100644 test/lsp-ts-28/definition/basic.test.ts create mode 100644 test/lsp-ts-28/diagnostics/basic.test.ts create mode 100644 test/lsp-ts-28/diagnostics/eslint.test.ts create mode 100644 test/lsp-ts-28/diagnostics/helper.ts create mode 100644 test/lsp-ts-28/documentHighlight/basic.test.ts create mode 100644 test/lsp-ts-28/documentLink/basic.test.ts create mode 100644 test/lsp-ts-28/documentSymbol/basic.test.ts create mode 100644 test/lsp-ts-28/fixture/.vscode/settings.json create mode 100644 test/lsp-ts-28/fixture/LICENSE create mode 100644 test/lsp-ts-28/fixture/README.md create mode 100644 test/lsp-ts-28/fixture/build/config.js create mode 100644 test/lsp-ts-28/fixture/build/index.html create mode 100644 test/lsp-ts-28/fixture/build/log-plugin.js create mode 100644 test/lsp-ts-28/fixture/build/server.js create mode 100644 test/lsp-ts-28/fixture/build/utils.js create mode 100644 test/lsp-ts-28/fixture/build/webpack.base.js create mode 100644 test/lsp-ts-28/fixture/build/webpack.dev.js create mode 100644 test/lsp-ts-28/fixture/build/webpack.prod.js create mode 100644 test/lsp-ts-28/fixture/client/app.js create mode 100644 test/lsp-ts-28/fixture/client/completion/script/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/script/Framework.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/script/Item.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/style/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/template/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/template/Framework.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/template/Item.vue create mode 100644 test/lsp-ts-28/fixture/client/completion/template/Quasar.vue create mode 100644 test/lsp-ts-28/fixture/client/components/App.vue create mode 100644 test/lsp-ts-28/fixture/client/components/Counter.vue create mode 100644 test/lsp-ts-28/fixture/client/components/Item.vue create mode 100644 test/lsp-ts-28/fixture/client/definition/Basic.Item.vue create mode 100644 test/lsp-ts-28/fixture/client/definition/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/diagnostics/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/diagnostics/ESLint.vue create mode 100644 test/lsp-ts-28/fixture/client/documentHighlight/Basic.Item.vue create mode 100644 test/lsp-ts-28/fixture/client/documentHighlight/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/documentLink/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/documentSymbol/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/formatting/Basic.Expected.vue create mode 100644 test/lsp-ts-28/fixture/client/formatting/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/formatting/VueHNUserView.Expected.vue create mode 100644 test/lsp-ts-28/fixture/client/formatting/VueHNUserView.vue create mode 100644 test/lsp-ts-28/fixture/client/hover/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/index.js create mode 100644 test/lsp-ts-28/fixture/client/promise-polyfill.js create mode 100644 test/lsp-ts-28/fixture/client/pwa.js create mode 100644 test/lsp-ts-28/fixture/client/references/Basic.Item.vue create mode 100644 test/lsp-ts-28/fixture/client/references/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/router/index.js create mode 100644 test/lsp-ts-28/fixture/client/store/index.js create mode 100644 test/lsp-ts-28/fixture/client/templateCompletion/Basic.vue create mode 100644 test/lsp-ts-28/fixture/client/templateCompletion/Parent.vue create mode 100644 test/lsp-ts-28/fixture/client/views/Home.expected.vue create mode 100644 test/lsp-ts-28/fixture/client/views/Home.vue create mode 100644 test/lsp-ts-28/fixture/package.json create mode 100644 test/lsp-ts-28/fixture/static/favicon.ico create mode 100644 test/lsp-ts-28/fixture/tsconfig.json create mode 100644 test/lsp-ts-28/fixture/yarn.lock create mode 100644 test/lsp-ts-28/formatting/basic.test.ts create mode 100644 test/lsp-ts-28/helper.ts create mode 100644 test/lsp-ts-28/hover/basic.test.ts create mode 100644 test/lsp-ts-28/index.ts create mode 100644 test/lsp-ts-28/references/basic.test.ts create mode 100644 test/lsp-ts-28/templateCompletion/basic.test.ts create mode 100644 test/lsp-ts-28/util.ts diff --git a/test/lsp-ts-28/completion/helper.ts b/test/lsp-ts-28/completion/helper.ts new file mode 100644 index 0000000000..c76b7e3ec6 --- /dev/null +++ b/test/lsp-ts-28/completion/helper.ts @@ -0,0 +1,62 @@ +import * as vscode from 'vscode'; +import * as assert from 'assert'; +import { showFile } from '../helper'; +import { CompletionItem, MarkupContent } from 'vscode-languageclient'; + +export interface ExpectedCompletionItem extends CompletionItem { + documentationStart?: string; +} + +export async function testCompletion( + docUri: vscode.Uri, + position: vscode.Position, + expectedItems: (string | ExpectedCompletionItem)[] +) { + await showFile(docUri); + + const result = (await vscode.commands.executeCommand( + 'vscode.executeCompletionItemProvider', + docUri, + position + )) as vscode.CompletionList; + + expectedItems.forEach(ei => { + if (typeof ei === 'string') { + assert.ok( + result.items.some(i => { + return i.label === ei; + }) + ); + } else { + const match = result.items.find(i => i.label === ei.label); + if (!match) { + assert.fail(`Can't find matching item for ${JSON.stringify(ei, null, 2)}`); + return; + } + + assert.ok(match.label, ei.label); + assert.ok(match.kind, ei.kind as any); + + if (ei.documentation) { + if (typeof match.documentation === 'string') { + assert.equal(match.documentation, ei.documentation); + } else { + if (ei.documentation && (ei.documentation as MarkupContent).value && match.documentation) { + assert.equal( + (match.documentation as vscode.MarkdownString).value, + (ei.documentation as MarkupContent).value + ); + } + } + } + + if (ei.documentationStart) { + if (typeof match.documentation === 'string') { + assert.ok(match.documentation.startsWith(ei.documentationStart)); + } else { + assert.ok((match.documentation as vscode.MarkdownString).value.startsWith(ei.documentationStart)); + } + } + } + }); +} diff --git a/test/lsp-ts-28/completion/script.test.ts b/test/lsp-ts-28/completion/script.test.ts new file mode 100644 index 0000000000..1afa1b3ff6 --- /dev/null +++ b/test/lsp-ts-28/completion/script.test.ts @@ -0,0 +1,31 @@ +import { activateLS, showFile, sleep, FILE_LOAD_SLEEP_TIME } from '../helper'; +import { position, getDocUri } from '../util'; +import { testCompletion } from './helper'; + +describe('Should autocomplete for + + diff --git a/test/lsp-ts-28/fixture/client/completion/script/Framework.vue b/test/lsp-ts-28/fixture/client/completion/script/Framework.vue new file mode 100644 index 0000000000..06ef8dad6c --- /dev/null +++ b/test/lsp-ts-28/fixture/client/completion/script/Framework.vue @@ -0,0 +1,4 @@ +